私がUnityでこのスクリプトの中でやろうとしているのは、別のシーンをロードし、そのシーンからキャンバスを見つけて有効にすることです。私はすでに同じシーンからキャンバスを有効にする方法を知っていますが、問題は別のシーンのキャンバスを見つけて有効にする方法です。Unityの別のシーンからCanvasを読み込む方法は?
私はSceneManager.LoadScene(scenename)を試しました。シーンを変更して追加または変更する必要があるものは何ですか?誰か助けてくれますか?
私がUnityでこのスクリプトの中でやろうとしているのは、別のシーンをロードし、そのシーンからキャンバスを見つけて有効にすることです。私はすでに同じシーンからキャンバスを有効にする方法を知っていますが、問題は別のシーンのキャンバスを見つけて有効にする方法です。Unityの別のシーンからCanvasを読み込む方法は?
私はSceneManager.LoadScene(scenename)を試しました。シーンを変更して追加または変更する必要があるものは何ですか?誰か助けてくれますか?
多くのソリューションがあります:
あなたが次のシーンにする必要があり、あなたのキャンバスのためのMonoBehaviorのDontDestroyOnLoad(transform.gameObject)
を使用して
。あなたはGoogleでたくさんの例を見つけることができます。ここにリンクがあります:https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html
あなたの現在のシーンのgameobjects(キャンバス)をどこかに保存してもう一度読み込んで、シリアライゼーションなどで次のシーンに再作成してください。
私はあなたの質問を理解するには2通りの方法があります。
エディターで定義されているすべてのパラメーターを持つゲームオブジェクトを別のシーンにコピーします。 これを行う最良の方法は、明らかにプレハブを使用することです。 (where to start?)
ゲームオブジェクトとそのすべてのパラメータを実行時に変更した後にコピーする場合は、DontDestroyOnLoad()
を使用できますが、ソースシーンを少なくとも1回コピー先シーンの前にロードする必要があります。
資産フォルダに「プレハブ」として切り替えるキャンバスを保存します。
最後のシーンのデータを持ち越さずに新しいシーンをロードする場合は、エディタを使用してそのシーンでキャンバスを設定するだけです。
データを持ち歩く場合、またはゲームのゲームオブジェクトがある場合は、必要なキャンバスプレハブをインスタンス化できます。これは新しいシーンでそれを作成し、プレハブを導入するように選択した場所から参照することができます。
また、同じゲームオブジェクトに複数のキャンバスを配置し、必要に応じてオン/オフを切り替えることができます。メニューには非常に便利です。
希望に役立ちます。
2つの解決策があります: 1)キャンバスにMonoBehaviorの 'DontDestroyOnLoad(transform.gameObject)'を使用すると、次のシーンにいる必要があります。 2)現在のシーンのgameobjec(キャンバス)のどこかに保存してもう一度ロードし、シリアライゼーションなどの次のシーンで再作成します。 3)#2と同じですが、ローカル変数に必要なデータを保存します。 – KamikyIT
@KamikyITこれはむしろ答えになるはずです! :) –