Unity组件删除和添加
//添加 GameObect.AddComponent<ScriptName>(); //删除 Destroy(GameObect.GetComponent<ScriptName>());
Unity3d获取游戏对象的几种方法
GameObject.Find();
Tranform.Find();
GameObject.FindGameObjectWithTag();
Unity3d中的碰撞器和触发器的区别
碰撞器有碰撞的效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数;
触发器没有碰撞效果,IsTrigger=true,可以调OnTriggerEnter/Stay/Exit函数。
Unity3d脚本声明周期
First Scene Load 第一个场景加载
Awake:这个函数是在Start函数之前以及预制物体实例化后被调用。
OnEnable:(仅在对象激活状态下可用):这个函数在对象可用之后被调用。
Before the first frame update 第一帧更新之前
Start:如果脚本实例化被启用,则Start函数在第一帧更新之前被调用。
In between frames 执行期间
FixedUpdate: FixedUpdate()比Update()函数调用的更频繁。当帧率比较低时,它每帧被调用多次,如果帧率比较高,它有可能就不会被调用。所有的物理计算和更新都立即发生在FixedUpdate()之后。当在FixedUpdate()中计算物体移动时,你不需要乘以Time.deltaTime。因为FixedUpdate()是基于可靠的定时器的,不受帧率的影响。
Update() 每帧调用一次。这是帧更新的主要函数。
LateUpdate: 在Update()执行后,LateUpdate() 也是每帧都被调用。在Update()中执行的任何计算都会在LateUpdate()开始之前完成。LateUpdate()的一个常见应用就是第三人称控制器的相机跟随。如果你把角色的移动和旋转放在Update()中,那么你就可以把所有相机的移动旋转放在LateUpdate()。这是为了在相机追踪角色位置之前,确保角色已经完成移动。
Coroutine 协同程序(协程)
yield:协程在所有的Update函数于下一帧调用后继续执行。
yield WaitForSeconds(2):在一个指定的时间延迟后继续执行,在所有的Update函数被调用之后。
yield WaitForFixedUpdate():在所有脚本上所有的FixedUpdate被调用之后继续执行。
When the Object is Destroyed 当对象被销毁时
OnDestroy: 这个函数在所有帧更新之后被调用,在对象存在的最后一帧(对象将销毁来响应Object.Destroy或关闭一个场景)。
When Quitting 当退出时
OnApplicationQuit:在应用退出之前所有的游戏对象都会调用这个函数。在编辑器中当用户停止播放时它将被调用。在webplayer中,当网页关闭时被调用。
OnDisable: 当行为不可用或非激活时,这个函数被调用。
Unity物体之间的通信
委托和事件的用法
http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html