1. 程式人生 > >Unity 編輯器擴充套件,讓開發更加快捷

Unity 編輯器擴充套件,讓開發更加快捷

      在unity開發中經常會對資源或者指令碼進行批量處理,開發自己的工具可以加快處理的速度。當然有的地方必須要用到編輯器類,例如資源打包的時候需要觸發,這時候就用到了。 

1.MeuItam函式的使用,如下;

當編輯器沒有你自定義的根選項時編輯器會新建一個選項,例如Tools。有的話就合併進入,例如Window。在menuitam下面的函式必須是靜態函式。

 
using UnityEditor;
using UnityEngine;

public class Tools  {

    [MenuItem("Tools/test/test1")]
    static void Test()
    {
        Debug.Log("Test");
    }
    [MenuItem("Tools/test/test2")]
    static void Test2()
    {
        Debug.Log("Test");
    }
    [MenuItem("Window/mytool/test1")]
    static void Test3()
    {
        Debug.Log("Test");
    }
}

menuitam後面的引數具體含義,第一個引數代表編輯器的選框路徑,第二個引數false時能顯示(具體第二個引數含義存疑)

第三個引數代表你定義的選框的優先順序,在編輯器裡選框的優先順序是有分類的 ,他們之間用實線進行區分,分組,如圖

int型別的引數,根據你想把他放的位置進行嘗試,放的位置不同許可權不同,例如前面的你可以在herarchy面板直接右鍵使用。具體設定多上合適,自己嘗試。

using UnityEditor;

using UnityEngine;

public class Tools {

    [MenuItem("GameObject/my tool", false, 10)]
    static void Test4()
    {
        Debug.Log("Test");
    }
    [MenuItem("GameObject/my delete", true, 11)]
    static bool MyDeleteValidate()
    {
        if (Selection.objects.Length > 0)
            return true;
        else
            return false;
    }

    [MenuItem("GameObject/my delete", false, 11)]
    static void Mydelete()
    {
        foreach (Object o in Selection.objects)
        {
            //GameObject.DestroyImmediate(o);
            Undo.DestroyObjectImmediate(o);//利用Undo進行的刪除操作 是可以撤銷的
        }
        //需要把刪除操作註冊到 操作記錄裡面
    }
    [MenuItem("Assets/assetbutton")]
    static void Test5()
    {
        Debug.Log("Test");
    }
    
    //每一個選單欄的priority優先順序預設為1000
    [MenuItem("Tools/show info",false,1)]
    static void Test1()
    {
        //Debug.Log(Selection.activeGameObject.name );//是我們第一個選擇的遊戲物體 
        //Debug.Log(Selection.objects.Length);
        
    }
    //%=ctrl #=shift &=alt
    [MenuItem("Tools/test2 %q",false,100)]
    static void Test2()
    {
        Debug.Log("Test2");
    }
    [MenuItem("Tools/test3 %t",false,0)]
    static void Test3()
    {
        Debug.Log("Test3");
    }

}
新增快捷鍵
  • %-CTRL 在Windows / CMD在OSX
  • # -Shift
  • & -Alt
  • LEFT/RIGHT/UP/DOWN-游標鍵
  • F1…F12
  • HOME,END,PGUP,PDDN
注:字母鍵不是key-sequence的一部分,要讓字母鍵被新增到key-sequence中必須在前面加上下劃線(例如:_g對應於快捷鍵”G”)。 [MenuItem("Tools/New Option %#a")]即Alt+Shift+A[MenuItem("Tools/Item2 _g")]即G

2.CONTEXT引數用來對遊戲物體上的元件進行操作,如下程式碼段中

[MenuItem("CONTEXT/Rigidbody/Clear")]//是對編輯器狀態下的缸體進行Clear操作static void ClearMassAndGravity( MenuCommand cmd )
clear對應的函式是ClearMassAndGravity,引數cmd就是當前組建,com.context強轉為你要操作的型別,然後對其內部的引數進行修改
using UnityEditor;

public class PlayerEditor  {
   
    [MenuItem("CONTEXT/Rigidbody/Clear")]
static void ClearMassAndGravity( MenuCommand cmd )// CONTEXT 元件名 按鈕名//menucommand是當前正在操作的組
{Rigidbody rgd = cmd.context as Rigidbody;  
rgd.mass = 0; rgd.useGravity = false;    }
} 

3.EditorWindow是視窗類,可以建立自己的視窗,在視窗幾面集合工具。視窗內的內容是OnGUI中實現。

using UnityEditor;
using System.Collections;

// This example shows how to create a context menu inside a custom EditorWindow.
// context-click the green area to show the menu

public class GenericMenuExample : EditorWindow
{

    [MenuItem("Example/Open Window")]
    static void Init()
    {
        var window = GetWindow<GenericMenuExample>();
        window.position = new Rect(50, 50, 250, 60);
        window.Show();
    }

    void Callback(object obj)
    {
        Debug.Log("Selected: " + obj);
    }

    void OnGUI()
    {
        Event currentEvent = Event.current;
        Rect contextRect = new Rect(10, 10, 100, 100);
        EditorGUI.DrawRect(contextRect, Color.green);
    }
       rgd.mass = 0; rgd.useGravity = false;    }}

相關推薦

Unity 編輯擴充套件開發更加快捷

      在unity開發中經常會對資源或者指令碼進行批量處理,開發自己的工具可以加快處理的速度。當然有的地方必須要用到編輯器類,例如資源打包的時候需要觸發,這時候就用到了。 1.MeuItam函式的使用,如下;當編輯器沒有你自定義的根選項時編輯器會新建一個選項,例如Too

Unity 編輯擴充套件總結 一:編輯開發入門

