MonoBehaviour常用方法

1.Awake()

当脚本被加载后立即调用Awake方法,这个方法通常在Start()开始之前声明某些变量或者游戏的状态标记符。
Awake在MonoBehaviour声明周期内只被调用一次。
Awake在所有的对象实例化后被调用,所以脚本的一些成员,如果想在创建之后的代码中立即使用,则必须写在Awake()里面。

2.Start()

在Update方法被调用之前开始调用Start方法,Start()是在对象的第一帧时被调用,而且Start方法在整个MonoBehaviour生命周期内也只被调用一次。
Awake和Start不同的地方在于Start方法仅仅在脚本初始化后被调用,这样允许你延迟加载任何代码,直到代码真正被使用时。

3. Update()

在Start方法执行过后,游戏的每一帧都在调用此方法。

4.FixedUpdate()

Update的每一帧调用时间受当前渲染的物体影响,这与当前场景中正在被渲染的物体有关(比如人物的面数,个数等),有时快有时慢,帧率会变化,Update被调用的时间间隔就会发生变化。但是FixedUpdate则不受帧率的变化影响,它是以固定的时间间隔来被调用。
所以一些物理属性的更新操作应该放在FxiedUpdate中操作,比如Force,Collider,Rigidbody等。外设的操作也是,比如说键盘或者鼠标的输入输出Input,因为这样GameObject的物理表现的更平滑,更接近现实。
例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)

  public void FixedUpdate() 
  {
        rigidbody.AddForce(Vector3.up);
  }

FixedUpdate的时间间隔可以在项目设置中更改,Edit->Project Setting->time 找到Fixed timestep。
为了获取自最后一次调用FixedUpdate所用的时间,可以用Time.deltaTime。这个函数只有在Behaviour启用时被调用。实现组件功能时重载这个函数。

5.LateUpdate()

每一帧都在调用此方法。当每一帧的Update方法全部执行完后,此方法开始被调用。
举个例子,一个宿舍4个人,每个人的起床在update中执行,出发在某个人中的lateupdate执行,这样就可以保证每个人都起床了才会出发。

6.DontDestroyOnLoad()

进入另一个场景时,保证绑定此脚本的对象的内存不被释放掉。也就是说绑定此脚本的GameObject在下一个场景中依然存在。

7.OnGUI()

OnGUI()在每一帧被调用数次(several times),假如MonoBehaviour的enabled属性设置为false时,OnGUI()就失去作用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值