サーチ…


構文

  • [AddComponentMenu(string menuName)]
  • [AddComponentMenu(string menuName、int order)]
  • [CanEditMultipleObjects]
  • [ContextMenuItem(文字列名、文字列関数)]
  • [ContextMenu(文字列名)]
  • [CustomEditor(タイプinspectedType)]
  • [CustomEditor(型検査された型、bool editorForChildClasses)]
  • [CustomPropertyDrawer(型の型)]
  • [CustomPropertyDrawer(型の型、bool useForChildren)]
  • [DisallowMultipleComponent]
  • [DrawGizmo(ギズモタイプギズモ)]
  • [DrawGizmo(GizmoTypeギズモ、タイプdrawnGizmoType)]
  • [ExecuteInEditMode]
  • [ヘッダー(文字列ヘッダー)]
  • [HideInInspector]
  • [InitializeOnLoad]
  • [InitializeOnLoadMethod]
  • [MenuItem(string itemName)]
  • [MenuItem(string itemName、bool isValidateFunction)]
  • [MenuItem(string itemName、bool isValidateFunction、int priority)]
  • [複数行(int行)]
  • [PreferenceItem(文字列名)]
  • [範囲(float min、float max)]
  • [RequireComponent(型の型)]
  • [RuntimeInitializeOnLoadMethod]
  • [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType loadType)]
  • [SerializeField]
  • [スペース(浮きの高さ)]
  • [TextArea(int minLines、int maxLines)]
  • [ツールチップ(文字列ツールチップ)]

備考

SerializeField

Unityのシリアライゼーションシステムを使用して、以下を実行することができます:

  • (シリアライズ可能型の)公共の非静的フィールドをシリアル化することができます
  • [SerializeField]属性でマークされた非公開の非静的フィールドをシリアル化できます
  • 静的フィールドをシリアル化できません
  • 静的プロパティをシリアル化できません

フィールドは、たとえSerializeField属性でマークされていても、Unityがシリアル化できるタイプである場合にのみ属性付けされます。

  • UnityEngine.Objectから継承したすべてのクラス(例:GameObject、Component、MonoBehaviour、Texture2D)
  • int、string、float、boolのようなすべての基本データ型
  • Vector2 / 3/4、Quaternion、Matrix4x4、Color、Rect、LayerMaskなどのビルトインタイプ
  • シリアライズ可能な型の配列
  • 直列化可能な型のリスト
  • 列挙型
  • 構造

共通のインスペクタ属性

[Header( "My variables" )]
public string MyString;

[HideInInspector]
public string MyHiddenString;

[Multiline( 5 )]
public string MyMultilineString;

[TextArea( 2, 8 )]
public string MyTextArea;

[Space( 15 )]
public int MyInt;

[Range( 2.5f, 12.5f )]
public float MyFloat;

[Tooltip( "This is a tip for MyDouble" )]
public double MyDouble;

[SerializeField]
private double myHiddenDouble;

結果

フィールドのラベルにカーソルを合わせると、次のようになります。

結果2


[Header( "My variables" )]
public string MyString;

ヘッダーは、属性付きフィールドの上にテキストを含む太字のラベルを配置します。これは、グループを他のラベルに対して目立たせるためにグループにラベルを付ける場合によく使用されます。

[HideInInspector]
public string MyHiddenString;

HideInInspectorは 、パブリックフィールドがインスペクタに表示されないようにします。これは、表示されないか変更可能でないコードの他の部分からフィールドにアクセスする場合に便利です。

[Multiline( 5 )]
public string MyMultilineString;

Multilineは、指定された行数のテキストボックスを作成します。この金額を超えると、ボックスが展開されず、テキストも折り返されません。

[TextArea( 2, 8 )]
public string MyTextArea;

TextAreaは、自動折り返しを含む複数行スタイルのテキストと、テキストが割り当てられた領域を超える場合はスクロールバーを許可します。

[Space( 15 )]
public int MyInt;

スペースは、以前のアイテムと現在のアイテムの間に余分なスペースを追加するようにインスペクタに強制します。これは、グループの区別と分離に役立ちます。

