これは幼児のように見えるかもしれませんが、私はそれを得ていません。 このプログラムには、キャンバスを関連情報(この場合はオイルチェンジ)とともに表示または非表示する異なるボタンがあります。Unity3dインストール前に存在するオブジェクトを破棄します
ボタンを押すと、オイル交換キャンバスが開き、データベースから情報が取得され、インスタンス化されたプレハブの情報が表示されます。それはうまく動作します。この問題は、同じボタンまたは別のボタンをクリックして同じキャンバスに戻ったときに発生します。情報は2倍または3倍または4倍です。あなたはそれに戻るたびに倍増します。
もちろん、ゲームオブジェクトをインスタンス化する前に破壊されますが、する必要があります。
私がチェックするかわからないんだけど。それはインスタント化またはプレハブのために使用される一時変数ですか?私はスクリプトの最上部でそれを定義しようとしましたが、他の時間には、私は割り当てられていない使用のエラーを取得します。
私はこの機能を呼び出すのに最適な時期ではありません。私はあなたがボタンを押すと推測しています。
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