自定义列表。删除

时间:2015-04-27 17:27:40

标签: c# unity3d

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,将整个数组归零,然后根据碰撞器重建它......)

这只是感觉就像它是一个我完全忽略的简单修复,但因为我没有搜索错误消息,或任何其他类型的跳跃点,我有点卡住了......

1 个答案:

答案 0 :(得分:3)

此对象不存在......

thisContents.Remove (new CubeContents (leaving, importance)));

相反,遍历thisContents集合以找到与“leave”和“important”匹配的对象。然后删除该对象。