之前创建物体的时候 一不小心把Init初始化写到start里了 产生了一个很经典的Bug 在此做个笔记加深一下影响 防止自己以后还出现这种错误
Unity为物体初始化准备了三个生命周期函数:Awake 、OnEnable 、Start
很多时候会有动态创建物体的需求 这个时候 被创建的物体的初始化工作就会变得非常重要 特别是涉及到UI管理或者数据管理单例类 很容易出现空指针异常
下面是测试创建脚本Test
public class Test : MonoBehaviour
{
void Update()
{
if(Input.GetKeyDown(KeyCode.Mouse0))
{
GameObject temp = Resources.Load("Cube") as GameObject;
print("前:");
Instantiate(temp);
print("后:");
}
}
}
Cube上挂在了一个Test2脚本
public class Test2 : MonoBehaviour
{
bool isa = true;
private void Awake()
{
print("Awake" + Time.frameCount);
}
// Start is called before the first frame update
private void OnEnable()
{
print(