我正在尝试做一个游戏,这个游戏正在生成一个对象,当这个对象被销毁后,另一个对象会立即生成。但是现在我正在尝试在另一个函数中销毁一个示例化对象,它不起作用。
`
public GameObject[] food;
public Vector3Int spawnPosition;
public void Start()
{
SpawnFood();
}
//Spawning food
public void SpawnFood()
{
int random = Random.Range(0, food.Length);
GameObject clone = (GameObject)Instantiate(food[random], this.spawnPosition, Quaternion.identity);
}
private void Update()
{
if(Input.GetKeyDown(KeyCode.C))
{
Destroy(this.gameObject);
}
}
`
我试着对此做了一些研究,但我仍然只能找到在示例化的同一个函数中销毁对象的解决方案。
2条答案
按热度按时间vuktfyat1#
当您调用
Destroy(this.gameObject)
时,脚本所附加到的游戏对象将被销毁,此后您将无法调用脚本。我猜您要销毁的是
food
游戏对象,而不是此处显示的脚本所攻击的游戏对象。快速调整,以满足您的需求:
正如@丹尼尔seggested所言,如果你要重复示例化/销毁食物游戏对象,更好的方法是使用同一个食物对象并更改其属性(例如位置...)来创建
new food game object pop-up illusion
。这里的关键思想称为Object Pooling。
1u4esq0p2#
以下是您的答案:
声明一个公共游戏对象:
并且更换了
与
然后在另一个函数或类中销毁