1. 程式人生 > >Unity編輯器擴充套件學習筆記(一)——新增選單選項

Unity編輯器擴充套件學習筆記(一)——新增選單選項

以前一直沒用到編輯器擴充套件這一塊,上一次用還是當初在培訓機構老師教編寫打包工具的時候,那時候剛接觸unity聽不大懂也不知道幹啥用。轉眼就過去了好久。

最近遇到一些情況,有時候需要修改多個GameObject身上的屬性,有時候需要按照規律建立多個GameObject,這些事如果手動來做真的是太扯淡了。

所以我花時間學習了一下,算是又進步了一點。

考慮到之前做的筆記好像很是混亂,我決定以後每篇篇幅更短一些,儘量一篇只記錄一個重要點的知識點。

如何在unity選單裡新增自己的選單項


除了自己新增一個頂級的選單選項外,還可以在其他項下新增選單,GameObject、Component等都可以。只是因為QQ截圖時選單會縮回去,因此無法截圖。

想要新增自己的選單項:

1.首先在Assets目錄(子目錄也沒有關係)下新建一個Editor資料夾

2.在Editor下建立指令碼,using UnityEditor;不需要繼承自誰

3.編寫一個靜態方法,在方法前一行加上[MenuItem("頂級選單項/選項")]

(比如想在GameObject選單下新增一個CreateCube選項,則應該這麼書寫[MenuItem("GameObject/CreateCube")])

總之,靜態方法決定了它要做什麼,MenuItem決定了顯示在選單哪裡,如果不是想放在GameObject下而是自己新建可以將GameObject換成MyTools之類,就會和上面的圖片一樣新建一個頂層的選單項。另外選單是可以多層的,也就是說可以多幾個“/”。

另外,menuitem所新增的選單選項,如果新增在GameObject下,那麼在Hierarchy面板上右鍵也會顯示,新增在Assets下,在Project面板下右鍵也會顯示。

在這裡先貼一個模仿Unity原本的建立Cube的功能

/// <summary>
    /// 模仿建立一個cube
    /// </summary>
    [MenuItem("GameObject/CreateCube",false,10)]
    static void CreateCube() {
        GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
        //if (Selection.activeGameObject != null) {
        //如果選中了一個遊戲物件,新建立的cube將是它的子物體
        GameObjectUtility.SetParentAndAlign(go, Selection.activeGameObject);
        //}

        //在撤銷系統中註冊這一次建立事件
        Undo.RegisterCreatedObjectUndo(go, "create" + go.name);

        //設定預設選中新建立的遊戲物件
        Selection.activeObject = go;

    }

MenuItem的第二個引數代表是否為驗證方法(後面會單獨記),第三個引數代表了選單項的排序,數值越小越靠前,每11為一個分組,每個分組在選單中用白線隔開。

相關推薦

Unity編輯擴充套件學習筆記——新增選單選項

以前一直沒用到編輯器擴充套件這一塊,上一次用還是當初在培訓機構老師教編寫打包工具的時候,那時候剛接觸unity聽不大懂也不知道幹啥用。轉眼就過去了好久。 最近遇到一些情況,有時候需要修改多個GameObject身上的屬性,有時候需要按照規律建立多個GameObject,這些

Unity Shader學習筆記坐標變換

directx 渲染 系列 約束 shade ace cnblogs 相機 它的 基本問題   試想我們的美術做了一個3D模型,然後渲染引擎把模型渲染到屏幕上。我們還可以選定不同的視角,模擬不同的光照條件去觀察模型。現在來分析一下這個過程。如果說我們把這個過程看成一個函數,

Tomcat學習筆記一個簡單的Web服務

sub 調用 [] ont 拒絕 address 剖析 文件 getprop 內容為《深入剖析Tomcat》第一章重點,以及自己的總結,如有描述不清的,可查看原書。 一、HTTP協議: 1、定義:用於服務器與客戶端的通訊的協議,允許web服務器和瀏覽器通過互聯網進行發送和接

BOM學習筆記開啟新連結四種方式、視窗屬性、定時

BOM:專門操作瀏覽器視窗的物件 1、window物件充當2個角色:       1. 全域性物件       2. 包含BOM常用物件   

鬆翰微控制器--SN8F5702學習筆記uart暫存

暫存器 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 S0CON SM0 SM

Unity ECS學習筆記

ECS架構概述 ECS術語 實體Entity:像容器一樣 元件資料Component Data:要儲存在實體中的資料(不包括處理) 元件系統ComponentSystem:處理 組Group:元件系統執行所需的ComponentData列表 Unity官版ECS主要特徵如下:

