unity插件开发——MenuItem

有unity中的菜单栏是我们经常使用到的地方,如下图:

MenuItem的作用就是增加一个自己的菜单

使用方法:

在工程中Assets目录下任意一个Editor目录(以后简称Editor目录,如果不存在,请自行创建)中创建任意脚本,比如我创建了叫做MenuTest .cs,双击进入代码编辑,创建一个静态函数,(代码来自官方文档http://docs.unity3d.com/Documentation/ScriptReference/MenuItem.html)如下:

public class MenuTest : MonoBehaviour {	// Add a menu item named "Do Something" to MyMenu in the menu bar.
	[MenuItem ("MyMenu/Do Something")]
	static void DoSomething () {		Debug.Log ("Doing Something...");

}

}

保存回到unity,编译好之后会发现在菜单栏上多了一个MyMenu,点击之后会出现二级选择菜单Do Something。点击Do Something会在输出窗口输出Doing Something...

是的,MenuItem的用法就是这么简单,将[MenuItem()]标签放在一个静态函数上,括号内部就是菜单层级。

要补充的是,菜单层级可以是系统自身的层级,比如Window菜单,Assets菜单等。例如

public class MenuTest : MonoBehaviour {	// Add a menu item named "Do Something" to MyMenu in the menu bar.
	[MenuItem ("MyMenu/Do Something")]
	static void DoSomething () {		Debug.Log ("Doing Something...");

}

        [MenuItem ("Assets/MyMenu")]
	static void DoSomething () {		Debug.Log ("MyMenu Click");

}

}

这样就会在系统的Assets菜单下生成一个MyMenu菜单。

对于Assets菜单,就是project窗口的右键菜单。所以,利用这个可以创建文件的右键菜单,比如创建一个xml文件等等

ok,这就是MenuItem的基本功能,再高级的用法,比如菜单的快捷键,不可用状态等,就见官网吧。

时间: 2024-10-13 11:39:26

unity插件开发——MenuItem的相关文章

unity插件开发——一个例子:简单的svn集成

在unity开发过程中,通常我们习惯性地在Windows操作系统下使用svn进行版本管理,而每次提交更新,都需要回到文件夹下的这种操作让人无法忍受.是不是可以集成svn到unity中呢?查了一圈unity store可以看到很多svn的第三方插件.考虑到我们只需要简单的功能,而且不希望加入额外复杂的代码,最后还是自己写一个插件.功能就是更新或者提交assets文件夹. 如果还没有svn对项目进行管理的,按照以下2步操作:     1.下载svn客户端,安装.     2.从svn版本库check

Unity插件开发:PrefabUtility--Prefab实例引用断开和替换

在Unity使用Prefab过程中,我们有时候需要进行Prefab实例断开引用和替换引用的需求.实现这些需求,使用到的核心的类是PrefabUtility.PrefabUtility是一个静态类,主要用于进行Prefab的相关处理. 这里主要使用以下几种方法 PrefabUtility.CreateEmptyPrefab PrefabUtility.ReplacePrefab PrefabUtility.DisconnectPrefabInstance PrefabUtility.GetPref

Unity插件开发:SerializedObject/SerializedProperty——查找引用的资源

        Unity有一个Find References in Scene功能非常好用.在Project面板中右键一个文件,选择Find References in Scene就可以在场景中找到所有存在对这个文件有引用的物体.但是很多时候,我们更加需要知道的是,这个场景里面到底引用了哪些文件,比如做优化的时候.         这里有一个插件叫做ResourceChecker,它可以列举出所有引用到的texture/mesh/mat等.但是他也有一个小小的问题,对于自定义脚本的引用没有效果

unity插件开发——AssetDatabase

AssetDatebase也是一个静态类,他的作用是管理整个工程的所有文件(一般成为“资产”).直观地说就是管理整个project窗口中的所有内容,比如,你可以增加.删除.修改文件等等. 这里有几个常常用到: CreateAsset:创建文件 CreateFolder:创建文件夹 DeleteAsset:删除文件 GetAssetPath:获取文件相对于Assets所在目录的相对位置,如“Assets/Images/test.png” LoadAssetAtPath:加载文件 Refresh:刷

unity插件开发——Selection

Selection是一个静态类,它的主要功能是获取在project窗口中鼠标选择的对象或者是inspector窗口的当前显示的对象.它的字段有 activeGameObject activeInstanceID activeObject activeTransform gameObjects instanceIDs objects transforms 其中activeGameObject和activeTransform是inspector窗口的当前显示对象对应的GameObject和Trans

Unity3D集成TortoiseSVN

无论是个人开发还是团队开发,养成好的版本管理习惯可以大大提高开发效率.常用的版本管理软件一般用SVN或者Git.尽管2者都在用,但是更加偏好SVN一些.安装TortoiseSVN就可以直接将SVN管理软件集成到Windows的Explorer中了.点击鼠标右键就会有SVN的相关菜单,可以非常方便地CheckOut项目以及Commit和Update. 在使用Unity3D开发时,目前主流的代码编辑器(IDE)都会选择Virsual Studio(VS).作为宇宙第一强大的IDE,VS自然也有SVN

Unity编辑器扩展chapter1

Unity编辑器扩展chapter1 unity通过提供EditorScript API 的方式为我们提供了方便强大的编辑器扩展途径.学好这一部分可以使我们学会编写一些工具来提高效率,甚至可以自制一些小的插件应用的项目工程中去,达到复用的目的.今天首先创建一个新场景生成的菜单项,生成的场景已经绑定好需要的游戏对象及脚本. Tips:1.官方API 2.编辑器扩展脚本都需放在Editor文件夹下,Editor的层级和数目没有要求 EditorUtil.cs :编辑器扩展类,向外部提供编辑器扩展方法

Unity 导出切片精灵

http://blog.csdn.net/akof1314/article/details/38845933 设有一张png/tga图集,导入到Unity,放置目录"Assets/Resources/UI"(UI文件夹可替换成其他的,重要的是要在"Assets/Resources/"路径下),默认为如下设置: 为了可以使用Unity自带的精灵切割,要将纹理类型改成"Sprite","Sprite Mode"改成"Mu

unity 打包AssetBundle

unity提供了assetbunlde机制,下面介绍一种方法将指定目录下的所有文件打包成AssetBundle 先说明步骤,再上代码. 步骤一.选择要打包成assetbundle的目录,本案例使用assetbundle_raw 步骤二.把要打包的资源或者目录都放到assetbundle_raw目录,资源可以是 prefab,png,fbx,font,audio,txt等. 步骤三.给assetbundle_raw目录下所有的资源文件设置assetbundle名称,如果是目录,会递归. 名称格式: