0
这可能看起来很幼稚,但我只是没有得到它。 这个程序有不同的按钮,显示或隐藏画布和相关信息,在这种情况下,换油。Unity3d摧毁任何存在之前存在的对象
当按下按钮时,它将打开换油画布,从数据库获取信息并显示来自实例化预制件的信息。这工作正常。当您单击相同的按钮或另一个按钮并返回到同一画布时,问题就出现了。信息是双倍或三倍或四倍,你明白了。每当你回到它时,它就会倍增。
显然,游戏对象必须实例化之前被销毁,而是:
我不知道该怎么检查;它是用于实例化还是预制的临时变量?我已经尝试在脚本的顶部定义它,在任何其他时间,我都会遇到未分配使用的错误。
我不确定调用函数的最佳时间。一旦你按下按钮,我就会猜测。
public void ShowAllOilChanges() { for(int i = 0; i< OilChangeList.Count; i++) { ocObj = Instantiate(OilChangePrefab); OilChange tmpOilChange = OilChangeList[i]; ocObj.GetComponent<OilChangeScript>().DisplayOilChanges("Date of Service: " +tmpOilChange.ServiceDate, "Place of Service: " +tmpOilChange.Location, "Mileage: " +tmpOilChange.Mileage, "Labor: " +tmpOilChange.Labor, "Oil Brand: " +tmpOilChange.OilBrand, "Oil Price: " +tmpOilChange.OilPrice, "Filter Brand: " +tmpOilChange.FilterBrand, "Filter Price: " +tmpOilChange.FilterPrice, "Purchase Place: " +tmpOilChange.OilFilterPurchaseLocation); ocObj.transform.SetParent(OilDisplayparent); } } public void DestroyOilChange() { Debug.Log("Before" +ocObj); Destroy(ocObj); Debug.Log("After" +ocObj); } public void OpenOilWindow() { if(windowOpen==false) { windowOpen=true; OilCanvas.enabled=true; BatteryCanvas.enabled=false; BrakeCanvas.enabled=false; TireCanvas.enabled=false; PlugCanvas.enabled=false; MufflerCanvas.enabled=false; CustomCanvas.enabled=false; DestroyOilChange(); } else if(windowOpen==true) { windowOpen=false; OilCanvas.enabled=false; } }
如果有人能走路我通过,我将不胜感激。
有太多的缺失信息来协助。我甚至不知道这些方法在哪些文件中,以及谁调用它们。必须展示更多完整的流程(IMO)供任何人协助。 – TDWebDev