目录
-
一、 基础知识
-
1. 定义
- 附加在游戏物体上用于定义游戏对象行为的指令代码
- 脚本就是一个类,向物体一挂就是创建一个对象
-
2. 要求
- 使用命名空间
- 附加到游戏物体的脚本类必须从MonoBehaciour类继承
- 文件名必须和类名一致
- 写好的脚本必须附加到物体才能运行
-
3. 编译运行过程
- 源代码-(CLS)->中间语言--(Mono Runtime)->机器码
-
4. 小知识点
- 物体是GameObject的对象
- 脚本一般写字段和方法
- 不写属性(在编辑器无法显示)
- 不写构造函数(不能在子线程中访问主线程)
- 输出到控制台
- Debug.Log(“ ”)
- 如果有个组件需要重复使用
- 可以从层级面板移到项目面板做个预制件
- 预制件加粗字体不随预制件修改修改
-
-
二、 脚本生命周期
-
1. 名称
- 也叫必然事件、消息 Message
- 想要找必然事件,可以再unity手册搜索MonoBehaviour(脚本的父类)
- 执行顺序搜索脚本生命周期来看
- 也叫必然事件、消息 Message
-
2. 小方法
- 序列化字段
- [SerializeField]
- 写在字段上边
- 作用:在编辑器显示私有变量
- [SerializeField]
- 隐藏字段
- [HideInInspector]
- 限制范围
- [Range(0,100)]
- 限制到0到100
- [Range(0,100)]
- 序列化字段
-
3. 初始阶段
- Awake
- 执行时机:创建游戏对象后 立即执行1次
- 脚本禁用也会执行
- private void Awake(){}
- 优先于Start
- 两个物体同时挂脚本,也是Awake先执行
- 作用:初始化
- 代替构造函数
- 执行时机:创建游戏对象后 立即执行1次
- Start
- 执行时机:创建游戏对象后 脚本启动后 执行1次
- private void Start(){}
- 作用:初始化
- 代替构造函数
- OnEnable
- 每当脚本对象启动时调用
- private void OnEnable
- Awake
-
4. 物理阶段
- FixedUpdate
- 执行时间:脚本启动后,固定时间被调用
- 更新频率默认0.02s
- 适用于对游戏对象做物理操作
- 物体运动、移动、旋转
- 因为时间固定 所以不会受到渲染影响
- 渲染时间不固定(每帧渲染量不同、机器性能不同)
- FixedUpdate
-
5. 游戏逻辑
- Update
- 执行时间:渲染帧执行
- 执
- Update
-