我尽可能地简化情况:
第1课:
public class GameFlowManager {
public float worldSpeed;
}
第2课:
public class Clouds {
void MoveClouds(float worldSpeed){...}
我需要从worldSpeed
访问Clouds
哪种方式更有效?
GameFlowManager gfm = FindObjectOfType<GameFlowManager>()
然后通过指针访问变量(我知道它不是真的
指针,但它的目的是相同的) gfm.worldSpeed
worldSpeed
的课程?这样我就不用了
变量public。现在这只是为了统一,当我不能使用属性时。在简单的C#代码中,我可以使用getter而不会产生任何后果,对吗?
答案 0 :(得分:2)
对于以“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
此解决方案非常理想。
编辑:谁说你不能在统一中使用属性?