Unity3D实习生面试题总结-Unity引擎相关

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

原文地址:https://www.cnblogs.com/errornull/p/10049703.html