【unity游戲開發——編輯器擴展】使用MenuItem自定義菜單欄拓展

免職聲明:

  • 1、目前本博客分享的大部分知識產出方式是:學習別人知識+自己實際做一遍+自己的理解+擴展內容+自己整理、歸納、總結再分享。
  • 2、正如博客簡介所說:這里沒有教程,這里只做學習分享。所有的內容都是學習筆記,可以說沒有什么內容是真正的意義上的“原創”,哪怕是如何安裝unity都是跟著網上教程學習的,我的學習理念是:與其閉門造車,不如站在巨人的肩膀上 —— 融會貫通行業前輩們的寶貴經驗。
  • 3、unity基礎入門知識我就看了3個老師的教程,然后整合起來。比如這里的【unity游戲開發入門到精通】,其實一開始是看b站飛羽老師的,然后又融合外網CodeMonkey的知識,最后又看了唐老師的基礎入門的課程,結果發現唐老師的課程確實講的最好,又全部推翻重置了,目前看到的其實已經是第三版了。其中還包括一些其他的實戰內容和自己的理解。
  • 4、其實每篇文章我都參考了很多資料。真要全部寫出來,可能理不清楚。比如參考平臺有b站、百度、知乎、csdn、siki、泰課、unity官方文檔、外網論壇、一些私人博客網站等等,博主包括唐老師、林新發、BeaverJoe、奧颯姆、飛魚老師、麥扣、打工人小棋、C醬、IGBeginner0116等等,外網就更多了都不太記得名字了比如CodeMonkey、MixandJam、SunnyValleyStudio等等。這里就不一一列舉了,畢竟參考的資料實在太多了。
  • 5、參考的部分博主我都私信問過了,得到過許可。
  • 6、關于原創性。我覺得有個說法很好,只要不是直接復制粘貼,而是自己整理、歸納、總結,我覺得都可以算原創。學習他人知識其實更像是查閱了參考資料,不然,除了官方文檔,應該都不算是原創內容了。
  • 7、為什么收費?我也很佩服那些無償分享知識甚至開源的人,他們真的很偉大。但是,我也理解為什么有些人會選擇收費。畢竟,時間和精力都是有限的,有時候整理一個知識點就花費幾個星期甚至上月,也不是每個家庭都很富裕,我們需要通過分享知識來獲得一定的經濟回報,以支持我們的創作和維護。另外CSDN也沒有任何其他的廣告收入方式,完全靠用愛發電。所以,如果你覺得我的文章對你有幫助,歡迎支持我,謝謝!
  • 8、費用我也盡量最低(CSDN官方拿一半的分成,分到我手沒多少),這個價格也僅僅算是收個筆記整理費用了,這個價格如果想要在其他地方購買,我想也很難買到了。如果大家不想花這個錢,也可以去網上找一些免費的視頻教程,比如B站、YouTube等自行去進行學習整理,我分享的所有知識,不出意外都能在網上找到相關的解決方案。
  • 9、交易是你情我愿的,如果不滿意可以選擇退款。當然,如果有人覺得我整理的不好,也歡迎私信評論告訴我,我會重新整理的。
  • 10、正如前面所說,參考的資料太多了,每個文章都去寫很麻煩。后面我會在首頁做個感謝榜,盡量將參考過的博主鏈接直接放在首頁展示,大家可以自行去查看。如果有遺漏也歡迎找我補充。
  • 11、為什么選擇CSDN?一是習慣了,用了很多年了,一個是它的SEO做的確實很優秀。

注意:考慮到編輯器擴展的內容比較多,我將編輯器擴展的內容分開,并全部整合放在【unity游戲開發——編輯器擴展】專欄里,感興趣的小伙伴可以前往逐一查看學習。

文章目錄

  • 前置知識
    • 1、Editor 編輯器文件夾
    • 2、不? Editor ?件夾
    • 3、編輯器擴展相關命名空間
  • 一、使用MenuItem自定義菜單欄拓展
    • 1、在Unity菜單欄中添加自定義頁簽
      • 1.1 用法
      • 1.2 示例
    • 2、在Hierarchy窗口中添加自定義頁簽
      • 2.1 用法
      • 2.2 示例
    • 3、在Project窗口中添加自定義頁簽
      • 3.1 用法
      • 3.2 示例
    • 4、在Inspector對腳本右鍵添加菜單
      • 4.1 用法
      • 4.2 示例
    • 5、快捷鍵
      • 5.1 介紹
      • 5.2 示例
    • 6、排序
  • 二、在菜單欄的Component菜單添加腳本(補充)
    • 1、介紹
    • 2、示例
  • 專欄推薦
  • 完結

