私はネッセサーリ時に新しいシーンを読み込むgameobjectを持っています。ゲームオブジェクトに添付されたスクリプトには、キャンバス要素への参照を保持する変数があります(キャンバス要素にはプログレスバーがあります)。問題は、新しいシーンをロードしてそのシーンに新しいシーンをロードした後に、彼をDontDestroyOnLoadに設定できないため、キャンバスオブジェクトへの参照が失われることです。キャンバスは新しいシーンにロードされた後に有効にしません。
私は私が失った警告を受けるいけないことをやった後に私が行っていることは、私は..破壊されますdoesntのゲームオブジェクトの子として()(スタート機能でコメント行を参照)canvas要素を入れていますオブジェクトリファレンスは、setNewNameAndLoadScene()関数でキャンバスを有効にすることはありません。
私が有効にしていることは、GUIが画面に表示されないことですが、それはhirarchyにあります。私はそれがヌルであるかどうかを調べた。プログラムは問題なく行のコードを実行しますが、キャンバスはゲーム画面に表示されません。
2回目の編集:(ロード時に)新しいロードされたシーンのキャンバスに私のキャンバス(ゲームオブジェクトの子である)私のキャンバスを見せてくれたのです。私が私に尋ねるのは、それをシーンのキャンバスに入れると、なぜそれが表示されるのかということです。私は、シーンのキャンバスに私の最初のシーン私のキャンバス波平をロードしますが、まだ簡単にシングルトンを作成し、スライダーの公共ゲームオブジェクト参照を取得するために以下のコードを使用するか、あなたがしたいものは何でも
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SceneLoaderGameObject : MonoBehaviour {
private SceneLoader sl;
public Canvas cav; //loses reference when loading new scene
void Start() {
sl = new SceneLoader();
cav.GetComponent<Canvas>().enabled = false;
DontDestroyOnLoad (this.gameObject);
DontDestroyOnLoad (this);
DontDestroyOnLoad (this.gameObject.transform.GetChild(0).GetComponent<Canvas>());
}
public void setNewNameAndLoadScene(string name){
if(name.Length ==0)
throw new UnityException("length 0");
if (cav != null) {
Slider slid = cav.transform.GetChild (1).GetComponent<Slider>();
Text tx = cav.transform.GetChild (2).GetComponent<Text>();
Button bttn = cav.transform.GetChild (3).GetComponent<Button>();
sl.setNewScene (name);
sl.setSliderAndTextToChange (slid, tx);
bttn.onClick.AddListener (() => activateNewScene());
cav.GetComponent<Canvas>().enabled = true;
StartCoroutine (sl.LoadAsynchron (name, bttn));
}
}
public void activateNewScene(){
sl.AsgetOP().allowSceneActivation=true;
}
}
詳細はご質問ください。 「有効にしない」とはどういう意味ですか? 'Debug.Log'を使って正確に何が起こっているのかを見てください。キャンバス変数がnullかどうかを確認します。エディタをチェックして、キャンバスオブジェクトが階層にまだ残っているかどうかを教えてください。これらをあなたの質問に加えてください。私たちのお手伝いをしてください。 – Programmer
@Programmerホープそれhelrs – TiZaLjubavNisiRodjena
@Programmerまたは私のキャンバスへの参照を失うことはできません。だから私はそれを子供にする必要はありません。だから私はそれがキャンバスであるように私が有効/無効にする保存された変数のように常にそれを使用することができます – TiZaLjubavNisiRodjena