[Unity] UXMLテンプレートでObjectFieldを使うときのタイプ指定方法
使用方法
<uie:ObjectField type="UnityEngine.Texture2D, UnityEngine.CoreModule" />
タイプ指定には System.Type.AssemblyQualifiedName
の一部を使用してください。System.Type.AssemblyQualifiedName
の結果はUnityEngine.Texture2D, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
のように、アセンブリのバージョン番号、カルチャ、トークンが出てきますが、これらは不要です。
説明
ObjectField
はUIElementsのコントロールフィールドの一種です。
テクスチャ、マテリアル、シェーダー、コンポーネントなど、UnityEngine.Object のものを入れるためのフィールドになります。
ObjectField
に入るものは UnityEngine.Object の派生であれば何でもよいため、UXMLテンプレートで何も宣言していない場合は <no type> と表示されます。
<uie:ObjectField label="Texture" />で、no type と表示されているObjectField
型を指定する場合は type
属性に値を入れる必要があります。しかし type
属性に対して<uie:ObjectField label="Texture" type="UnityEngine.Texture2D" />
と入力しても変化はありません。
Consoleウィンドウには、TypeLoadException: Could not load type 'UnityEngine.Texture2D' from assembly 'UnityEngine.UIElementsModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. というエラー分が表示されます。
UI ToolKit上では Type 項目に UnityEngine.Texture2D
と入れると、アセンブリ名は勝手に入ってきます。
UI ToolKit上のObjectField
.uxml ファイル上では以下の形になります。
<uie:ObjectField label="Texture" type="UnityEngine.Texture2D, UnityEngine.CoreModule" />
環境
- Unity: 2021.3.4f1
- OS: Microsoft Windows 10 Home 10.0.19044
- CPU: Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
- GPU: NVIDIA GeForce GTX 1060 3GB
- RAM: 16.0 GB
- システムの種類: 64 ビット オペレーティング システム、x64 ベース プロセッサ
Discussion