[Range( 2.5f, 12.5f )]
public float MyFloat;

Rangeは、最小値と最大値の間の数値を強制します。 minとmaxが浮動小数点数として指定されていても、この属性は整数と倍精度でも機能します。

[Tooltip( "This is a tip for MyDouble" )]
public double MyDouble;

ツールチップには、フィールドのラベルを上に置いたときに追加の説明が表示されます。

[SerializeField]
private double myHiddenDouble;

SerializeFieldはUnityにフィールドのシリアル化を強制します。プライベートフィールドに便利です。

コンポーネントの属性

[DisallowMultipleComponent]
[RequireComponent( typeof( Rigidbody ) )]
public class AttributesExample : MonoBehaviour 
{
    [...]
}

[DisallowMultipleComponent]

DisallowMultipleComponent属性は、ユーザーがこのコンポーネントの複数のインスタンスを1つのGameObjectに追加するのを防ぎます。

[RequireComponent( typeof( Rigidbody ) )]

RequireComponent属性を使用すると、このコンポーネントをGameObjectに追加するときの要件として別のコンポーネント(またはそれ以上)を指定できます。このコンポーネントをGameObjectに追加すると、必要なコンポーネントが自動的に追加されます(存在しない場合)。それらのコンポーネントは、必要なコンポーネントが削除されるまで削除できません。

実行時属性

[ExecuteInEditMode]
public class AttributesExample : MonoBehaviour 
{

    [RuntimeInitializeOnLoadMethod]
    private static void FooBar() 
    {
        [...]
    }

    [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )]
    private static void Foo() 
    {
        [...]
    }

    [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.AfterSceneLoad )]
    private static void Bar() 
    {
        [...]
    }

    void Update() 
    {
        if ( Application.isEditor )
        {
            [...]
        } 
        else
        {
            [...]
        }
    }
}

[ExecuteInEditMode]
public class AttributesExample : MonoBehaviour 

ExecuteInEditMode属性は、ゲームがプレイされていない間でも、このスクリプトのマジックメソッドをUnityに強制的に実行させます。

この機能は、再生モードのように常に呼び出されるわけではありません

  • 更新は、シーン内の何かが変更されたときにのみ呼び出されます。
  • OnGUIは、ゲームビューがイベントを受け取ると呼び出されます。
  • OnRenderObjectと他のレンダリングコールバック関数は、シーンビューまたはゲームビューのすべての再描画で呼び出されます。
[RuntimeInitializeOnLoadMethod]
private static void FooBar()

[RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )]
private static void Foo() 

[RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.AfterSceneLoad )]
private static void Bar() 

RuntimeInitializeOnLoadMethod属性を使用すると、ゲームがランタイムをロードしたときに、ユーザーからの操作なしでランタイムクラスメソッドを呼び出すことができます。

シーンロードの前または後にメソッドを呼び出すかどうかを指定できます(デフォルトはafterです)。この属性を使用するメソッドの実行順序は保証されていません。

メニュー属性

[AddComponentMenu( "Examples/Attribute Example" )]
public class AttributesExample : MonoBehaviour 
{
    [ContextMenuItem( "My Field Action", "MyFieldContextAction" )]
    public string MyString;

    private void MyFieldContextAction() 
    {
        [...]
    }

    [ContextMenu( "My Action" )]
    private void MyContextMenuAction() 
    {
        [...]
    }
}

[AddComponentMenu]属性の結果

結果1

[ContextMenuItem]属性の結果

結果2

[ContextMenu]属性の結果

結果3


[AddComponentMenu( "Examples/Attribute Example" )]
public class AttributesExample : MonoBehaviour 

AddComponentMenu属性を使用すると、コンポーネント - >スクリプトメニューではなく、コンポーネントメニューの任意の場所にコンポーネントを配置できます。

[ContextMenuItem( "My Field Action", "MyFieldContextAction" )]
public string MyString;

private void MyFieldContextAction() 
{
    [...]
}

ContextMenuItem属性を使用すると、フィールドのコンテキストメニューに追加できる関数を定義できます。これらの機能は選択時に実行されます。

[ContextMenu( "My Action" )]
private void MyContextMenuAction() 
{
    [...]
}

