docs.unity3d.com
    目次を表示する/隠す

    Draft: このページのコンテンツは完成していますが、まだレビューが行われていません。

    Property Binder

    Property Binder は Visual Effect コンポーネント を使ってゲームオブジェクトに取り込める C# 動作です。これらの動作を使って、シーンまたはゲームプレイ値と Visual Effect インスタンスの 開放されたプロパティ を接続することができます。

    例 : スフィアバインダーは、スフィアの開放されたプロパティの位置および半径を、シーンにリンクされたスフィアコライダーの値で自動設定できます。

    Property Binder の追加

    Property Binder は VFX Property Binder と呼ばれる一般的な MonoBehaviour を通じて追加することができます。この動作では、1 つまたは複数の Property Bindings が使えるようになります。各プロパティバインディングは、開放されたプロパティ とランタイム時またはシーンの要素との間の関係を構築します。

    あるいは、Add Component Menu からプロパティバインダーを直接追加することもできます。VFX Property Binder コンポーネントがない場合は、作成されます。

    ビルトイン Property Binder

    Visual Effect Graph パッケージには、以下のビルトインプロパティバインダーが含まれています。

    • オーディオ
      • Audio Spectrum to AttributeMap : Audio Spectrum を属性マップにベイクし、Texture2D および単位 Count プロパティに紐づけます。
    • ゲームオブジェクト:
      • Enabled : ゲームオブジェクトの有効化フラッグを bool プロパティに紐づけます。
    • ポイントキャッシュ
      • Hierarchy to AttributeMap : 変換ヒエラルキーのターゲット位置を Texture2Ds AttributeMaps と単位 Count に紐づけます。
      • Multiple Position Binder: 変換リストの位置を Texture2D AttributeMap と単位 Count に紐づけます。
    • 入力
      • Axis : 軸入力の float 値を float プロパティに紐づけます。
      • Button : ボタンを押す状態のブーリアン値を bool プロパティに紐づけます。
      • Key : キーボードキーを押す状態のブーリアン値を bool プロパティに紐づけます。
      • Mouse : マウスの一般的値 (位置、速度、クリック) を、開放されたプロパティに紐づけます。
      • Touch : タッチ入力の入力値 (位置、速度) を、開放されたプロパティに紐づけます。
    • ユーティリティ
      • Light : Light プロパティ (色、輝度、半径) を、開放されたプロパティに紐づけます。
      • Plane : Plane プロパティ (位置、法線) を、開放されたプロパティに紐づけます。
      • Terrain : Terrain プロパティ (サイズ、ハイトマップ) を、開放されたプロパティに紐づけます。
    • 変換
      • Position: ゲームオブジェクト位置を、ベクトルの開放されたプロパティに紐づけます。
      • Position (previous): 前のゲームオブジェクト位置を、ベクトルの開放されたプロパティに紐づけます。
      • Transform: ゲームオブジェクト変換を、開放されたプロパティの変換に紐づけます。
      • Velocity: ゲームオブジェクト速度を、ベクトルの開放されたプロパティに紐づけます。
    • 物理
      • Raycast: 物理レイキャストを実行し、その結果値 (hasHit、位置、法線) を、開放されたプロパティに紐づけます。
    • コライダー
      • Sphere: スフィアコライダーのプロパティをスフィアの開放されたプロパティに紐づけます。
    • UI
      • Dropdown: ドロップダウンのインデックスを、開放されたプロパティに紐づけます。
      • Slider: float スライダーの値を、開放されたプロパティに紐づけます。
      • Toggle: トグルのブーリアン値を bool の開放されたプロパティに紐づけます。

    プロパティバインダーの作成

    プロパティバインダーは、新しい C# クラスをプロジェクトに追加し、UnityEngine.VFX.Utility.VFXBinderBase クラスを拡張することで作成できます。

    VFXBinderBase クラスを拡張するには、以下のメソッドを実装する必要があります。

    • bool IsValid(VisualEffect component) : バインディングができることを検証するメソッドです。VFX Property Binder コンポーネントは、メソッドが true を返すときのみに UpdateBinding() を実行します。バインディングを決定するためには、このメソッドのすべてのチェックを実装しなければなりません。
    • void UpdateBinding(VisualEffect component) : IsValid が true を返すとバインディングを適用するメソッドです。

    コード例

    以下の例では、float プロパティ値を、現在のゲームオブジェクトと別の (ターゲット) ゲームオブジェクト間の距離に設定する、簡単なプロパティバインダーが示されています。

    using UnityEngine;
    using UnityEngine.VFX;
    using UnityEngine.VFX.Utility;
    
    // VFXBinder Attribute がこのクラスをプロパティバインディングの追加メニューに投入します。
    [VFXBinder("Transform/Distance")]
    // クラスは VFXBinderBase を拡張する必要があります
    public class DistanceBinder : VFXBinderBase
    {
        // VFXPropertyBinding 属性は特定のタイプの
        //  VisualEffect プロパティを追加する特殊プロパティドローワーを
        // 使えるようにします。
        [VFXPropertyBinding("System.Single")]
        public ExposedProperty distanceProperty;
    
        public Transform target;
    
        // IsValid メソッドはバインディングが達成できるなら、チェックを実行し返す
        // 必要があります。
        public override bool IsValid(VisualEffect component)
        {
            return target != null && component.HasFloat(distanceProperty);
        }
    
        // UpdateBinding メソッドは有効であると推定しバインディングを
        // 実行する場所です。このメソッドはIsValid が true を返した場合のみ
        // 呼び出されます。
        public override void UpdateBinding(VisualEffect component)
        {
            component.SetFloat(distanceProperty, Vector3.Distance(transform.position, target.position));
        }
    }```
    
    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)