【发布时间】:2021-04-03 15:18:46
【问题描述】:
当克隆的预制件到达立方体 x 轴的边界时,我正在尝试销毁它们。但是当第一个克隆被销毁时,会发生错误,并且下一个出现的克隆不会销毁。
错误:
MissingReferenceException:“GameObject”类型的对象已被销毁,但您仍在尝试访问它。 您的脚本应该检查它是否为空,或者您不应该销毁该对象。 deploy.Update () (在 Assets/deploy.cs:52)
这是附在立方体上的脚本:
public class deploy : MonoBehaviour
{
public GameObject starsPrefab;
private GameObject star;
public float respawnTime=40.0f;
Vector3 bsize,bmax,bmin,plane;
// Start is called before the first frame update
void Start()
{
StartCoroutine(starsWave());
Collider bCollider = this.GetComponent<Collider>();
bsize=bCollider.bounds.size;
bmax=bCollider.bounds.max;
bmin=bCollider.bounds.min;
//Vector3 plane=new Vector3(bmax.x-bmin.x,bmax.y-bmin.y,bmax.z-bmin.z);
}
private void spawnStar()
{
star =Instantiate(starsPrefab) as GameObject;
star.transform.position= new Vector2(bsize.x,Random.Range(-bsize.y,bsize.y));
}
IEnumerator starsWave()
{
while (true)
{
spawnStar();
yield return new WaitForSeconds(respawnTime);
}
}
void Update()
{
if(star.transform.position.x<bmin.x)
{
Destroy(star);
}
}
如果我增加respawnTime,也会出现同样的错误;第一个克隆出现,到达边界,被破坏,同样的错误,第二个克隆出现,到达边界,被破坏,同样的错误,&hellip
似乎 Destroy() 应用于最后一个克隆星,我如何将它应用于任何克隆星?
【问题讨论】:
-
你可能会生成许多星星,但只记得最后生成的星星。
-
有没有办法记住所有的星星?
-
@lemmecatch 使用
List<GameObject>而不是单个引用? -
@derHugo 谢谢你的建议我要试试,我是编码和统一的新手,所以我不知道在哪里寻找
-
“已解决”和“已更新”之类的词不能放在 Stack Overflow 问题标题中。修订历史记录表明帖子何时“更新”,如果问题已得到回答,则应接受发布在问题下方最能解决该问题的答案(单击复选标记按钮)。如果您自己解决了问题,请发布您自己的答案并接受它。不要在问题中发布解决方案;这让其他人很难找到和阅读它们。
标签: unity3d instantiation destroy bounds collider