感谢其他用户(如果你正在阅读这篇文章,再次感谢),我开始使用一个函数将我的预制件与两个EmptyGameObject并排放置,这两个对象用作对象每侧的位置/旋转参考。
我想删除创建的最后一个示例(通过按键盘上的W),而不失去在删除过程后放置其他示例的可能性。
`
public class Placement : MonoBehaviour
{
public GameObject GO1, GO2, GO3, GO4, GO5;
public Counter count;
void Start()
{
count = FindObjectOfType<Counter>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Alpha1))
{
Instantiate(GO1, transform.position, transform.rotation);
this.enabled = false;
}
if (Input.GetKeyDown(KeyCode.Alpha2))
{
Instantiate(GO2, transform.position, transform.rotation);
this.enabled = false;
}
if (Input.GetKeyDown(KeyCode.Alpha3))
{
Instantiate(GO3, transform.position, transform.rotation);
this.enabled = false;
}
if (Input.GetKeyDown(KeyCode.Alpha4))
{
Instantiate(GO4, transform.position, transform.rotation);
this.enabled = false;
}
if ((Input.GetKeyDown(KeyCode.Alpha5)) && count.angolo <= 2)
{
Instantiate(GO5, transform.position, transform.rotation);
this.enabled = false;
}
if (Input.GetKeyDown(KeyCode.W))
{
destroy(GO1);
}
}
}
′
上面的代码被放在我在场景中使用的每个预制件中。
问题是告诉Unity识别最后克隆的预制件的名称(这样我就可以销毁它,而不必每次都写入预制件的确切名称),并让我有可能在最后一次操作之后放置其他示例化对象。
1条答案
按热度按时间egdjgwm81#
目前,您并没有在代码中的任何地方创建对示例化对象的引用。相反,您试图破坏一个编辑器引用,我假设它是一个
GameObject
prefab。(GO1
)如果你只对last示例化的
GameObject
感兴趣(而不是跟踪所有示例化的GameObject
),那么创建一个可以用来引用示例化的GameObjects的变量,并在Destroy
方法中使用它:然后在示例化的每个点指定它:
由于现在有了对最后一个示例化的
GameObject
的引用,因此也可以销毁它