【发布时间】:2015-09-02 02:26:02
【问题描述】:
最近在我的 Unity 项目中,我发现要创建一个更加模块化的应用程序,在一个包含对所创建的所有或部分对象的引用的类中拥有一个静态 List 会有所帮助,以便可以从其他部分轻松访问它们的程序。下面是一个例子:
private static List<Canvas> availableCanvases = new List<Canvas>();
void Start () {
availableCanvases.Add(this);
}
public static void AddComponentToCanvas(Transform component) {
for (int i = 0; i < availableCanvases; i++) {
//Make sure the canvas still exists
if (availableCanvases[i] != null) {
component.SetParent(availableCanvases[i]);
return;
} else {
availableCanvases.RemoveAt(i);
i--;
}
}
//Reached if no canvas found
//Create new canvas or create error etc...
}
这只是允许在运行时实例化的对象将自己添加到可用画布中,而无需通过 findWithTag 或 findWithType 方法访问它,如果使用过多会损害性能。
这是不好的做法还是好的做法?我的同事认为这代表了单例编程,但它当然不是,因为它允许多个对象存在和使用。
【问题讨论】:
-
我不明白你的情况,为什么
availableCanvases永远是null? -
更新到正确的条件 if (availableCanvases[i] != null)
-
“但它当然不会,因为它允许多个对象存在和使用。” - 不,我想你会找到你的“同事”想说的是
availableCanvases本质上是作为包含类范围内的singleton,不是包含在availableCanvases中的项目。跨度>