【问题标题】:Unity: Singleton script needs to be re-attached to gameobject on Editor relaunch to avoid null error?Unity:单例脚本需要在编辑器重新启动时重新附加到游戏对象以避免空错误?
【发布时间】:2023-01-06 23:14:45
【问题描述】:

我的单例类脚本有问题,希望得到您的帮助。

该脚本最终可以运行,但每次我启动 Unity Editor 时,我都需要删除脚本并将其重新附加到我的游戏对象,以避免空异常错误:

NullReferenceException: Object reference not set to an instance of an object

任何想法为什么?我在想我没有正确初始化,但不知道从那里去哪里。

这是作为组件附加的简化单例代码:

 using UnityEngine;
 
 public class Conductor : MonoBehaviour
 {
 
     public static Conductor Timing { get; private set; }
 
     [SerializeField] private double bpm;          // beats per minute
 
     private void Awake()
     {
         if (Timing != null && Timing != this)
             Destroy(this);
         else
             Timing = this;
     }
 
     public double Bpm
     {
         get { return bpm; }
         set
         {
             bpm = value;
         }
     }
 }

我在另一个脚本中调用代码如下,例如

Conductor.Timing.Bpm;

提前致谢!

最好的,罗伯

【问题讨论】:

  • 其他脚本.. 是编辑器脚本吗?否则,如果这是在运行时,我不明白为什么它不应该工作..如果其他脚本Awake在此脚本之前执行,则可能执行顺序问题除外......

标签: c# unity3d singleton nullreferenceexception


【解决方案1】:

我在发布问题 1 分钟后找到了答案,哈哈:

[始终执行]

在班级的顶部似乎解决了它。我也把有问题的脚本放在脚本执行顺序的默认执行时间之前

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2014-02-24
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多