📄

[Unity] UXMLテンプレートでObjectFieldを使うときのタイプ指定方法

2022/07/01に公開

使用方法

*.uxml
<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> と表示されます。
no type と表示されているObjectField<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上のObjectFieldUI ToolKit上のObjectField
.uxml ファイル上では以下の形になります。

*.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 ベース プロセッサ

参考

GitHubで編集を提案

Discussion

ログインするとコメントできます