前置知識

1、Editor 編輯器文件夾

主要新項目需要自己手動創建
在這里插入圖片描述

  • 作用:用于存放與Unity編輯器相關的腳本,內容不會被打包到發布版本中。
  • 注意:該文件夾中的腳本僅在編輯模式下使用,不會被打包到游戲發布包中。

2、不? Editor ?件夾

如果你不想使用 Editor ?件夾其實也可以,我沒就需要在代碼中給每個 UnityEditor API 都加上#if UNITY_EDITOR宏判斷。比如:

#if UNITY_EDITOR
using UnityEditor;
#endif#if UNITY_EDITOR[MenuItem("XYFrame/XYFrame/1.一鍵打包XYFrame")]
#endif

這樣做的?的,是為了不影響我們項?打包。如果編輯器擴展相關代碼不放在Editor文件夾內,又不加宏判斷,項目打包會報錯。

3、編輯器擴展相關命名空間

using UnityEditor;

一、使用MenuItem自定義菜單欄拓展

  • 特性:MenuItem
  • 作用:在菜單欄點擊該頁簽時,將執行靜態函數中邏輯。
  • 注意
    • 不用在意繼承對象,不繼承Monobehaviour也沒問題。
    • 斜杠必須是 / 不能是 \
    • 一定要加在靜態函數上才有效

1、在Unity菜單欄中添加自定義頁簽

1.1 用法

在靜態函數前加上

[MenuItem("頁簽/一級選項/二級選項/....")]

1.2 示例

using UnityEditor;
using UnityEngine;public class MenuItemTest
{[MenuItem("編輯器拓展/菜單1/子菜單1")]private static void TestFun1(){Debug.Log("打印1");}
}

效果
在這里插入圖片描述
不需要運行游戲,點擊即可執行TestFun1方法
在這里插入圖片描述

2、在Hierarchy窗口中添加自定義頁簽

2.1 用法

在靜態函數前加上,并且頁簽命名前面放入GameObject路徑

[MenuItem("GameObject/頁簽/一級選項/二級選項/....")]

2.2 示例

[MenuItem("GameObject/編輯器拓展/菜單1/子菜單1")]
private static void TestFun2()
{Debug.Log("打印2");
}

效果
在這里插入圖片描述
或者
在這里插入圖片描述

3、在Project窗口中添加自定義頁簽

3.1 用法

在靜態函數前加上,并且頁簽命名前面放入Assets路徑

[MenuItem("Assets/頁簽/一級選項/二級選項/....")]

3.2 示例

[MenuItem("Assets/編輯器拓展/菜單1/子菜單1")]
private static void TestFun3()
{Debug.Log("打印3");
}

效果
在這里插入圖片描述
或者
在這里插入圖片描述

4、在Inspector對腳本右鍵添加菜單

4.1 用法

在靜態函數前加上,并且頁簽命名前面放入CONTEXT路徑

[MenuItem("CONTEXT/腳本名/頁簽/一級選項/二級選項/....")]

4.2 示例

[MenuItem("CONTEXT/NewMonoBehaviourScript/編輯器拓展/菜單1/TestFun4")]
private static void TestFun4()
{Debug.Log("打印4");
}

在這里插入圖片描述

5、快捷鍵

5.1 介紹

  • 基礎用法:路徑后 + 空格 + 下劃線 + 想要的按鍵

    [MenuItem("編輯器拓展/菜單2/TestFun5 _F4")]
    
  • 特殊按鍵%表示ctrl#表示shift&表示alt,注意使用特殊按鍵前面不需要加下劃線

    //最后有個 “ %e”,這個就是快捷鍵的符號,意思是 ctrl/cmd + e
    [MenuItem("XYFrame/XYFrame/1.一鍵打包XYFrame %e")]
    
  • 其他支持的按鍵LEFT、RIGHT、UP、DOWN、F1..F12、HOME、END、PGUP、PGDN 等等

5.2 示例

[MenuItem("編輯器拓展/菜單2/TestFun5 _F4")]
private static void TestFun5()
{Debug.Log("TestFun5");
}[MenuItem("編輯器拓展/菜單2/TestFun6 _A")]
private static void TestFun6()
{Debug.Log("TestFun6");
}[MenuItem("編輯器拓展/菜單2/TestFun7 _%#&A")]
private static void TestFun7()
{Debug.Log("TestFun7");
}

效果
在這里插入圖片描述

6、排序

MenuItem第三個參數,意思是優先級,表示 MenuItem 所在的顯示順序,數值越?越在底部。

