c# – 当另一个类变量发生变化而不是直接访问变量时,使用事件会更有效吗?安全怎么样?物业怎么样?

我尽可能地简化情况:

第1类:

public class GameFlowManager { 
    public float worldSpeed;
}

第2课:

public class Clouds {
    void MoveClouds(float worldSpeed){...}

我需要从Clouds访问worldSpeed.
哪种方式更有效?

>使用GameFlowManager gfm = FindObjectOfType< GameFlowManager>()
然后通过指针访问变量(我知道它不是真的
指针,但它的目的是相同的)像这样:gfm.worldSpeed
>或者我应该使用一个事件,它调用一个setter函数
需要worldSpeed的类?这样我就不用了
变量public.

现在这只是为了统一,当我不能使用属性时.在简单的C#代码中,我可以使用getter而不会产生任何后果,对吧?

最佳答案 对于以“Manager”结尾的所有内容(意味着可能只有一个),您应该使用Singleton模式,如下所示:

class GameFlowManager
{
    public static GameFlowManager Instance {get; private set;}

    public float worldSpeed{get; set;} // You could make the setter private to prevent other classes from modifying it if necessary

    void Awake()
    {
        Instance = this; // Note that this requires an object of type GameFlowManager to already exist in your scene. You could also handle the spawning of this object automatically to remove this requirement.
    }

    ...
}

然后,只要您需要此类中的值,您就可以:

GameFlowManager.Instance.worldSpeed

这种解决方案非常理想.

编辑:谁说你不能在统一中使用属性?

点赞