国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity 編輯器篇|(一)MenuItem菜單欄

這篇具有很好參考價(jià)值的文章主要介紹了Unity 編輯器篇|(一)MenuItem菜單欄。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.MenuItem 屬性

MenuItem(string itemName, bool isValidateFunction, int priority) 
  • itemName:菜單名稱路徑
    • 特殊路徑:
      • CONTEXT: 為組件添加菜單項(xiàng)
      • Assets: 對應(yīng)頂部菜單 Assets,并添加 Project 面板右鍵菜單
      • GameObject: 對應(yīng)頂部菜單 GameObject,priority 值在1~49時(shí),添加 Hierarchy 面板右鍵菜單
      • Component: 對應(yīng)頂部菜單 Component,對應(yīng) Inspector 面板的 Add Component 窗口。但是不知道怎么用,用 AddComponentMenu 吧
  • isValidateFunction:不寫為false,true則點(diǎn)擊菜單前就會調(diào)用
  • priority:菜單項(xiàng)顯示排序 默認(rèn) 1000

2.創(chuàng)建多級菜單

    [MenuItem("一級菜單/二級菜單上/三級菜單")]
  static void MenuOne()
  {
      //功能
  }

  [MenuItem("一級菜單/二級菜單下")]
  static void MenuTwo()
  {
      //功能
  }

Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#

3.創(chuàng)建帶快捷鍵的菜單

  • 在 MenuItem 的雙引號菜單路徑最后+空格+快捷鍵字符
  • 快捷鍵可任意組合使用
  • 英文字母 :_字母 (不區(qū)分大小寫)
  • 常用快捷鍵:
符號 字符
% Ctr/Command
# Shift
& Alt
LEFT/Right/UP/DOWN 方向鍵
F1-F2 F功能鍵
_g 字母g
 [MenuItem("一級菜單/二級菜單上 #_A")]
 static void MenuA()
 {
     Debug.Log("A");
 }

 [MenuItem("一級菜單/二級菜單中 %#_B")]
 static void MenuB()
 {
     Debug.Log("B");
 }

 [MenuItem("一級菜單/二級菜單下 %&_C")]
 static void MenuC()
 {
     Debug.Log("B");
 }

Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#

4.創(chuàng)建可被勾選的菜單

 //設(shè)置勾選狀態(tài)
 //Menu.SetChecked(string menuPath, bool isChecked)
 //獲取勾選狀態(tài)
 //Menu.GetChecked(string menuPath)

 [MenuItem("一級菜單/二級菜單上 #_A")]
 static void MenuA()
 {
     string menuPath = "一級菜單/二級菜單上 #_A";
     bool isChecked = !Menu.GetChecked(menuPath);
     Menu.SetChecked(menuPath, isChecked);
 }

 [MenuItem("一級菜單/二級菜單中 %#_B")]
 static void MenuB()
 {
     string menuPath = "一級菜單/二級菜單中 %#_B";
     bool isChecked = !Menu.GetChecked(menuPath);
     Menu.SetChecked(menuPath, isChecked);
 }

 [MenuItem("一級菜單/二級菜單下 %&_C")]
 static void MenuC()
 {
     string menuPath = "一級菜單/二級菜單下 %&_C";
     bool isChecked = !Menu.GetChecked(menuPath);
     Menu.SetChecked(menuPath, isChecked);
 }

Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#

5.檢查菜單是否使用

  [MenuItem("菜單路徑名")]
  static void 方法() { }

  [MenuItem("菜單路徑名"),true]
  static void 驗(yàn)證方法()
  {
      return bool; //返回true 改菜單啟用
  }
   [MenuItem("一級菜單/二級菜單上")]
   static void MenuA()
   {
       string menuPath = "一級菜單/二級菜單上";
       bool isChecked = !Menu.GetChecked(menuPath);
       Menu.SetChecked(menuPath, isChecked);
   }

   [MenuItem("一級菜單/二級菜單中")]
   static void MenuB()
   {
       string menuPath = "一級菜單/二級菜單中";
       bool isChecked = !Menu.GetChecked(menuPath);
       Menu.SetChecked(menuPath, isChecked);

       EditorPrefs.SetBool("MenuCValidate", isChecked);
   }

   [MenuItem("一級菜單/二級菜單下")]
   static void MenuC()
   {
       string menuPath = "一級菜單/二級菜單下";
       bool isChecked = !Menu.GetChecked(menuPath);
       Menu.SetChecked(menuPath, isChecked);
   }

   [MenuItem("一級菜單/二級菜單下", true)]
   static bool MenuCValidate()
   {
       bool flag = EditorPrefs.GetBool("MenuCValidate");
       Menu.SetChecked("一級菜單/二級菜單中", flag);
       return flag;
   }

Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#
Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#

