【《游戏架构核心技术与面试精粹》 提炼总结】(二) 第二章 · 函数生命周期相关问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iceSony/article/details/83047008

本文由@唐三十胖子出品,转载请注明出处。  
文章链接:https://blog.csdn.net/iceSony/article/details/83047008

这篇文章将总结和提炼《游戏架构核心技术与面试精粹》的第二章“玩法底层”的内容。

通过这篇文章,你可以知道

1)常见的生命周期函数有哪些?不同函数的使用场景?

2)什么是游戏帧率?U3D中有几类时间?

3)事件与动画如何匹配?

4)帧同步与状态同步的优劣?

 

一.常见的生命周期函数有哪些?不同函数的使用场景?

Awake—>OnEnable–>Start—>Update—>FixedUpdate—>LateUpdate—>OnGUI—>OnDisable—>OnDestroy

Awake函数,最先执行,直到物体激活才被调用,注意这里是物体激活,脚本不激活也会调用Awake,只会调用一次

OnEnable函数,当对象变为可用或者激活状态时被调用一次

Start函数,函数仅在Update函数第一次被调用前调用。在整个生命周期中也只是被调用一次,但是和Awake不同的是,Start函数只在脚本实例被启动的时候调用

Update函数,当脚本启动之后,会在每一帧中都被调动,在这函数中可以更新游戏的状态,是游戏实现中非常常用的函数

FixedUpdate函数,该函数也是脚本启动后的每一帧都会被调用,但是与Update不同的是,FixedUpdate函数是专门用力处理Rigidbody,比如给刚体加一个力的作用。还有一个需要注意的是,FixedUpdate函数和Update函数的帧率是不一样的。受到fixedtimestep影响

LateUpdate函数,跟Update函数一样,也是每一帧都被调用。有一个特点就是,LateUpdate函数是在所有Update函数调用后才调用的,可以用于调整脚本的执行顺序。常用于摄像头

ONGUI函数,渲染和处理GUI事件的时候调用,这意味着你的OnGUI程序将会在每一帧被调用。要得到更多的GUI事件的信息查阅Event手册。如果Monobehaviour的enabled属性设为false,OnGUI()将不会被调用。

OnDisable函数,与OnEnable函数相反,OnDisable函数在对象变为不可用或者非激活状态时被调用,可以在此函数中做相关资源的释放。

OnDestroy函数,当脚本被销毁的时候被调用。

 

二.什么是游戏帧率?U3D中有几类时间?

帧率

游戏渲染一次的时间 60fps:1帧为1/60s

Time.realtimeSinceStartup:真实游戏时间线,以真实时间作为参考

TimeLine:游戏时间线,受间隔时间影响

Time.time

Time.timeScale:时间间隔为0.5则,真实时间过了2s,实际游戏中过了1s

所以我们开发中,常用timeScale*speed表达速度

注意:当你的scale调小,帧率不会改变,所以相同时间脚本会被调用多次

 

三.事件与动画如何匹配?

动画播放中伴随着其他需求,比如声音的播放,特效的创建等

在动画选项中有一项:event

注意这里的人物中要添加脚本,event function要添加对应的代码

当然了你也可以根据动画的播放时长在脚本中添加

 

4.帧同步与状态同步的优劣?

状态同步传递计算结果,帧同步传递计算数值

帧同步本地运算,所以需要注意值的精确,不同客户端之间的坐标偏移了0.01造成角色的扣血,那么不同客户端的结果也就不同

状态同步消耗的流量大,且延迟高于帧同步,不适用于moba游戏常见于mmo游戏

介绍一个概念锁帧:也就是客户端没有收到消息则不进行同步,反应的是画面不渲染

 

 

猜你喜欢

转载自blog.csdn.net/iceSony/article/details/83047008