2016-07-29 16 views
2

私は、3つのシーン、2つのレベルのシーン、およびメニューシーンを持つゲームを持っています。私が最初に自分のレベルシーンで再生を押すと、すべてが完璧に動作しますが、メニューシーンに行ってからレベルシーンに戻ったときに、Unityで2回目のシーンを読み込んだ後のオブジェクトのリセット

NetworkManager GameObjectに接続されたスクリプトの参照がリセットされました。たとえば、下の図に示すスクリプトでは、私の資産のプレハブにリンクされていた参照を除くすべてがリセットされました。

私は各変数を手動で行うのではなくコードで割り当てることを試みましたが、それでも機能しません。

このゲームオブジェクトにはdontdestroyonloadがあります。これらの参照がこのオブジェクトで特にリセットされるのはなぜですか?

+0

あなたがやっていることはすべて信じられないほど間違っています:)幸いにも、解決策は絶対に簡単です。http://stackoverflow.com/a/35891919/294884 – Fattie

+0

@JoeBlowどのように移行を行うか教えてくれるチュートリアルがありますか? ?私はどのようにプレロードシーンに私の一般的なスクリプト、効果音などのすべてを置くことができないのか分かりません。このプリロードシーンは必要ですか?私はちょうどトランジションの間にロードアニメーションを持つシーンを作成できますか? –

+0

@JoeBlowこのゲームにはすでに100以上のスクリプトが添付されており、複雑になっています。私はこれを知らずにこれを遠くに行ったと信じられない。 –

答えて

1

私はコメントするのに十分な担当者がいませんが、オブジェクトへの参照を追加した後にシーンを保存しましたか?

Answer(By Aaron Ge):ロード時に破棄してバックグラウンドで実行するのチェックを外して、問題が修正されました。私はこの問題がどのように修正されたのかは不明ですが、それはありました。

可能な説明:シーンに一度だけその

ロード:http://answers.unity3d.com/questions/734445/scripts-in-other-scenes-still-executing.html

あなたがシーンに配置されているオブジェクトにDontDestroyOnLoadを使用する場合は、必ずどちらかのことをします。それは通常ローディングシーンと呼ばれます。シーンには特定のマネージャオブジェクトだけが含まれていて、メニューシーン/何にでもすぐに切り替わります。最初のシーンを再びロードすることは決してありません。

シーンを再度ロードし、1つまたは複数のオブジェクトでDontDestroyOnLoadを使用する場合は、オブジェクトを手動で破棄する必要があります。オブジェクトがシーンの一部であるため、オブジェクトが再び作成されるのを防ぐことはできません。通常、新しいシーンをロードすると、オブジェクトは自動的に破棄され、DontDestroyOnLoadはそれを防ぎます。

+0

はい、そうではありません。@Almond –

+0

レベルを開始して戻ってくるのではなく、最初にメニューシーンを再生することから始めた場合、同じ問題が発生しますか? – Almond

+0

いいえ、私のメニューシーンはこれの影響を全く受けません。この特定のゲームオブジェクトだけが私のレベルシーンでこの問題の影響を受けました。 @Almond –

0

[ロード時に破棄しない]と[バックグラウンドで実行]のチェックボックスをオフにすると、問題が修正されました。私はこの問題がどのように修正されたのか不明ですが、それはありました!

関連する問題