【Unity3D日常开发】(一)编辑器扩展
推荐阅读
一、前言
今天分享一下编辑器扩展系列。
二、正文
1、RequireComponent的使用
语法:
[RequireComponent(typeof (XXXXXX))]
其中XXXX为依赖的脚本,或者Unity组件
这样,当你挂这个脚本时,XXXX脚本也被挂上去了
当你添加的一个用了RequireComponent组件的脚本
需要的组件将会自动被添加到game object(游戏物体)
这个可以有效的避免组装错误
举个例子一个脚本可能需要刚体总是被添加在相同的game object(游戏物体)上
用RequireComponent属性的话,这个过程将被自动完成,因此你可以永远不会犯组装错误。
2、AddComponentMenu的使用
用法:[AddComponentMenu(“NGUI/Examples/cubSpin”)]
AddComponentMenu属性允许你在"Component"菜单中放置一个无论在哪的脚本,而不是仅仅在"Component->Scripts"菜单中。
3、MenuItem的使用
MenuItem的使用:在工具栏上增加新的一列
用法:如图[MenuItem(“Test/Test”)] 后面必须跟一个static的方法,需要引用头文件 using UnityEditor;
4、ContextMenu的使用
ContextMenu的使用:属性允许你去添加命令给上下文菜单
用法:
[ContextMenu(“Test”)]
public void Test ()
右键点击:会出现如图所示
5、HideInInspector的使用
用法:
[HideInInspector]
public Vector3 rotationsPerSecond = new Vector3(0f,0.1f,0f);
HideInInspector的作用:在Inspector面板中隐藏public变量
使用前:
使用后:
6、Serializable的使用
用法:
// myScale将能在Inspector中编辑
[SerializeField]
private float myScale;
7、ExecuteInEditMode的使用
ExecuteInEditMode属性的作用是在EditMode下也可以执行脚本。Unity中默认情况下,脚本只有在运行的时候才被执行,加上此属性后,不运行程序,也能执行脚本。
与PlayMode不同的是,函数并不会不停的执行。
- Update : 只有当场景中的某个物体发生变化时,才调用。
- OnGUI : 当GameView接收到一个Event时才调用。
OnRenderObject 和其他的渲染回调函数 : SceneVidw或者GameView重绘时,调用。
Awake与Start调用规则:
- Awake:加载时调用。
- Start:第一次激活时调用。
这个与运行模式下的调用规则一致。参见《unity-----函数执行顺序》。
需要注意的是,由于在两种模式下都可以运行,所有,切换模式的那一刻,得我们留意一下。
不管是从编辑模式进入运行模式,还是从运行模式进入编辑模式,unity都会重新加载资源,所以:
- 当该MonoBehavior在编辑器中被赋于给GameObject的时候,Awake, Start 将被执行。
- 当Play按钮被按下游戏开始以后,Awake, Start 将被执行。
- 当Play按钮停止后,Awake, Start将再次被执行。
- 当在编辑器中打开包含有该MonoBehavior的场景的时候,Awake, Start将被执行。
使用方法:
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class Example : MonoBehaviour {
public Transform target;
void Update() {
if (target)
transform.LookAt(target);
}
- 点赞
- 收藏
- 关注作者
评论(0)