デバイス プロパティ は入力デバイスの物理プロパティを表し、ライト カラーの表示やハプティック トリガーの抵抗などのプロパティが含まれます。デバイス プロパティは次の方法で有効にできます。
入力デバイス サブシステム を使用する。
既存の フォース フィードバック アセット を [Device Properties (デバイス プロパティ)] カテゴリに追加する。
Burst Gameplay Cue Notify (バースト ゲームプレイ キュー通知) ブループリント を使用する。
デバイスのリストはコンフィグ ファイルによってエントリされるため、サードパーティ ベンダーはそれぞれ独自のデバイスを任意のオプションとして追加できます。Unreal ではデフォルトでコンソールをサポートしています。これらのコンフィグ設定をエディタで確認するには、[Project Settings (プロジェクト設定)] > [Input (入力)] > [Platform Settings (プラットフォーム設定)] > (対象のプラットフォーム) > [Hardware (ハードウェア)] に移動します。
例として、PlayStation5 では DualSense または DualShock4 を任意のオプションとして設定できます。
使用する武器のタイプに応じて入力トリガーにハプティックの抵抗を加えたり、特殊なエフェクトを出すために時間の経過とともにライト カラーを変化させたりと、さまざまなゲームプレイを演出することができます。
入力デバイス サブシステムはブループリントまたは C++ で使用できます。このシステムには次の機能が含まれています。
「最近使用したハードウェア デバイス」を取得するなど、コントローラー インプット機能を作成する機能。
OnInputHardwareDeviceChanged
デリゲートへのリスナー。ユーザーがキーボードからコントローラーなどへと入力デバイスを変更した場合に向けて、Common UI プラグインを使用することなく、それに対応するユーザー インターフェースを PC またはコンソール上で作成できます。
デバイス プロパティの存続期間
デバイス プロパティには、公開された仮想関数を使ってカスタマイズできるシンプルな存続期間が含まれます。それぞれのデバイス プロパティには、フォース フィードバック エフェクトの持続期間属性と同じように機能する 期間 が設定されます。プロパティは 有効 になって 評価 されて 適用 され、その後、その期間が完了した際にリセットされます。
関数 |
説明 |
---|---|
|
|
|
プロパティの内部構成をプラットフォーム コードにパスする方法を変更するには、この関数をオーバーライドします。 |
|
デバイス プロパティの持続期間が完了した際に呼び出されます。この関数は、ライト カラーを最初に適用した際の設定にリセットして戻すなど、デバイス プロパティに適用したステートの変更をリセットするために使用できます。 |
入力デバイスの使用方法
使用する入力デバイス プロパティを決定したら、入力デバイス サブシステム を使ってそのプロパティを 有効 にできます。デバイス プロパティを有効にすると、入力デバイスのプロパティ ハンドル が提供されます。このハンドルを使用して、プロパティの現在のステートを入力デバイス サブシステムから取得したり、必要に応じて削除またはリセットしたりすることができます。
プロパティを有効にする際は、FActivateDevicePropertyParams
構造体で設定可能ないくつかのオプションがあります。
構造体のプロパティ |
説明 |
---|---|
User Id |
設定対象の入力デバイスを所有するプレイヤーのプラットフォーム ユーザー ID です。 |
Device Id |
このプロパティを有効にする入力デバイスの ID です。これが明示的に設定されていない場合は、当該のユーザー ID のデフォルト デバイスが使用されます。 |
Looping |
True の場合は、存続期間が終了したときにこのプロパティがループします。 |
Ignore Time Dilation |
True の場合は、このプロパティの評価時にすべての時間拡張が無視されます。 |
Play while paused |
このプロパティをゲームの一時停止中にも適用するかどうかを指定します。 |
C++
入力デバイス プロパティは、C++ で入力デバイス サブシステムを使って手動で有効にできます。
ManualExample.h
| // ヘッダ ファイル内...
// インスタンス化されたデバイス プロパティ。プロパティを [Details (詳細)] パネルで編集したい場合は、これを使用します
UPROPERTY(EditDefaultsOnly, Instanced, BlueprintReadOnly, Category = "Input Devices")
TObjectPtr<UInputDeviceProperty> DevicePropertyInstance;
// もしくは、[Details (詳細)] パネルで変更したいプロパティがない場合は、サブクラスを使用できます。
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Input Devices")
TSubclassOf<UInputDeviceProperty> DevicePropertyClass; |
ManualExample.cpp
| // cpp ファイル内...
#include "GameFramework/InputDeviceSubsystem.h"
#include "GameFramework/InputDeviceProperties.h"
**void** ApplyProperties()
{
**const** FPlatformUserId UserId = GetOwningUserId();
**if** (UserId.IsValid())
{
**if** (UInputDeviceSubsystem* InputDeviceSubsystem = UInputDeviceSubsystem::Get())
{
FActivateDevicePropertyParams Params = {};
Params.UserId = UserId;
// デバイス プロパティは、デフォルトでプラットフォーム ユーザーのプライマリ入力デバイスで再生されます。
// これをオーバーライドして特定のデバイスを指定したい場合は、DeviceId パラメータを設定できます。
// Params.DeviceId = <特定のデバイス ID>;
// 特定のインスタンス化されたプロパティを使用して、それを変更します。使用する際は注意してください
FInputDevicePropertyHandle Handle = InputDeviceSubsystem->ActivateDeviceProperty(DeviceProp, Params);
// このデバイス プロパティ クラスの新しいインスタンスをスポーンして、それを使用します
FInputDevicePropertyHandle Handle = InputDeviceSubsystem->ActivateDevicePropertyOfClass(DeviceProp, Params);
}
}
}
|
武器として適用されたデバイス プロパティを装備/装備解除する例については、Lyra ゲーム サンプル の「LyraWeaponInstance.cpp」を参照してください。
ブループリント
デバイス プロパティを使って独自のブループリントを作成することで、カスタム仕様のゲームプレイ エクスペリエンスを作成できます。たとえば、Lyra ゲーム サンプル の B_TeamColor_DeviceProperty
変数を使用して、コントローラーのライト カラーをあなたのチーム カラー (赤色や青色) と一致するように設定したりできます。
ブループリント スクリプトを使用したデバイス プロパティ システムの Lyra ゲーム サンプルの例。
ブループリント コードでは、悪影響を及ぼすオブジェクト参照を避けるためにサブクラス タイプのみを使用できます。これは、こういったユースケースでは、特定のデバイス プロパティ ブループリントを作成しなければならないことを意味します。
入力デバイス プロパティを手動で削除したい場合は、サブシステム上で RemoveDevicePropertyHandles()
関数を呼び出します。
フォース フィードバック アセット
デバイス プロパティは、プレイヤーに適用する既存の フォース フィードバック アセット に追加することで有効にできます。これは [Details (詳細)] パネルの [Device Properties (デバイス プロパティ)] カテゴリで設定できます。
バースト ゲームプレイ エフェクト キュー
Gameplay Cue Notify Burst (ゲームプレイ キュー通知バースト) の適用時に有効にしたいと思っていた入力デバイス プロパティを指定するには、[Details (詳細)] パネルの [GCN Effects (GCN エフェクト)] > [Burst Effects (バースト エフェクト)] > [Burst Device Property Effect (バースト デバイス プロパティ エフェクト)] > [Device Properties (デバイス プロパティ)] カテゴリに行きます。
デバッグ
現在有効なデバイス プロパティに関する情報を画面上に表示するには、チルダ キー (~) を押してコンソールを開き、次のコンソール コマンドを使用します。
| showdebug DeviceProperty |
コンソールに「showdebug deviceproperty」コマンドを入力します。
このコマンドにより、現在有効なデバイス プロパティに関するデバッグ情報がビューポートに表示されます。表示されるのは、デバイスが有効であった際に使用されたフラグ、適用先の入力デバイス ID、有効になっている期間の情報です。
ハードウェア プロパティを新規作成する
Engine
モジュールの UInputDeviceProperty
では、ApplicationCore
モジュールで宣言された下位レベルの FInputDeviceProperty
構造体の抽象化が提供されます。各プロパティの実装が処理されるプラットフォーム コードに FInputDeviceProperty
がパスされます。
新しい開発キットがリリースされた際には、対象となるハードウェアの IInputDevice
または IInputInterface
にある SetDeviceProperty()
関数をオーバーライドすることで、さまざまな入力デバイス プロパティを使ってその開発キットのサポートを追加できます。
FInputDeviceProperty
の新しいサブクラスを追加する場合は、それがデバイス特有ではないことと、あらゆる NDA (機密保持契約) に準拠しつつ、エンジン内のあらゆる場所で参照できることを確認してください。プロジェクト特有のハードウェア構成要素を使用している場合は、プロジェクト コード内でそれを宣言します。