unity shader學習筆記——基礎光照之標準光照模型定義

標準光照模型 標準光照模型只關心直接光照(direct light)。它把進入攝像機的光照分為4個部分: 自發光(emissive),這部分用於給定一個方向時,物體表面會向這個方向產生多少的光,當沒有使用全域性光照時,自發光物體不會照亮周圍物體,只是本身看

[持續更新]CSS3學習筆記偽類選擇&自定義字型&背景圖片

CSS3學習筆記 1.  偽類選擇器 CSS3之前的偽類共有:::first-line,::first-letter, :after, :before, :hover, :active, :visited, :focus, :link,:first-child, :l

Unity學習筆記——基本概念之場景Scene

場景,顧名思義就是我們在遊戲中所看到的物品、建築、人物、背景、聲音、特效等,基本上和我們玩遊戲時所看到的遊戲“場景”是同一個概念。 Unity 3D中,“場景”是一個檢視,我們通過“場景”這個檢視,來編輯、佈置遊戲中玩家所能見到的影象和聲音。 安裝完並執行Unity 3D,

ES6學習筆記——字串的擴充套件

預備知識 utf-16:把Unicode字符集的抽象碼位對映為16位長的整數(即碼元)的序列,Unicode字元的碼位,需要1個或2個16位的碼元來表示。 utf-32:使用32個位元對每個Unicode碼位進行編碼,編碼長度是固定的,即32位。 js

unity編輯擴充套件學習

擴充套件編輯器實際上就是在unity選單欄中新增一些按鈕,可以一鍵執行一些重複性的工作。 一.新增按鈕 1.簡單使用MenuItem特性 using UnityEngine; using UnityEditor; public class Tools { [MenuItem("Tools/test

python框架之 Tornado 學習筆記

tornado pythontornado 一個簡單的服務器的例子:首先,我們需要安裝 tornado ,安裝比較簡單: pip install tornado 測試安裝是否成功,可以打開python 終端,輸入: import tornado.https

Scala學習筆記編程基礎

大數據 上一個 extends 移除 condition api arr 調用方法 tab 強烈推薦參考該課程:http://www.runoob.com/scala/scala-tutorial.html 1. Scala概述 1.1. 什麽是Scala Scala

3D Game Programming withDX11 學習筆記 數學知識總結

表示 圖形 http 根據 轉置 元素 material -s com   在圖形學中,數學是不可或缺的一部分,所以本書最開始的部分就是數學知識的復習。在圖形學中,最常用的是矢量和矩陣,所以我根據前面三個章節的數學知識,總結一下數學知識。 一、矢量   數學中的矢量,擁有

系統分析與設計學習筆記

學習 掌握 應該 溝通 基本 最終 表示 對象 毫無 為什麽要學習這門課程?   “擁有一把錘子未必能成為建築師”。 這門課程學習的是面向對象分析和設計的核心技能的重要工具。對於使用面向對象技術和語言來,創建設計良好、健壯且可維護的軟件來說,這門課程所

最大熵學習筆記預備知識

color wrap targe dsm entropy plus 文件 eight 相關鏈接 生活中我們常常聽到人們說“不要把雞蛋放到一個籃子裏”。這樣能夠減少風險。深究一下,這是為什麽呢?事實上,這裏邊包括了所謂的最大熵原理(The Maxim

Nginx模塊之Nginx-Ts-Module學習筆記搶險體驗

學習筆記 體驗 nginx模塊 int images clas tps gin issues 1、通過HTTP接收MPEG-TS2、生產和管理Live HLS 3、按照官方的編譯和配置,當然了我是第一次編譯沒有通過,在作者重新調整下,編譯成功,感謝:@arut https:

jq學習筆記

簡單 ren 當前 一個 text 互斥 元素 如果 property 1 .attr() 與 .removeAttr()方法 - atr()方法用來獲取和設置元素屬性 attr()有4個表達式: attr(傳入屬性名):獲取屬性的值 attr(屬性名, 屬性

Redis學習筆記關於在windows64位環境下的安裝學習使用

客戶端 mas key-value 錯誤 services 再次 基準 alt 類型 前言 由於工作需要,目前我正在學習使用Redis。我當時學習Redis就從網上下載了點資料就開始學習了。入門看的是《REDIS入門指南》,這本書個人覺得很適合新手用來學習接觸。根據書上的引

Memcache 學習筆記----Memcache — Linux部署

工作 apach sch trick 解壓 font ash 一個 鍵值   Memcache 一、Memcache簡介(內容摘自 --百度百科)   memcache是一套分布式的高速緩存系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網