リモート コントロール プロトコルを使用すると、プロトコル入力データを公開されたプロパティにバインドして、外部デバイスを介してそれらを制御できます。このページでは、DMX、MIDI、および OSC プラグイン用のリモート コントロール プラグインの使用方法と、独自のプロトコル プラグインを作成する方法について説明します。
前提条件
-
Remote Control API (リモート コントロール API) プラグインを有効にします。
-
使用しているプロトコルに固有のリモート コントロール プラグインを有効にします。
-
DMX の場合、 Remote Control Protocol DMX プラグインを有効にします。
-
MIDI の場合、 Remote Control Protocol MIDI プラグインを有効にします。
-
OSC の場合、 Remote Control Protocol OSC プラグインを有効にします。
-
-
エディタを再起動します。
これらのプラグインを有効にしたら、 Remote Control Preset Asset (リモート コントロール プリセット アセット) を作成し、プロパティをプリセットに公開します。詳細については、「リモート コントロール プリセット入門」を参照してください。
リモート コントロールでプロトコルをマッピングする
次の手順に従って、外部デバイスからプロパティを制御できるようにします。
- [Remote Control Panel (リモート コントロール パネル)] で、プロトコルにマップするプロパティを選択します。
g)(convert:false)
-
ドロップダウンリストから [Protocol (プロトコル)] を選択し、その横にある [+ (プラス)] ボタンを押して新しいマッピングを追加します。
-
[Mapping (マッピング)] セクションの設定を変更して、外部デバイスに接続します。ここにあるフィールドの詳細については、「リモート コントロール パネルリファレンス」を参照してください。
マッピング パネルの右上にある [自動バインド] ボタンを使用すると、入力をすばやく自動バインドできます。詳細については、「リモート コントロール パネル リファレンス」を参照してください。
-
[Ranges (範囲)] セクションで、右側の [+ (プラス)] ボタンを選択して範囲ステップを追加します。範囲ポイントに異なる値を入力して、外部デバイスから制御するときにプロパティがそれらの間を補間するように設定します。
範囲の値の横にある [左向きの矢印] を押すと、ワールドの現在の値をキャプチャできます。
-
外部デバイスを使用し、オブジェクトの [Details (詳細)] パネルまたは [Viewport (ビューポート)] で変更を確認して、マッピングと入力が正しく設定されていることを確認します。
新しいプロトコルを追加する
独自のプロトコル サポートをリモート コントロールに追加するには、IRemoteControlProtocol
と FRemoteControlProtocolEntity
を実装する必要があります。
次の手順に従って、リモート コントロール プロトコルの独自の実装を追加します。
-
新しい空のプラグインを作成します。手順については、「新しいプラグインを作成する」を参照してください。
推奨されている命名規則は RemoteControlProtocol{Name} です。 {Name} がプロトコルの名前です。たとえば、MIDI の実装の場合
RemoteControlProtocolMIDI
となります。 -
作成された「*.uplugin」ファイル内で、RemoteControl プラグインに次の依存関係を追加します。
"Plugins": [ { "Name":"RemoteControl", "Enabled": true } ]
-
プロジェクトの Visual Studio のソリューション エクスプローラで、「
.Build.cs
」ファイルで定義されているモジュールを見つけます。PrivateDependencyModuleNames
の範囲にRemoteControl
とRemoteControlProtocol
を追加します。 -
以下のオーバーライドを使用して、基本実装
IRemoteControlProtocol
を実装する、または基本実装FRemoteControlProtocol
から継承する新しいクラスを作成します。-
GetProtocolScriptStruct():Protocol Entity 実装のクラスを提供します。MIDI の例では、
FRemoteControlProtocolMIDIEntity::StaticStruct()
になります。 -
Bind(Entity):これは通常、入力を受け取るたびにイテレーションを行うローカル コレクションにエンティティを登録するために使用されます。提供されるエンティティは、以下で説明する実装に固有のものになります。
-
Unbind(Entity):バインドと同様に、これは通常、提供されたエンティティをコレクションから削除するために使用されます。
-
UnbindAll():コレクションからすべてのエンティティを削除します。
-
-
次のオーバーライドを使用して、FRemoteControlProtocolEntity 構造体から継承し、特定のエンティティ (公開されたプロパティ) のプロトコル バインディングを表す新しい構造体を作成します。
-
GetRangePropertyName():たとえば、デバイスからの入力がフロートの場合、
FFloatProperty
です。 -
RangeInputTemplate と呼ばれる一時的で非可視かつ編集不可能な UPROPERTY()。最小値や最大値などの追加のコンストレイントを指定できます。適切なエディタ ウィジェットを作成するために使用されます。オプションで、プロパティを別の場所に保存し、
IRemoteControlProtocol::GetRangeTemplateType()
をオーバーライドして指定できます。
-
-
IRemoteControlProtocol
の実装を以下に登録します。IRemoteControlProtocolModule::Get().AddProtocol({Name}, MakeShared<{Implementation}>());
プロジェクト設定の作成および登録方法など、その他の例については、UE ソースコードの DMX、MIDI、および OSC リモート コントロール プロトコル プラグインの実装を参照してください。