Unity问答

Unity3D教程:工具列选单处理

Posted on 2013年04月16日 by U3d / Unity3D 基础教程 /被围观 1,901 次

一般使用Unity3D主要是用来制作Client内容播放与操作,但制作游戏或任何系统软体,比较少被注意到却很重要的就是编辑或後端工具,虽然 Unity 编辑器本身就很强大且方便了,但有时候还是有些客制化需求,希望能更方便於我们制作及设置游戏,所以Unity的Script除了有运作游戏内容的Runtime Classes之外还有 Editor Classes,它其中一个功能就是可以让我们自订工具列选单,选单命令的动作就像我们平常撰写script 一样,相当方便。

通常我们自己建立的class只要是继承MonoBehaviour,都会自动在工具列中的Component/Scripts出现,如果为class加上

   
01
AddComponentMenu则可以为此class定义它在Component选单内的路径,如下所示:
02
 
03
//Javascript 
04
@script AddComponentMenu ("MyScripts/My Unity Script")
05
class MyUnityScript extends MonoBehaviour {
06
.....
07
}
08
 
09
// C#
10
[AddComponentMenu("MyScripts/My C# Script")]
11
public class MyCSharpScript : MonoBehaviour{
12
.....
13
}

其实Javascript部份的写法不需要特别宣告class继承MonoBehaviour,因为Unity在编译时会自动为Javascript处理这个部份,所以只要在程式档内找个地方插入 AddComponentMenu 那一行就可以了。

这种自订工具列选单的方式只是运用在为物件加入Component,如果我们在编辑游戏时,常有一连串动作需要常常重复操作,此时就能利用Editor Classes的MenuItem另外自订工具列选单做为执行命令,制作重点及步骤如下:

1.在Project视窗任意路径建立名为 Editor 的目录。

2.在Editor目录内建立新的script档。

3.如果是使用C#请记得using UnityEditor;。

4.给工具列选单呼叫的method必须为static。

5.在被呼叫执行的method上一行加入MenuItem,Javascript的写法为@MenuItem(“选单路径字串”),C# 的写法[MenuItem (“选单路径字串”)]

6.视需求为自订选单命令加入快捷键,在[选单路径字]后空一格加入参数字元,% 符号代表Ctrl键,# 符号代表Shift键,& 符号代表Alt键,_ 符号代表无功能键,例如 %&b 代表按住 Ctrl+Alt 再按 B 键可执行此选单命令。

   
1
[MenuItem("Custom Editor/Menu Test %&b")]
2
static void CustomMenuTest(){
3
....
4
}

建立自订工具列选单,如果有指定快捷键,Unity也将自动在选单项目的后面加注按键名称;接下来就能依照个人需求在点选选单时对场景中的物件或Project视窗中的资源进行各种操作,像是在场景中产生新的 GameObject 添加需要的Component并调整数据后利用此GameObject制作新的Prefab,或是在Project视窗复制多个Material并为它们个别调整设定,甚至是在硬碟的其它路径建立新的资料夹并将在Project视窗中所选择的资源做成Assetbundle储存到该资料夹中。

Unity3D教程:工具列选单处理:等您坐沙发呢!

发表评论