ContextMenu属性を使用すると、コンポーネントのコンテキストメニューに追加できる関数を定義できます。

エディタの属性

[InitializeOnLoad]
public class AttributesExample : MonoBehaviour
{
    
    static AttributesExample() 
    {
        [...]
    }

    [InitializeOnLoadMethod]
    private static void Foo()
    {
        [...]
    }
}

[InitializeOnLoad]
public class AttributesExample : MonoBehaviour
{
    
    static AttributesExample() 
    {
        [...]
    }

InitializeOnLoad属性を使用すると、ユーザーはユーザーとのやりとりなしにクラスを初期化できます。これは、エディタが起動するか再コンパイルされるたびに発生します。静的コンストラクタは、これが他の静的関数の前に呼び出されることを保証します。

[InitializeOnLoadMethod]
private static void Foo()
{
    [...]
}

InitializeOnLoad属性を使用すると、ユーザーはユーザーとのやりとりなしにクラスを初期化できます。これは、エディタが起動するか再コンパイルされるたびに発生します。この属性を使用するメソッドの実行順序は保証されていません。


[CanEditMultipleObjects]
public class AttributesExample : MonoBehaviour 
{

    public int MyInt;

    private static string prefsText = "";

    [PreferenceItem( "My Prefs" )]
    public static void PreferencesGUI()
    {
        prefsText = EditorGUILayout.TextField( "Prefs Text", prefsText );
    }

    [MenuItem( "Attributes/Foo" )]
    private static void Foo()
    {
        [...]
    }

    [MenuItem( "Attributes/Foo", true )]
    private static bool FooValidate() 
    {
        return false;
    }
}

[PreferenceItem]属性の結果

結果2

[MenuItem]属性の結果

結果3


[CanEditMultipleObjects]
public class AttributesExample : MonoBehaviour 

CanEditMultipleObjects属性を使用すると、コンポーネントから複数のGameObjectに渡って値を編集することができます。このコンポーネントがなければ、複数のGameObjectを選択したときにコンポーネントが通常のように表示されることはありませんが、代わりに「マルチオブジェクトの編集はサポートされていません」というメッセージが表示されます。

この属性は、カスタム編集者がマルチ編集をサポートするためのものです。非カスタムエディタは自動的にマルチ編集をサポートします。

[PreferenceItem( "My Prefs" )]
public static void PreferencesGUI()

PreferenceItem属性を使用すると、Unityの環境設定メニューで余分な項目を作成できます。受信方法は、使用するには静的である必要があります。

[MenuItem( "Attributes/Foo" )]
private static void Foo()
{
    [...]
}

[MenuItem( "Attributes/Foo", true )]
private static bool FooValidate() 
{
    return false;
}

MenuItem属性を使用すると、カスタムメニュー項目を作成して関数を実行できます。この例では、関数の実行を防ぐためにバリデータ関数も使用します(常にfalseを返します)。


[CustomEditor( typeof( MyComponent ) )]
public class AttributesExample : Editor
{
    [...]
}

CustomEditor属性を使用すると、コンポーネントのカスタムエディタを作成できます。これらのエディタはインスペクタでコンポーネントを描画するために使用され、Editorクラスから派生する必要があります。

[CustomPropertyDrawer( typeof( MyClass ) )]
public class AttributesExample : PropertyDrawer 
{
    [...]
}

CustomPropertyDrawer属性を使用すると、インスペクタのカスタムプロパティドロワを作成できます。これらの引き出しをカスタムデータ型に使用すると、インスペクタで使用することができます。

[DrawGizmo( GizmoType.Selected )]
private static void DoGizmo( AttributesExample obj, GizmoType type )
{
    [...]
}

DrawGizmo属性を使用すると、コンポーネントのカスタムギズモを描画できます。これらのギズモはシーンビューで描画されます。 DrawGizmo属性のGizmoTypeパラメーターを使用して、ギズモを描画するタイミングを決定できます。

受信メソッドは2つのパラメータを必要とします.1つ目は、ギズモを描画するコンポーネントで、2つ目は、描画されたギズモを必要とするオブジェクトが入っている状態です。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow