【Unity】UnityのAttributesを調べてみた

個人的に一度調べてみたかった属性についてブログに書いていきたいと思います。いろいろな制約や拡張ができるので、上手く組み合わせて使えば作業速度や効率が良くなると思います。

Attributes - 属性

クラスに成約をもたせることができます。

RequireComponent

指定したクラスが必要になります。 例えばTextクラスが必ず必要な場合には次のような記述を行います。 [c] [RequireComponent(typeof(UnityEngine.UI.Text))] public class Hoge : MonoBehaviour {

} [/c]

もし必要なクラスがない場合にはダイアログが表示されます。 2019_02_14_memo

SerializeField

Inspector上のprivateのフィールドを設定できます。(これをシリアライズ化とも呼ぶらしい) Publicでも同じようなことはできますが、他のクラスから参照ができてしまうので、限定して利用したい場合に使います。 [c] [SerializeField] private string hogeText; [/c]

2019_02_14_memo2

AddComponentMenu

「AddComponentMenu」メニューのComponent」に特定のクラスを指定する場合に利用します。 次のコードでは「Hoge、AddComponentMenu」に追加します。 [c] [AddComponentMenu("Hoge/AddComponentMenu")] public class Hoge : MonoBehaviour {

} [/c]

画面上では次のようになります。 2019_02_07_03

ColorUsage

アルファを設定できるかどうかを調整できます。 ColorUsage

[c] [ColorUsage(false)] [SerializeField] private Color _color; [/c]

アルファの項目が無くなっています。 2019_02_15_moem

ContextMenu

ContextMenuを設定すれば、Inspector上で右クリックを押すとメソッドを実行できるようになります。 [c] [ContextMenu("Test")] public void Test() { Debug.LogError("Test"); } [/c] 2019 02 15 memo2

ContextMenuItem

ContextMenuItemは指定したフィールドで右クリックをすると、引数で指定したメソッドを呼び出せます。 ContextMenuItem - Unity Documentation

[c] [ContextMenuItem("Test","Test")] [SerializeField] private Color _color; [/c] 2019 02 15 memo3

DisallowMultipleComponent

DisallowMultipleComponentは同一のコンポーネントをアタッチできなくします。 [c] [DisallowMultipleComponent] public class Hoge : MonoBehaviour { } [/c]

参考サイト

UnityのAttribute(属性)についてまとめてメモる。