Heyo。首先,如果我问一些非常简单的话,我很抱歉。它已经让我坚持了一两天,我找不到任何涵盖我正在尝试做的教程。
我有一组立方体,它们必须容纳一些游戏对象,以及一个显示该对象的重要程度以及它将在称为“分辨率顺序”的内容中出现的位置。这一切都很好。
CubeContents类:
public class CubeContents : IComparable<CubeContents>{
public GameObject objectType;
public int resolutionOrder;
public CubeContents (GameObject name, int importance){
objectType = name;
resolutionOrder = importance;
}
public int CompareTo(CubeContents other){
if(other == null)
return 1;
return resolutionOrder - other.resolutionOrder;
}
我正在使用的方法将特定游戏对象传递给多维数据集,并使用此代码将其添加到数组中:
public void newArrival(GameObject incoming){
int importance = discoverImportanceOfObject (incoming);
thisContents.Add (new CubeContents (incoming, importance));
thisContents.Sort ();
}
discoverImportanceOfObject基本上是一个很长的“else if”语句列表,它返回一个我用来命令这些东西的数字。我遇到的问题是当我在销毁之前尝试从数组中删除此对象时。这段代码基本上看起来完全没有响应,但它编译并运行得很好。没有奇怪的错误信息,没有。
public void leavingObject(GameObject leaving){
int importance = discoverImportanceOfObject (leaving);
thisContents.Remove (new CubeContents (leaving, importance)));
thisContents.TrimExcess ();
}
我完全不知道为什么会这样。我尝试了各种各样的东西(IndexOf,然后是一个RemoveAt,将整个数组归零,然后根据碰撞器重建它......)
这只是感觉就像它是一个我完全忽略的简单修复,但因为我没有搜索错误消息,或任何其他类型的跳跃点,我有点卡住了......
答案 0 :(得分:3)
此对象不存在......
thisContents.Remove (new CubeContents (leaving, importance)));
相反,遍历thisContents集合以找到与“leave”和“important”匹配的对象。然后删除该对象。