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");
    }

}