我尽可能地简化情况:
第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
这种解决方案非常理想.
编辑:谁说你不能在统一中使用属性?