【SampleGame03 UITest11-SceneDontDestroy】SceneSub→SceneMain移行時にだけAwakeがまた呼ばれるのはなぜ | Unity Forum | Tech Stadium Forum

【SampleGame03 UITes...
 
通知
すべてクリア

【SampleGame03 UITest11-SceneDontDestroy】SceneSub→SceneMain移行時にだけAwakeがまた呼ばれるのはなぜ  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
17/03/2021 11:17 am  
SampleGame03 UITest11-SceneDontDestroyにおいて、
プロジェクト内にあった、testScript
void Awake(){
Debug.Log ("Awake()");
}
void Start () {
Debug.Log ("Start()");
}
をGlobalManagerにアタッチして、AwakeとStartのタイミングをみてみたのですが、ゲーム開始でAwake,Startが呼ばれ、
SceneMain→SceneSub移行時には
GlobalManagerがDontDestroyOnLoad指定されてアタッチされたスクリプトも
そのまま残存するため、AwakeもStartも呼ばれない。
ここまでは理解できるのですが、
SceneSub→SceneMain移行時にだけ
Awakeがまた呼ばれるのはなぜなのでしょうか?
(SceneSub→SceneMain移行時もGlobalManagerはそのまま残存するので、
Awakeが呼ばれることはないと思ったのですが・・・)
This topic was modified 2年前 by Teacher

引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
17/03/2021 11:18 am  

SceneSubからSceneMainに移行した時、GlobalManagerは生成されています。

ですが、GlobalManagerにアタッチされているスクリプト「ScriptGlobalManager」の条件で、
GlobalManagerが2つにならない様にDestroyされています。

なので、2つ目のGlobalManagerが生成された時点でAwakeが呼ばれます。

対してDestroyが行われている場所もAwakeの為、Startは呼ばれません。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
17/03/2021 11:19 am  

ご回答ありがとうございます!
すみません、まだよくわかっていないのですが、
SceneSubからSceneMainに移行した時に
GlobalManagerが生成されるのはDontDestroyOnLoadに指定されているからでしょうか?
もしそうならば、SceneMainからSceneSubに移行した時に
GlobalManagerが生成されない(Awakeが呼ばれない)のはなぜなのでしょうか?


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
17/03/2021 11:20 am  

SceneMainには元からシーンにオブジェクト「GlobalManager」が存在します。

なので、元々存在するGlobalManagerがDontDestroyOnLoadに指定されます。

その時に、既にGlobalManagerがあればDestroyされる様になっています。

逆に、SceneSubには「GlobalManager」が存在しないので何も呼ばれる事はありません。

シーン再生前の両シーンのヒエラルキーウィンドウを確認してみて下さい。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
17/03/2021 11:20 am  

DontDestroyでSubSceneのHierarchyにもGlobalManagerが
出てくるので、こちらでもSceneMainの時と同じ挙動をするのだと思っておりました。

あくまで、元々存在するシーンのみでしか呼ばれないということですね!
納得しました!ありがとうございます!


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
08/07/2021 2:58 pm  

※(参考)AwakeとStartの違い
https://gametukurikata.com/program/awakestart


返信引用
共有:
タイトルとURLをコピーしました