当前位置: 首页 > news >正文

Unity核心概念②:帧、生命周期函数

一、帧

游戏的本质就是一个死循环,每一次循环处理游戏逻辑就会更新一次画面。之所以能看到画面在动
是因为切换画面的速度到达一定时,人眼就认为画面是流畅的。一帧就是执行一次循环。

FPS (Frames Per Second)即每秒钟帧数,一般我们说60帧30帧意思是1秒更新60次和30次画面。

1s = 1000ms  

60帧:1帧为1000ms/60=16.66ms

30帧:1帧为  1000ms/30=33.33ms

人眼最舒适放松时可视帧数量每秒24帧。

游戏卡顿的原因

1.显卡负责渲染画面,当游戏画面过于复杂,显卡处理不过来时,就会出现帧数下降。

2.跑1帧的游戏逻辑计算量过大,CPU性能不够,不能再一帧的时间内处理完所以游戏逻辑。

二、生命周期函数

1.概念

所有继承MonoBehavior的脚本,最终都会挂载到游戏对象(GameObject)上。生命周期函数就是该脚本依附的游戏对象从出生到消亡的整个生命周期中会通过反射自动调用带的一些特殊函数。Unity会帮助我们记录一个游戏对象依附了哪些脚本,会自动得到这些对象,通过反射去执行一些固定名字的函数。

2.结构

3.语法

注意:生命周期哦函数访问修饰符一般为private和protected。不需要自己在外部调用生命周期函数,Unity会自己调用。

 在Unity中打印信息的两种方式:在没有继承MonoBehavior的情况下

 Debug.Log();Debug.LogError();//出错Debug.LogWarning();//警告

继承了MonoBehavior的情况下的线程方法:

print("");

①Awake函数

当对象(自己这个类的对象)被创建时才会调用该生命周期函数。

 private void Awake(){}

②Start函数

主要作用与初始化信息,但是它比Awake函数执行的要晚一点,它是在对象进行一次帧更新之前才会执行的。

 private void Start(){}

③FixedUpdate函数

进行与物理引擎相关的计算和操作。它的调用间隔是固定的,不受游戏帧率(FPS)波动的影响。

 private void FixedUpdate(){}

④Update函数

主要用于处理游戏核心逻辑更新的函数,包含所有需要每帧持续执行的操作。

private void Update()
{}

⑤LateUpdate函数

LateUpdate函数的设计初衷是为了解决执行顺序依赖问题。它在一帧中所有Update函数执行完毕之后才被调用。主要用来处理摄像机位置更新相关内容。

 private void LateUpdate(){}

⑥OnDisable函数

如果我们希望在一个对象失活时进行一些处理,就可以在该函数中编写逻辑。

 private void OnDisable(){}

⑦OnDestroy函数

当一个游戏对象(GameObject)被销毁(Destroyed)之前自动调用该方法。它本质上是对象的“析构函数”或“清理函数”,提供了一个执行最终操作的机会。

private void OnDestroy()
{}

4.提示

这些生命周期函数,如果不打算在某个函数中编写逻辑,就没有必要写这个函数,因为在执行时会占用内存。

http://www.xdnf.cn/news/1415125.html

相关文章:

  • 【开题答辩全过程】以 基于微信小程序的教学辅助系统 为例,包含答辩的问题和答案
  • SAP报工与收货的区别(来自deepseek)
  • Library cache lock常见案例分析(二)
  • 技能补全之Python操作MongoDB
  • 基于FOA与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 订单后台管理系统-day05用户模块查看与删除
  • Kubernetes 存储
  • 【语法】C++的异常
  • IIC接口的mpu6050六轴模块(8针脚)引脚使用说明
  • Java中的异常,枚举,泛型,代理
  • 单表查询-group by rollup优化
  • 责任链模式实践-开放银行数据保护及合规
  • 一键获取电商平台商品原数据:item_get_app接口实操讲解
  • [Plecs基础知识系列]建立自定义模块/子系统(Subsystem)
  • 基于路测点云标注生成OpenDrive地图的全流程解析
  • 微服务01
  • Spring Cloud Alibaba Seata 分布式事务(六)
  • 索引性能分析
  • 【开题答辩全过程】以 基于SSM的拾光咖啡厅管理系统的设计与实现为例,包含答辩的问题和答案
  • Nano Banana:下一代AI图像创作与编辑指南
  • Linux网络编程04:网络基础(万字图文解析)
  • AFSIM仿真脚本生成(三)脚本解析技术加速验证过程
  • 有关指针的认知盲区:指针大小,决定因素,指针变量
  • EtherCAT主站IGH-- 44 -- IGH之slave_config.h/c文件解析
  • 目标检测算法YOLOv4详解
  • Langchain指南-关键特性:使用聊天模型调用工具
  • 用 MATLAB 实现遗传算法求解一元函数极值:从代码到实践
  • STL常见容器介绍
  • 从RNN到Transformer
  • @Transactional如何对分布式事务生效