我在我的游戏中实施了烟雾预制。这个想法是创建预制件的3个不同的实例(在不同的位置),然后根据切换按钮销毁它们。这个问题没有被破坏,我不知道为什么。销毁预制实例
这是我的脚本:
class Smoke1 : MonoBehaviour
{
public GameObject myPrefab;
public GameObject canvasObject;
public static GameObject newSmoke1;
public static GameObject newSmoke2;
public static GameObject newSmoke3;
public int toggle1;
public int toggle2;
public int toggle3;
public Vector3 smokeposition1 = new Vector3 (397, -394, 90);
public Vector3 smokeposition2 = new Vector3(414, -402, 90);
public Vector3 smokeposition3 = new Vector3(432, -410, 90);
string newSmoke;
void Start()
{
i = 1;
toggle1 = 2;
toggle2 = 2;
toggle3 = 2;
newinstance(smokeposition1, newSmoke1);
newinstance(smokeposition2, newSmoke2);
newinstance(smokeposition3, newSmoke3);
}
void Update()
{
togglecheck(ThermoElectric.t1Bool, toggle1, newSmoke1, smokeposition1);
togglecheck(ThermoElectric.t2Bool, toggle2, newSmoke2, smokeposition2);
togglecheck(ThermoElectric.t3Bool, toggle3, newSmoke3, smokeposition3);
}
void newinstance(Vector3 smokeposition, GameObject smokeinstance)
{
smokeinstance = Instantiate(myPrefab, smokeposition, Quaternion.Euler(-90, 0, 0)) as GameObject;
smokeinstance.transform.SetParent(canvasObject.transform, false);
smokeinstance.transform.localScale = new Vector3(1, 1, 1);
smokeinstance.GetComponent<ParticleSystem>().startColor = new Color(0.1f, 0.1f, 0.1f, 1);
}
void togglecheck(bool turbine, int togglei, GameObject smokeinstancet, Vector3 smokeposition)
{
if (turbine == true && togglei == 1)
{
newinstance(smokeposition, smokeinstancet);
togglei = 2;
}
if (turbine == false && togglei == 2)
{
Destroy(smokeinstancet, 0.1f);
togglei = 1;
}
}
}
的布尔变量正在和如果条件得到满足,但destroyed..Can你帮组合屋没有得到?
https://docs.unity3d.com/ScriptReference/Object.Destroy。html 你什么时候检查过你的元素是否已经被删除? _“实际的物体破坏总是延迟到当前更新循环之后,但总是在渲染之前完成。”_ – TripleEEE
当游戏运行时,我看到当我更改切换时,预制件不会被破坏。 –
我看不出延迟的原因,循环应该马上完成。 –