[MenuItem("XYFrame/XYFrame/2.打開存儲目錄, false, 1")]

注意:兩個菜單按鈕的排序差大于1,則會在兩個按鈕之間顯示一條線進行分隔。

二、在菜單欄的Component菜單添加腳本(補充)

1、介紹

  • 特性:AddComponentMenu
  • 用法:在想要通過Component菜單添加的腳本前加上
    [AddComponentMenu("一級選項/二級選項/....")]
    
  • 注意
    • 腳本需要繼承MonoBehaviour對象。
    • 斜杠必須是 / 。
    • 最后一級選項的名字可以和腳本名不一樣,但是建議一致。
    • 由于給GameObject添加的腳本肯定要繼承Monobehaviour,所以不放在Editor文件夾。

2、示例

using UnityEngine;[AddComponentMenu("編輯器拓展/菜單1/子菜單1")]
public class AddComponentMenuTest : MonoBehaviour {}

腳本不放在Editor文件夾
在這里插入圖片描述
效果
在這里插入圖片描述
或者
在這里插入圖片描述


專欄推薦

地址
【unity游戲開發入門到精通——C#篇】
【unity游戲開發入門到精通——unity通用篇】
【unity游戲開發入門到精通——unity3D篇】
【unity游戲開發入門到精通——unity2D篇】
【unity實戰】
【制作100個Unity游戲】
【推薦100個unity插件】
【實現100個unity特效】
【unity框架/工具集開發】
【unity游戲開發——模型篇】
【unity游戲開發——InputSystem】
【unity游戲開發——Animator動畫】
【unity游戲開發——UGUI】
【unity游戲開發——聯網篇】
【unity游戲開發——優化篇】
【unity游戲開發——shader篇】
【unity游戲開發——編輯器擴展】

完結

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果學習過程中遇到任何問題,也歡迎你評論私信找我。

贈人玫瑰,手有余香!如果文章內容對你有所幫助,請不要吝嗇你的點贊評論和關注,你的每一次支持都是我不斷創作的最大動力。當然如果你發現了文章中存在錯誤或者有更好的解決方法,也歡迎評論私信告訴我哦!
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數學復習筆記 7

前言 現在復習線代基礎,慢慢打基礎。。 轉置 方陣轉置之后行列式保持不變。我的筆記感覺主要不是整理知識點,主要是把我的一些理解記錄下來。這才是我自己的東西,那些需要記住的知識和內容記住就好了。記住轉置有四個性質,在講…

AIGC時代的內容安全:AI檢測技術如何應對新型風險挑戰?

在數字時代,互聯網內容以文本、圖像、音頻和視頻等形式呈現爆發式增長,深刻塑造了信息傳播的格局。然而,內容的快速傳播也帶來了嚴峻挑戰:違法信息(如涉黃、涉政)、虛假廣告、網絡暴力等內容不僅威脅用戶體…

PyTorch中的nn.Embedding應用詳解

PyTorch 文章目錄 PyTorch前言一、nn.Embedding的基本原理二、nn.Embedding的實際應用簡單的例子自然語言處理任務 前言 在深度學習中,詞嵌入(Word Embedding)是一種常見的技術,用于將離散的詞匯或符號映射到連續的向量空間。這種…

AI 檢測原創論文:技術迷思與教育本質的悖論思考

當高校將 AI 寫作檢測工具作為學術誠信的 "電子判官",一場由技術理性引發的教育異化正在悄然上演。GPT-4 檢測工具將人類創作的論文誤判為 AI 生成的概率高達 23%(斯坦福大學 2024 年研究數據),這種 "以 AI 制 AI&…

langchain4j集成QWen、Redis聊天記憶持久化

langchain4j實現聊天記憶默認是基于進程內存的方式,InMemoryChatMemoryStore是具體的實現了,是將聊天記錄到一個map中,如果用戶大的話,會造成內存溢出以及數據安全問題。位了解決這個問題 langchain4提供了ChatMemoryStore接口&am…

Tomcat 日志體系深度解析:從訪問日志配置到錯誤日志分析的全鏈路指南

一、Tomcat 核心日志文件架構與核心功能 1. 三大基礎日志文件對比(權威定義) 日志文件數據來源核心功能典型場景catalina.out標準輸出 / 錯誤重定向包含 Tomcat 引擎日志與應用控制臺輸出(System.out/System.err)排查 Tomcat 啟…

萬物互聯時代:ONVIF協議如何重構安防監控系統架構

