Unity—脚本生命周期

今天学习了unity脚本的基础知识,路漫漫其修远,吾将上下而求索!

每日一句:远征星辰大海,归来仍是少年,知足且坚定,温柔且上进

目录

语法结构:

脚本生命周期(必然事件/消息)

初始阶段

物理阶段

游戏逻辑

输入事件

场景渲染

结束阶段

调试方法


脚本是附加在游戏物体上用于定义游戏对象行为的指令代码

语法结构:

Using 命名空间;

Public class类名:MonoBehaviour

{

void 方法名()

{

Debug.Log(“调试显示信息”);

Print(“本质就是Debug.Log方法”);

}

}

·文件名与类名必须一致

·写好的脚本必须附加到物体上才执行

·附加到游戏物体的脚本类必须从MonoBehaviour类继承

做一个脚本往物体上一挂,就会创建一个对象,会把脚本的类的对象的引用交给GameObject对象里边去存储

在物体上运行的东西都是对象,物体是GameObject类的对象

Unity—脚本生命周期_第1张图片

没有继承MonoBehaviour,不需要往物体上挂的用C#类:字段、属性、构造函数、方法;写脚本用:字段、方法

方法访问对象

[SerializeFild]//序列化字段,作用:在编译器中显示私有变量

Private int a=100;

需求:希望在别的类里能访问它,但不希望在编译器中能改(看)它

[HideInInsperctor]//作用;在编译器中隐藏字段

Public int b;

[Range(0,100)]

Public int c;

//属性:在编译器中不能显示,通常脚本不写

//不要在脚本中写构造函数(不要访问unity提供的那些功能,因为不能在子线程中访问主线程成员)

脚本生命周期(必然事件/消息)

Unity脚本从唤醒到销毁的过程

当满足某种条件unity引擎自动调用的函数

初始阶段

·Awake唤醒

当物体载入时立即调用一次,常用于在游戏开始前进行初始化,可以判断当满足某种条件执行此脚本this.enable:true

执行时机:创建游戏对象执行

OnEnable当可用

每当脚本对象启用时调用

·Start开始

物体载入且脚本对象启用时被调用一次,常用于数据或游戏逻辑初始化,执行时机晚于Awake

unity加载时把所有物体的Awake执行一遍,再执行所有物体的Awake

物理阶段

·Fixed Update 固定更新

脚本启用后,固定时间被调用,适用于游戏对象做物理操作,如移动

执行时机:每隔固定时间执行一次

适用性:适合对物体做物理操作(移动、旋转…),不会受到渲染影响

渲染时间不固定(因为每帧渲染量不同、机器性能不同)

·OnCollisionXXX碰撞

当满足碰撞条件时调用

·OnTriggerXXX触发

当满足触发条件时调用

游戏逻辑

·Update更新

脚本启用后,每次渲染场景时调用,频率与设备性能及渲染量有关

·LateUpdate延迟更新

在Update函数被调用后执行,适用于跟随逻辑

输入事件

OnMouseEnter鼠标移入

鼠标移入到当前Collider时调用

OnMouseOver鼠标经过

鼠标经过到当前Collider时调用

OnMouseExit鼠标离开

鼠标离开到当前Collider时调用

OnMouseDown鼠标按下

鼠标按下到当前Collider时调用

OnMouseUp鼠标抬起

鼠标抬起到当前Collider时调用

场景渲染

·OnBecameVisible当可见

当Mesh Renderer在任何相机上可见时调用

·OnBecameInVisible当不可见

当Mesh Renderer在任何相机上都不可见时调用

结束阶段

OnDisable当不可用

对象变为不可用或附属游戏对象非激活状态时此函数被调用

OnDestroy当销毁

当脚本销毁或附属的游戏对象被销毁时调用

OnApplicationQuit当程序结束

应用程序退出时被调用

调试方法

(逻辑简单调试)

  1. 控制台调试

Debug.Log(变量);printf(变量);(区别:printf继承了Monobehaviour类)

     2.定义公有变量,程序运行后在检测面板查看数据

Unity—脚本生命周期_第2张图片

 

 

你可能感兴趣的:(UNITY基础,unity,c#,游戏引擎)