前言
又新开一个坑,这个系列主要是记录Unity的干货,就不像之前那几个有点口水话了233 当然我会改正
时隔半个月 经历了开学 换教室等等一系列杂七杂八的事情也算步入正轨了~
没杂七杂八的介绍什么,不水字数,直接开干!(暴论)
一、生命周期
编写顺序会严格按照真实的生命周期顺序 自上而下 具体图片请baidu
1. Editor (编译)
变量声明赋值
变量最终的值只看最后调用的方法,因为会逐步覆盖
变量声明并直接赋值>>检视面板赋值>>Awake>>OnEnable>>Start>>外部赋值(在其他脚本调用变量赋值)
我们一般对一个对象赋值,或者说想要从外部一个对象的属性或者成员变量的值进行更改的前提是:这个对象已经有了(意味着已经初始化Strart方法已经调用)所以外部赋值会后语Start方法进行调用
Reset()(重置)
初始化数值 用于角色等信息更改后初始化
- 调用情况 此函数只能在编辑器模式下(不运行)调用
- 调用时间,次数与作用 当脚本第一次挂载到对象或者使用了Reset命令之后调用。 来初始化脚本的各个属性,Reset方法最常用于在检视面板中提供良好的默认值
- 使用* 将脚本挂在物体上* 点击脚本右上角三个点 点击Reset 即可执行Reset命令,一般用于重赋值
2. Initialization (初始化)
Awark()(唤醒)
从非激活状态转激活状态会调用一次 创建游戏物体后会调用一次 场景启动会调用一次
- 调用情况* 在加载场景时初始化包含脚本的激活状态的GameObject时* GameObject从非激活转变为激活状态* 在初始化使用Instantite创建的GameObject之后
- 调用时间,次数与作用* 在脚本实例的生存期内,Unity仅调用Awake-次。脚本的生存期持续到包含它的场景被卸载为止。* Unity调用每个Game0b ject的Awake的顺序是不确定的,人为干涉(即设计)来保证程序的正确性和稳定性* Awake 来代替构造函数进行初始化,在Unity这里,组件的初始化不使用构造函数
OnEnable (激活)
游戏物体被激活 调用
脚本组件被激活 调用
- 调用情况* 游戏物体被激活* 脚本组件被激活
- 调用时间,次数与作用* 重复赋值 变回初始状态
Start()(开始)
只会在首次和初次调用,且仅调用一次
- 调用情况* 游戏物体被激活* 脚本组件被激活
- 调用时间,次数与作用* 在脚本实例激活时在第一帧的Update之前被调用* 后与 Awake 执行,方便控制逻辑的前后调用顺序