前言 一、ONVIF協議是什么 ONVIF(Open Network Video Interface Forum,開放式網絡視頻接口論壇)是一種全球性的開放行業標準,由安訊士(AXIS)、博世(BOSCH)和索尼(SONY&…

leetcode - 雙指針問題

文章目錄 前言 題1 移動零: 思路: 參考代碼: 題2 復寫零: 思考: 參考代碼: 題3 快樂數: 思考: 參考代碼: 題4 盛最多水的容器: 思考:…

從概念表達到安全驗證:智能駕駛功能迎來系統性規范

隨著輔助駕駛事故頻發,監管機制正在迅速補位。面對能力表達、使用責任、功能部署等方面的新要求,行業開始重估技術邊界與驗證能力,數字樣機正成為企業合規落地的重要抓手。 2025年以來,圍繞智能駕駛功能的爭議不斷升級。多起因輔…

java數組題(5)

(1): 思路: 1.首先要對數組nums排序,這樣兩數之間的差距最小。 2.題目要求我們通過最多 k 次遞增操作,使數組中某個元素的頻數(出現次數)最大化。經過上面的排序,最大數…

Python(1) 做一個隨機數的游戲

有關變量的,其實就是 可以直接打印對應變量。 并且最后倒數第二行就是可以讓兩個數進行交換。 Py快捷鍵“ALTP 就是顯示上一句的代碼。 —————————————————————————————— 字符串 用 雙引號或者單引號 。 然后 保證成雙出現即可 要是…

【認知思維】驗證性偏差:認知陷阱的識別與克服

什么是驗證性偏差 驗證性偏差(Confirmation Bias)是人類認知中最普遍、最根深蒂固的心理現象之一,指的是人們傾向于尋找、解釋、偏愛和回憶那些能夠確認自己已有信念或假設的信息,同時忽視或貶低與之相矛盾的證據。這種認知偏差影…

Wpf學習片段

IRegionManager 和IContainerExtension IRegionManager 是 Prism 框架中用于管理 UI 區域(Regions)的核心接口,它實現了模塊化應用中視圖(Views)的動態加載、導航和生命周期管理。 IContainerExtension 是依賴注入&…

消息~組件(群聊類型)ConcurrentHashMap發送

為什么選擇ConcurrentHashMap? 在開發聊天應用時,我們需要存儲和管理大量的聊天消息數據,這些數據會被多個線程頻繁訪問和修改。比如,當多個用戶同時發送消息時,服務端需要同時處理這些消息的存儲和查詢。如果用普通的…

Stapi知識框架

一、Stapi 基礎認知 1. 框架定位 自動化API開發框架:專注于快速生成RESTful API 約定優于配置:通過標準化約定減少樣板代碼 企業級應用支持:適合構建中大型API服務 代碼生成導向:顯著提升開發效率 2. 核心特性 自動CRUD端點…

基于深度學習的水果識別系統設計

一、選擇YOLOv5s模型 YOLOv5:YOLOv5 是一個輕量級的目標檢測模型,它在 YOLOv4 的基礎上進行了進一步優化,使其在保持較高檢測精度的同時,具有更快的推理速度。YOLOv5 的網絡結構更加靈活,可以根據不同的需求選擇不同大…

Spring Security與SaToken的對比

Spring Security與SaToken的詳細對照與優缺點分析 1. 核心功能與設計理念 對比維度Spring SecuritySaToken核心定位企業級安全框架,深度集成Spring生態,提供全面的安全解決方案(認證、授權、攻擊防護等)輕量級權限認證框架&#…

【docker】--鏡像管理

文章目錄 拉取鏡像啟動鏡像為容器連接容器法一法二 保存鏡像加載鏡像鏡像打標簽移除鏡像 拉取鏡像 docker pull mysql:8.0.42啟動鏡像為容器 docker run -dp 8080:8080 --name container_mysql8.0.42 -e MYSQL_ROOT_PASSWORD123123123 mysql:8.0.42 連接容器 法一 docker e…

力扣HOT100之二叉樹:543. 二叉樹的直徑

這道題本來想到可以用遞歸做,但是還是沒想明白,最后還是去看靈神題解了,感覺這道題最大的收獲就是鞏固了我對lambda表達式的掌握。 按照靈神的思路,直徑可以理解為從一個葉子出發向上,在某個節點處拐彎,然后…

web 自動化之 yaml 數據/日志/截圖

文章目錄 一、yaml 數據獲取二、日志獲取三、截圖 一、yaml 數據獲取 需要安裝 PyYAML 庫 import yaml import os from TestPOM.common import dir_config as Dirdef read_yaml(key,file_name"test_datas.yaml"):file_path os.path.join(Dir.testcases_dir, file_…