【发布时间】:2017-05-04 10:41:23
【问题描述】:
Unity 和 C# 新手
这实际上只是我很好奇的一个小问题......我在调整此代码时遇到了它(失败)尝试使其工作。我一直试图让这段代码工作几个小时。
反正这段代码执行的时候,只有一个错误,但是出现了3次。它说“无法销毁'Pillar1'的Transform组件。如果要销毁游戏对象,请改为在游戏对象上调用'Destroy'。不允许销毁转换组件。”
我第一次得到那个。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlatformGenerator : MonoBehaviour {
public GameObject Single;
private GameObject NewPillar;
private int PillarCount;
private bool run;
private int px;
private int py;
private int pz;
void Start () {
px = 0;
py = 0;
pz = 0;
bool run = true;
PlatformCreate ();
}
void Update () {
if (run) {
PlatformCreate ();
if (PillarCount == 3) {
run = false;
}
}
}
void PlatformCreate () {
PillarCount +=1;
Single.transform.position = new Vector3 (px, py, pz);
NewPillar = Instantiate (Single, Single.transform);
NewPillar.name = "Pillar" +PillarCount;
px += 2;
}
}
【问题讨论】:
-
由于某种原因,它似乎与在实例化中使用 Single.transform 有关...删除并仅使用 Single 不会引发错误,但我仍然想知道为什么。
-
@Programmer 我投票决定重新提出这个问题,因为绝对没有人打电话给
Destroy。请参阅 Ashton 的评论和我在下面的回答。我同意这种类型的大多数问题都是初学者的小错误,但这个问题似乎不同,当然很有趣 -
@Kay 它必须在 other 脚本的某处被调用。我见过人们发布与他们的问题无关的错误代码。该错误的原因是当您尝试销毁
transform时。例如,Destroy(transform)如果 OP 可以证明不是,我将重新打开。 -
@programmer,这不会产生预期的结果。还要看看@Ashton 在顶部的评论Single 不会出现错误>他只是想知道为什么?
-
@MukeshSaini
Destroy(transform);主要是导致该错误的原因。我在关闭它之前测试了Instantiate (Single, Single.transform);并且没有发生错误。我只是再次尝试了大约 15 倍,但出现了错误。这是随机的。它有时会发生。所以,是的,Instantiate (Single, Single.transform);也会导致这种情况。看起来本地人不理解这一点,并试图在引擎盖下做Destroy(transform)。重新打开。请说出你的答案。
标签: c# unity3d instantiation gameobject