質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

4100閲覧

UNITY シーンの再読み込み(SceneManager.LoadScene)について

Qoo

総合スコア1249

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/06/22 05:09

編集2019/06/22 12:27

UNITYで音げーを作っています。
AwakeでCSVデータを読みこみプレハブオブジェクトを生成し、
音楽終了とともにシーンをリロードしているのですが、
リロード後、音楽は再生されますが、プレハブオブジェクトが生成されません。
リロード時に何か引き継がれるようなものはあるのでしょうか?
特にStaticなどの変数も利用していません。
完全にリロードするにはどうすればよいでしょうか?

private void Awake() { LoadCSV(); } void Start() { StartCoroutine(StartMusic()); } IEnumerator StartMusic() { yield return new WaitForSeconds(MusicDelayTime); _audioSource.Play(); StartCoroutine(Checking(() => { //終了 Debug.Log("MusicEND!"); SceneManager.LoadScene(SceneManager.GetActiveScene().name); })); } void LoadCSV() { TextAsset csv = Resources.Load(filePass) as TextAsset; StringReader reader = new StringReader(csv.text); int i = 0; while (reader.Peek() > -1) { string line = reader.ReadLine(); string[] values = line.Split(','); for (int j = 0; j < values.Length; j++) { _timing[i] = float.Parse(values[0]); _lineNum[i] = int.Parse(values[1]); } i++; } } private void Update() { CheckNextNotes(); } void CheckNextNotes() { while (_timing[_notesCount] + timeOffset < GetMusicTime() && _timing[_notesCount] != 0) { //ブレハブ生成 SpawnNotes(_lineNum[_notesCount]); _notesCount++; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

自己解決しました!
Time.timeでゲーム開始からの秒数を取得していたのですが、再読み込み時もこの値をリセットしてなかったのが原因でした!お手数おかけしました。

投稿2019/06/22 13:00

Qoo

総合スコア1249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プレハブからオブジェクトを生成している部分のソースコードを提示して頂いても宜しいでしょうか?
提示して頂いてるプログラム内にプレハブオブジェクトを生成している処理が見当たりません。

AwakeでCSVデータを読みこみプレハブオブジェクトを生成し、

こちらシーン変更前にプレハブオブジェクトを生成しているのであれば、シーン変更時にオブジェクトは破棄されます。
シーン変更後にプレハブオブジェクトを生成して下さい。

c#

1// シーン変更後のStartメソッド 2void Start() 3{ 4 Instantiate(プレハブ); 5}

投稿2019/06/22 11:25

marurunn

総合スコア702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Qoo

2019/06/22 12:30

追記しました。プレハブはcsv」のタイミングデータに応じて、update内で生成しています。 シーン再読み込み時に、リソースを破棄、ガベ処理をしても変わらいのです。。 SceneManager.LoadScene(SceneManager.GetActiveScene().name, LoadSceneMode.Single); Resources.UnloadUnusedAssets(); System.GC.Collect();
marurunn

2019/06/22 12:37 編集

シーンをロードしたタイミングで生成されたプレハブが破棄されていますので、シーンを跨いでもオブジェクトが残るようDontDestroyOnloadメソッドを使用されてはいかがでしょうか。 GameObject obj = SpawnNotes(_lineNum[_notesCount]); DontDestroyOnLoad(obj); _notesCount++;
Qoo

2019/06/22 13:49

いろいろとアドバイスありがとうございます! 今回はロードしたタイミングですべてのオブジェクトは破棄された方がよいので大丈夫そうです! DontDestroyOnLoadは使ったことなかったので大変勉強になりました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問