目录
1 初始的C# 脚本
1.1 初始的C# 脚本
1.2 创建时2个默认的方法
2 常用的几个生命周期方法
2.1 脚本的生命周期
2.1.1 其中FixedUpdate 方法 的时间间隔,是在这设置的
2.2 c#的基本语法别搞混
2.2.1 基本的语法
2.2.2 内置的方法名,要求更严格
2.3 gameobject 挂上脚本
2.4 测试 Awake 和 OnEnable 和 Start方法
2.4 测试这几个全部方法
3 unity 使用这些脚本的逻辑
4 project setting / scripts order修改执行次序
1 初始的C# 脚本
1.1 初始的C# 脚本
下面这个C# 脚本是我刚刚unity里创建的test1.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test1 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
1.2 创建时2个默认的方法
- 应该是因为最常用吧
- void Start() {} 方法, 开始时执行,
- void update() {} 方法,每帧执行1次
2 常用的几个生命周期方法
2.1 脚本的生命周期
- Awake: 最早调用,只会执行1次
- OnEnable:组件激活后使用,在awake后会执行1次,而且可能会反复执行多次
- Start:在onEnable, 且一定在update 前执行1次
- Update:每帧执行1次,理论上帧数越快执行的越快
- LateUpdate:update后紧接着执行1次
- FixedUpdate: 只和时间相关,固定间隔时间执行1次,与机器性能无关
- OnDisable:组件不被激活时使用1次,而且可能会反复执行多次
- Destory:组件被从gameobject上拿掉,销毁,之后调用1次
2.1.1 其中FixedUpdate 方法 的时间间隔,是在这设置的
2.2 c#的基本语法别搞混
2.2.1 基本的语法
- 每句话后面要加;
- 严格的大小写,Awake 不能写成 awake,否则不生效
- 比如debug.log("") 是错误的,应该是Debug.Log("")
2.2.2 内置的方法名,要求更严格
- 因为这是系统的内置方法,方法名是内置好的,必须按系统的大小写。C#严格些
2.3 gameobject 挂上脚本
- 在project里创建1个脚本
- 然后挂到一个gameobject上才行
2.4 测试 Awake 和 OnEnable 和 Start方法
- 勾选掉 会导致 OnEnable被反复执行
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test1 : MonoBehaviour
{
void Awake()
{
Debug.Log("awake");
}
void OnEnable()
{
Debug.Log("onEnable");
}
void Start()
{
Debug.Log("Start");
}
}
2.4 测试这几个全部方法
- 下面是全部的脚本
using System.Collections; using System.Collections.Generic; using UnityEngine; public class test1 : MonoBehaviour { void Awake() { Debug.Log("awake"); } void OnEnable() { Debug.Log("onEnable"); } // Start is called before the first frame update void Start() { Debug.Log("Start"); } // Update is called once per frame void Update() { Debug.Log("Update"); } void LateUpdate() { Debug.Log("LateUpdate"); } void FixedUpdate() { Debug.Log("FixedUpdate"); } void OnDisable() { Debug.Log("OnDisable"); } void Destory() { Debug.Log("Destory"); } }
反复勾选,脚本前面的勾,可以反复触发 OnEnabel 和 OnDisable
3 unity 使用这些脚本的逻辑
- step1: (按优先级 )先执行所有脚本的的awake 方法
- step1: (按优先级 )先执行所有脚本的的start方法
- 。。。
4 project setting / scripts order修改执行次序
- project setting / scripts order修改执行次序
- 如果有多个脚本
- 需要调整其执行次序
- 这里点add,
- 然后可以拖动其次序,或者修改值
- 值越小越靠前