編輯器擴充套件總結 工欲善其事必先利其器 引言: 在專案開發中,編輯器擴充套件為開發者提供了開發自定義工具的功能,讓開發者更加便利地使用編輯器開發專案。近期小生一直在學習編輯器擴充套件的知識,發現網路上關於編輯器知識點的部落格較為零散且混亂。當然,有一些大佬已經總結的很

Unity編輯擴充套件(音效控制面板路徑增刪)

using UnityEngine;using UnityEditor;using System.Collections.Generic;using System.Text;using System.IO;public class MusicWindowEditor : Ed

unity編輯擴充套件#2 GUILayout、EditorGUILayout 控制元件整理

  GUILayout 裝飾類控制元件: GUILayout.FlexibleSpace(); GUILayout.Space(100);//空格,沒什麼好說的 GUILayout.Label("label"); GUILayout.Box(new GUICo

unity編輯擴充套件#1 自定義視窗、面板、和屬性

擼一遍unity官方文件的給的三個案例:https://docs.unity3d.com/2017.4/Documentation/Manual/editor-EditorWindows.html 自定義視窗 首先,要注意和編輯器相關的指令碼都應該把放到Editor資料夾裡,可以有多個E

c3p0和QueryRunner的結合使用開發更加簡便

1 package com.bie.service.impl; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.bie.dao.UserDao; 7 import com.bie.

Unity編輯擴充套件:如何把asset 格式的資源轉成png

Assets Store 上提供了大量的優秀素材給開發者使用,包括模型貼圖UI音樂等等。但是一些上傳者可能出於特殊原因,上傳的素材格式是unity內建的.asset 格式,這樣的格式對於直接拿來在unity中使用的開發者當然沒有影響,但是遇到素材本身不是完全符合需求,需要做一些修

Unity編輯擴充套件:如何把圖集(Atlas)拆分成單個圖片

遊戲開發中可能會用到商店下載的圖集,但是如果只是用到一部分,卻把整個圖集打包到專案則明顯是不划算的。可以讓美術同事單獨把需要的圖片切出來,但是圖源比較多的話也是一個不小的工作。既然能夠拿到切好的圖集資料,是不是可以通過程式碼自動生成切好的小圖呢,答案當然是肯定的。這裡提供一個小工具,操作

Unity編輯擴充套件

(我們自己寫的指令碼放在 Editor檔案裡(Editor 自己建立 跟建立Scenes檔案一樣))1 增加簡單選單欄(第一排選單欄)(我們使用靜態方法便於呼叫     不用靜態方法   我們Unity不能顯示出來)public Class  Tools  {   [Menu

unity編輯 擴充套件快捷鍵寫法與意義

 using UnityEngine; using System.Collections; // using UnityEditor;<span style="white-space:pre"&

Unity編輯擴充套件-選單項

Unity編輯器允許你去新增像內建選單一樣外觀和行為的自定義選單。自定義選單對於那些經常使用的功能提供一種能從編輯器直接訪問的便捷方式。在這一課程中我將對每個描述的主題提供真實的使用示例,用於說明在unity中的選單項是如何建立和使用的。 新增選單項 為了要在頂層工具

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

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

Unity 編輯擴充套件 場景檢視內控制物件

using UnityEngine;using UnityEditor; [CustomEditor(typeof(EnemySpawn))]public class EnemySpawnEditor : Editor {     void OnSceneGUI()     {         EnemySp

Unity 編輯擴充套件

 Unity編輯器擴充套件 1 在工程目錄下新建 Editor 資料夾 Editor資料夾內的資源都不會被打包出去(包括PC 移動端等 只會在unity的編輯器模式執行)   //正常的新增選單欄     [MenuItem("Tools/test")]  

Unity 編輯擴充套件教程

來自:candycat1992 http://blog.csdn.net/candycat1992/article/details/52067975 寫在前面 Unity最強大的地方之一是它擴充套件性非常強的編輯器。Unite Europe 20

Unity編輯擴充套件簡介】儲存資料

unity編輯器中有三種方式可以儲存資料。 EditorPrefs EditorPrefs可以在PC中儲存共享資料,即不受制於專案地儲存資訊 影響範圍 儲存的值會影響每一個大版本的Unity編輯器 以前儲存在Unity4.x的值只能在Unity 4

unity3D 編輯擴充套件MenuItem 和 ContextMenu 的使用方法

首先是unity頂部選單欄的一些用法,如圖: 注意:MenuItem是編輯器類,所以技能匯入 using UnityEditor; 名稱空間,且一般我們的類也不是整合自MonoBehaviour的,而是整合ScriptableObject的。

unity-編輯擴充套件

unity編輯器擴充套件很方便,可以省掉很多製作其他工具的時間(比如技能編輯器,特效編輯器等,都是資料結構的匯入匯出) 可以直接在 Scene 、Inspector 或者新建一個 Window 中編輯 1、Inspector

Unity - 編輯擴充套件

# 前言 對於Unity編輯器的擴充套件方法眾多,本文從最常用的一些方法入手,例如Inspector指令碼欄的擴充套件、頂選單欄的擴充套件等,圖文並茂闡述其完整用法。 本文大部分內容整理自 [獨立遊戲開發 - indienova](https://indienova.com/u/dev) 所著的 **Uni

Python之學會測試開發更加高效(一)

  前幾天,聽了公司某位大佬關於程式設計心得的體會,其中講到了“測試驅動開發”,感覺自己的測試技能薄弱,因此,寫下這篇文章,希望對測試能有個入門。這段時間,筆者也體會到了測試的價值,一句話,學會測試,能夠讓你的開發更加高效。   本文將介紹以下兩個方面的內容: - Test with Coverage -