【发布时间】:2020-01-14 11:19:43
【问题描述】:
我想在我的函数更新中从我的列表 Prefab[] 中销毁对象,但我还没有弄清楚如何在另一个函数中访问列表的索引。你知道我该怎么做吗?
这是我的代码:
public GameObject[] Prefab;
public Transform[] spawnPoint;
public Transform player;
public AudioClip[] sonAnimaux ;
private int i = 0;
private int j = 0;
private int k = 0;
private float delay = 3f;
void OnTriggerEnter(Collider other) {
// fonction on l'on fait apparaitre les objets de la liste selon son empty
while (i<Prefab.Length && j < spawnPoint.Length && k < sonAnimaux.Length ) {
AudioSource audio = GetComponent<AudioSource>();
Instantiate(Prefab[i] , spawnPoint[j].position, spawnPoint[j].rotation);
audio.clip = sonAnimaux[k];
audio.Play();
i++;
j++;
k++;
}
}
void Update() {
Destroy(Prefab[i],delay);
Debug.Log("The object" + Prefab[i]);
}
我想销毁 Prefab[i] 但我不知道如何在另一个函数中获取我的索引列表。
【问题讨论】:
-
这取决于你想从哪里调用更新。您应该可以将其作为参数传递。
-
我希望我的 Prefab[i] 对象在 3 秒后被销毁,所以我只需在我的更新函数参数中传递 prefab[] 列表?像这样 ? :无效更新(预制[i])? @PalleDue
-
@kehalS:更像
void Update(int i)。 -
另外,销毁预制件和销毁预制件的新实例(克隆)是有区别的。
-
为什么要在
Udpate中这样做根本?只需在实际上应该销毁它的方法中执行它...当前i是一个 field 所以访问它应该没有问题.. 我猜你宁愿遇到这个@987654325 的问题@ 没有您期望的值,请注意Update被称为每一帧,因此您的代码目前对我来说没有多大意义,因为已经在下一帧中您的i将无效,因为你已经销毁了那个对象