Ⅰ unity3d,invoke函数 只能在 脚本的生命周期里的(Start、Update、OnG
Invoke() 方法是 Unity3D 的一种委托机制
如: Invoke("SendMsg", 5); 它的意思是:5 秒之后调用 SendMsg() 方法;
使用 Invoke() 方法需要注意 3点:
1 :它应该在 脚本的生命周期里的(Start、Update、OnGUI、FixedUpdate、LateUpdate)中被调用;
2:Invoke(); 不能接受含有 参数的方法;
3:在 Time.ScaleTime = 0; 时, Invoke() 无效,因为它不会被调用到
Invoke() 也支持重复调用:InvokeRepeating("SendMsg", 2 , 3);
这个方法的意思是指:2 秒后调用 SendMsg() 方法,并且之后每隔 3 秒调用一次 SendMsg () 方法。(转载自http://blog.csdn.net/jeksonal/article/details/8609143)
Ⅱ unity物理更新一般放在哪个系统函数里
在编程之前首先你要向 GameObject 中增加一个 Rigidbody 的部件。 Rigidbody(刚体)的成员函数 void MovePosition(Vector3 position) 是用来改变刚体对象的 transform.position 值的,而且是“瞬间”改变到新的位置,而不是“逐渐移动过去”。如果它的新位置上有碰撞器,那么会在下一次进入 Update 时立即对刚体应用受力。在新旧两个位置之间的其它刚体不会受到它移动的影响(因为它是瞬间穿过去的)。 所以经常把 rigidbody.MovePosition 放到物理帧更新的函数 FixedUpdate,让它步进移动,这样就会碰撞一路上的其他碰撞体而不是穿越过去。例子: 12345678public class ExampleClass : MonoBehaviour{ private Vector3 speed = new Vector3(3, 0, 0); void FixedUpdate() { rigidbody.MovePosition(rigidbody.position + speed * Time.deltaTime); }} 表示每秒向X轴正向移动3个单位,并应用受力。
Ⅲ Unity3D之常用生命周期
关于Unity的生命周期虽然经常调用,但还是有一些细节总是记不清楚。今天就索性全部记录下来,后续遇到再补充。
1、Awake() 唤醒事件,只执行一次。最先调用。
2、OnEnable() 开启事件,当脚本组件被启用的时候执行一次。
3、Start() 开始事件,只执行一次。在Awake()之后执行。
4、FixedUpdate() 固定更新事件,0.02秒更新一次。所有物理组件的相关的更新都在这个事件当中处理。
5、Update() 每帧执行一次(即每渲染完一次),没帧渲染的时间不固定。
6、LateUpdate() 稍后更新事件,在Update()之后完毕之后再更新。
注意:虽然官方介绍LateUpdate() 在Update()之后更新,但我实际使用时,发现LateUpdate() 是在Update()之前调用,并且执行次数比Update()事件还多一次。
7、OnDisable() 禁用事件。执行一次,在OnDestroy()事件前执行。或者当前该脚本组件被禁用后,也会触发该事件。
8、OnDestroy() 摧毁事件,执行一次。当脚本所挂载的游戏物体被摧毁时执行。
注意生命周期事件由系统调用,自行调用,与我们的书写顺序无关。
本文旨在纪录自己的一些经验,欢迎大家交流学习。
Ⅳ unity3d Update和FixedUpdate的区别
今天有人问我问什么我在处理物理逻辑的时候把代码放在了FixedUpdate里,而不用Update?
我说下他们的区别吧,知道了各自的特点,就知道原因了。
Update() 和 FixedUpdate()在游戏中都会在更新的时候自动循环调用。
但是Update是在每次渲染新的一帧的时候才会调用,也就是说,这个函数的更新频率和设备的性能有关以及被渲染的物体(可以认为是三角形的数量)。在性能好的机器上可能fps 30,差的可能小些。这会导致同一个游戏在不同的机器上效果不一致,有的快有的慢。因为Update的执行间隔不一样了。
而FixedUpdate,是在固定的时间间隔执行,不受游戏帧率的影响。有点想Tick。所以处理Rigidbody的时候最好用FixedUpdate。
PS:FixedUpdate的时间间隔可以在项目设置中更改,Edit->Project Setting->time 找到Fixed timestep。就可以修改了。
Ⅳ unity3d里的update函数问题
这个貌似可以将程序设置为后台运行,这样可以实现切到其他窗口也继续运行。
但是这个效果其实不是很好用,有时候切出去会运行不了。
Application .runInBackground = true;设定后台也运行。