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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

C#

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Unity

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

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

Q&A

解決済

1回答

1523閲覧

Firebase,Unity : StateChanged 内で画面遷移が出来ない

keny_624

総合スコア1

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

C#

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Unity

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

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

0グッド

0クリップ

投稿2020/09/30 02:45

Unityのログイン機能にFirebaseを使用しています。
AuthStateChanged のメソッド内でログインが完了したら画面遷移を行いたいのですが、画面遷移が実行されません。
if(signedIn){}は実行されているのですが SceneManager.LoadScene だけ実行されません。

C#

1void AuthStateChanged(object sender, System.EventArgs eventArgs) { 2 if (auth.CurrentUser != user) { 3 bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null; 4 if (!signedIn && user != null) { 5 DebugLog("Signed out " + user.UserId); 6 } 7 user = auth.CurrentUser; 8 if (signedIn) { 9 DebugLog("Signed in " + user.UserId); 10 displayName = user.DisplayName ?? ""; 11 emailAddress = user.Email ?? ""; 12 photoUrl = user.PhotoUrl ?? ""; 13 14 //画面遷移 15 SceneManager.LoadScene("GameScene2"); 16 17 } 18 } 19}

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

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

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

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

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

fiveHundred

2020/09/30 09:03

本当にこのコードですか? Debug.Log()がDebugLog()になっていますが。
keny_624

2020/09/30 11:24

すみません Debug.Log()です。参照元のコードをコピペしたので間違えてました。
guest

回答1

0

ベストアンサー

以下の2点を確認してみて下さい。

① "GameScene2" を Build Settings>Scenes In Build に追加していない
Scenes In Build に "GameScene2" を追加して有効(チェックを入れた状態)になっているか確認する。
※ 未登録のシーン名を SceneManager.LoadScene() すると警告が発生する。警告が発生してないっぽいしシーン遷移できていないから①が原因ではなさそう?

SceneManager.LoadScene()がメインスレッドで呼ばれていない
UnityAPI(using UnityEngine.*)はメインスレッドで呼ぶ必要があります。
※ そもそも Debug.Log() が呼ばれていればメインスレッドなのでこれでは解決しない。 2020/10/12追記: Debug.Log 別スレッドでも呼ばれますね。誤った内容だったので修正します。

C#

1 2System.Threading.SynchronizationContext _mainThread; 3 4void Start() //or Awake, OnEnable など 5{ 6 _mainThread = System.Threading.SynchronizationContext.Current; 7} 8 9void AuthStateChanged(object sender, System.EventArgs eventArgs) 10{ 11 //... 12 _mainThread.Post(_ => { SceneManager.LoadScene("GameScene2"); }, null); 13}

投稿2020/10/03 12:08

編集2020/10/12 06:28
u824

総合スコア112

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

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

keny_624

2020/10/10 17:27

回答ありがとうございます。 Scene名が間違っており"GameScene"に変更し、Scenes In Build に "GameScene"を追加することで解決しました。詳細なアドバイスありがとうございます。 聞きたいことがあるのですが、
u824

2020/10/11 07:39

何でしょうか?内容を教えてください
keny_624

2020/10/18 10:08

すみません 間違えて記入していました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問