C# 初始化对象在OnAwake和OnEnable()之间变为null
我遇到了一个我不理解的奇怪问题,导致C# 初始化对象在OnAwake和OnEnable()之间变为null,c#,unity3d,C#,Unity3d,我遇到了一个我不理解的奇怪问题,导致null引用 当我尝试在OnAwake()中初始化一个对象,然后在OnEnable()中使用它时,它现在是null NullReferenceException:对象引用未设置为 对象tempMovement.oneable() 代码如下: (tempmotation.cs) 我想这与你的MonoBehavior对象还没有被创建有关。 请看一下订单: 唤醒:此函数总是在任何启动函数之前调用,也总是在预设之后调用 是实例化的。(如果游戏对象在启动过程中处于非活动
null
引用
当我尝试在OnAwake()
中初始化一个对象,然后在OnEnable()
中使用它时,它现在是null
NullReferenceException:对象引用未设置为
对象tempMovement.oneable()
代码如下:
(tempmotation.cs)
我想这与你的MonoBehavior对象还没有被创建有关。 请看一下订单: 唤醒:此函数总是在任何启动函数之前调用,也总是在预设之后调用 是实例化的。(如果游戏对象在启动过程中处于非活动状态,则在激活之前不会调用唤醒。) OnEnable:(仅当对象处于活动状态时调用):此函数在对象启用后立即调用。这发生在创建MonoBehavior实例时,例如加载关卡或游戏对象时 使用脚本组件进行实例化 我将把代码放在OnEnable中的Start方法中
void Start(){testing1.printx();}
我也有同样的问题,你解决了吗?
public class tempMovement : MonoBehaviour
{
temp testing1;
void onAwake()
{
testing1 = new temp();
testing1.printx(); <-- this works
}
private void OnEnable()
{
testing1.printx(); <-- doesn't work
}
}
public class temp
{
int x = 5;
public void printx()
{
Debug.LogError(x);
}
public temp()
{
Debug.LogError("temp init");
}
}