6.菜單排序

  • 在priority 小的位置在上方 不配置默認(rèn)為1000
  • 當(dāng)相鄰兩個(gè)菜單的 priority 值差距超過10時(shí) 就會分組 中間出現(xiàn)一條橫線
  • 多級菜單的 priority 按照子級里面最小的 priority 算
    [MenuItem("一級菜單/二級菜單上", false, 3)]
    static void MenuA()
    {
        string menuPath = "一級菜單/二級菜單上";
        bool isChecked = !Menu.GetChecked(menuPath);
        Menu.SetChecked(menuPath, isChecked);
    }

    [MenuItem("一級菜單/二級菜單中", false, 2)]
    static void MenuB()
    {
        string menuPath = "一級菜單/二級菜單中";
        bool isChecked = !Menu.GetChecked(menuPath);
        Menu.SetChecked(menuPath, isChecked);
    }

    [MenuItem("一級菜單/二級菜單下", false, 1)]
    static void MenuC()
    {
        string menuPath = "一級菜單/二級菜單下";
        bool isChecked = !Menu.GetChecked(menuPath);
        Menu.SetChecked(menuPath, isChecked);
    }

Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#

7.擴(kuò)展右鍵菜單

7.1 Hierarchy 右鍵菜單

  • Hierarchy 右鍵菜單是菜單欄的 GameObject 菜單欄下的菜單,并且 priority 在 1~49 范圍內(nèi).
    [MenuItem("GameObject/二級菜單", false, 1)]
    static void MenuA()
    {

    }

Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#
Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#

7.2 Project 右鍵菜單

  • Project 右鍵菜單是菜單欄的 Assets 菜單欄下的菜單
  [MenuItem("Assets/二級菜單", false, 1)]
  static void MenuA()
  {

  }

Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#

7.3 Inspector 組件右鍵菜單

  • 組件右鍵菜單是使用特殊路徑 CONTEXT 創(chuàng)建的
  • MenuCommand 可以獲取到該組件
    [MenuItem("CONTEXT/組件名/菜單名")]
    static void 方法名(MenuCommand cmd)
    {
        //組件名 t = cmd.context as 組件名;
        //對該組件進(jìn)行操作
    }

    [MenuItem("CONTEXT/Transform/Reset功能")]
    static void ClearTransformMenu(MenuCommand cmd)
    {
        Transform t = cmd.context as Transform;
        t.position = Vector3.zero;
        t.rotation = Quaternion.identity;
        t.localScale = Vector3.zero;
        GameObject obj = new GameObject();
        obj.transform.parent = t.gameObject.transform;
    }

Unity 編輯器篇|(一)MenuItem菜單欄,# Unity編輯器篇,unity,編輯器,游戲,c#文章來源地址http://www.zghlxwxcb.cn/news/detail-777795.html

  • 注意:
    • 菜單檢查 在 Hierarchy 右鍵菜單里面,檢查沒有效果,但是在頂上菜單和 Project 右側(cè)里面可以用。

8. AddComponentMenu 特性

  • AddComponentMenu 直接加載類上,會自動將菜單加到 Component 下,并加在 Inspector 面板的 AddComponentMenu 里.
AddComponentMenu(string menuName, int order)
menuName:菜單名路徑
order:菜單項(xiàng)排序
[AddComponentMenu("自定義/Test", 1)]
public class Test : MonoBehaviour
{

}

9. ContextMenu 特性 添加組件右鍵菜單

ContextMenu(string itemName, bool isValidateFunction, int priority)
itemName:菜單名稱
isValidateFunction:不寫為false,true則點(diǎn)擊菜單前就會調(diào)用 
priority:菜單項(xiàng)顯示排序 默認(rèn) 1000000
[AddComponentMenu("自定義/Test", 1)]
public class Test : MonoBehaviour
{
    [ContextMenu("添加空物體")]
    public void AddGameObject()
    {
        transform.position = Vector3.zero;
        transform.rotation = Quaternion.identity;
        transform.localScale = Vector3.zero;
        GameObject obj = new GameObject();
        obj.transform.parent = transform;
    }
}

到了這里,關(guān)于Unity 編輯器篇|(一)MenuItem菜單欄的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包