public void PlaceIconToSlot() //gets called by a button
{
GameObject IconClone = Instantiate(Icons[properIconIndex], Slots[properSlotIndex].transform.position, Quaternion.identity);
}
图标和插槽是数组。第一个告诉程序要实例化什么,第二个告诉程序在哪里实例化。Quaternion.identity只是意味着没有旋转。
我要做的是:复制一个图像并将其放在一个插槽中,然后如果将另一个图像放在旧图像的顶部,则应销毁旧图像。
发生了什么:一切都正常,除了旧的不会被摧毁,新的坐在旧的之上。我的意思是,它当然不会被破坏,因为我没有编程,但这是我的问题。当只有一个图标克隆时,如何销毁(旧克隆(?如何在函数中引入 OldClone 的概念?
由于您调用该函数PlaceIconToSlot
我猜,您可能有一个Slot
组件。如果是这样,您可以向其添加一个包含当前图标的成员变量(假设每个插槽一个图标(并使用它。
像这样:
public class Slot
{
public GameObject Icon;
public void PlaceIconToSlot()
{
// If you overwrite it, the garbage collector will destroy it a some point anyways,
// but it doesn't hurt to do this destroy call
Destroy(Icon);
Icon = Instantiate(...);
}
}
如果您在某个集中位置运行上述函数,则可能会将参数(要实例化的新图标(传递给此函数。类似SpotXYZ.PlaceIcon(icon)
或SpotXYZGameObject.GetComponent<Slot>().PlaceIcon(icon)
.
一个想法是设置一个标签(假设oldImage
(到您的原始图像。实例化时,销毁具有该标记的对象,然后将 oldImage
标记添加到新映像,以便在实例化另一个映像时销毁该对象。
public void PlaceIconToSlot() //gets called by a button
{
GameObject IconClone = Instantiate(Icons[properIconIndex], Slots[properSlotIndex].transform.position, Quaternion.identity);
Destroy(GameObject.FindWithTag("oldImage"));
IconClone.gameObject.tag="oldImage";
}
我还没有尝试过这个,但值得一试!