[Unity]Unity 3 Dエディタプラグインの拡張とコンポーネントの拡張

4522 ワード

1.1. ネーミングスペース
using UnityEditor;
using UnityEngine;    //   ,   

1.2. 構文の使用
[MenuItem("Assets/My Test")]
private static void Test()
{
    Debug.Log("Hello World!")
}

構文の説明
[MenuItem("path $t", Is, Priority)]
private static void Test1()
{}

[MenuItem("path _t", Is, Priority)]
private static void Test2()
{}

pathはメニューパスです.
一級メニュー名は中国語をサポートしていません

$tは、パスの後ろにスペースを付けたショートカットキーの例で、単純なキーショートカットキーの文字の前に下線が引かれています.このアイテムは必須ではありません%ctrl を表す.#shift を表す.&alt を表す.

Isがtrueに設定されている場合、ゲームオブジェクトが選択されていない場合は使用できない状態が表示されます.このオプションはではありません.
Priorityは優先度で、数値が小さいほど優先度が高く、必要ではありません.デフォルトは1000です.
ショートカットキーがctrl+hの例を以下に示します.
[MenuItem("Assets/My Test %h")]
private static void Test()
{
    Debug.Log("Hello World!")
}

1.3. selectionクラス
https://docs.unity3d.com/ScriptReference/Selection.html
1.3.1.選択したオブジェクトを取得するSelection.Objectsは、選択されたアイテムを取得できます.
1.3.2.選択したディレクトリの取得
string[] guids = Selection.assetGUIDs;
foreach ( var id in guids )
{
    string path = AssetDatabase.GUIDToAssetPath(id);
    if(Directory.Exists(path))
    {
        Debug.Log(string.format("Directory {0} exist", path))
    }
}

1.4. コントロールに右上ギアメニューを追加する機能
[MenuItem("CONTEXT/Rigidbody/wyg_test")]
private static TestRightButton()
{
    Debug.Log("    ")
}

CONTEXTは固定的な書き方です.
Rigidbodyはコントロール名で、他のコントロールに変更できます.
私は中国語を使っているとき、なぜ表示されなかったのか分かりません.
【本文は「プログラマーの愛」より発表され、2017年10月13日】