首先获得了两个List,分别是 List<GameObject>和List<Transform>。
private List<GameObject> targetObjectsList=new List<GameObject>();
private List<Transform> targetObjectsTransformList= new List<Transform>();
private void GetEnemyTargetList()
{
if (tag == "Side1")
{
targetObjectsList.AddRange(GameObject.FindGameObjectsWithTag("Side2"));//添加数组Arr1
}
else if (tag == "Side2")
{
targetObjectsList.AddRange(GameObject.FindGameObjectsWithTag("Side1"));//添加数组Arr1
}
for (int i = 0; i < targetObjectsList.Count; i++)
{
targetObjectsTransformList.Add(targetObjectsList[i].transform);
}
Debug.Log("Objects:Start:GetEnemyTargetList::targetObjectsList.Count=" + targetObjectsList.Count+ "targetObjectsTransformList=" + targetObjectsTransformList.Count);
}
获得了相应的内容后想在KillObject方法中去除掉相应的对象,代码如下。
public virtual void KillObject()
{
if (HP <= 0)
{
targetObjectsList.Remove(gameObject);
targetObjectsTransformList.Remove(gameObject.transform);
Destroy(gameObject);
Destroy(GetHPGameObject(gameObject));
}
}
但是Remove经过测试没有效果,用IndexOf(gameObject)发现是-1。原因可能是网上说的平等性原则。
所以必须使用targetObjectsList.RemoveAt(1)。这里经过测试可以使用。