我做了一個目前在我的箱子對撞機中的gameObjects列表,它的工作原理。但是,當我將遊戲對象設置爲非活動狀態時,統一:如何從列表中刪除不活動的gameObject
gameObject.SetActive(false); //消除敵人
gameObject保留在List中而不被刪除。如何從另一個類的OnTriggerEnter函數的列表中刪除gameObject?
PlayerLifeClass:
private List<GameObject> ObjectsInRange = new List<GameObject>();
public void OnTriggerEnter(Collider collider)
{
if (collider.tag != "Player" && collider.tag == "Zombie")
{
ObjectsInRange.Add(collider.gameObject);
damage = ObjectsInRange.Count; //amount of zombies inside collider
//***Over here***
zombie.DamagePlayer(damage);
Debug.Log(damage);
}
}
public void OnTriggerExit(Collider collider)
{
if (collider.tag != "Player" && collider.tag == "Zombie")
{
//Probably you'll have to calculate wich object it is
ObjectsInRange.Remove(collider.gameObject);
Debug.Log(ObjectsInRange);
}
}
-
ZombieClass:
public class Zombie : MonoBehaviour
{
public int currentHealth;
private Player player;
private PlayerLifeCollider playerCollider;
public void Damage(int damageAmount)
{
//subtract damage amount when Damage function is called
currentHealth -= damageAmount;
//Check if health has fallen below zero
if (currentHealth <= 0)
{
//if health has fallen below zero, deactivate it
gameObject.SetActive(false); //***Over here***
}
public void DamagePlayer(int damage)
{
player.Life(damage);
}
}
爲什麼不只是做'摧毀(遊戲對象);' –
會破壞(遊戲對象)從列表中刪除嗎?我打算去,但後來我被告知SetActive(false)對性能更好。 – BenSmith
我覺得它會讓gameObject變爲null,而不是將它從List中移除。 – BenSmith