前提・実現したいこと
前提として、
OculsでのVR開発をしております。
実現したいのは、Canvas内のToggle、AとBがあります。
Aを選択しているなら、Aを選択しているという値を受け取りたい
Bなら逆です。
発生している問題・エラーメッセージ
以下にコードを張り付けておきます
該当のソースコード
以下のManagerをGameManagerオブジェクトにアタッチし、各シリアライズのオブジェクトはそこでアタッチしています。
C#
1using System.Linq; 2using UnityEngine; 3using UnityEngine.SceneManagement; 4using UnityEngine.UI; 5 6public class TitleManager : MonoBehaviour 7{ 8 [SerializeField] private Animator m_HumanAnimator = null; 9 [SerializeField] private Animator m_CatAnimator = null; 10 [SerializeField] private Toggle m_ToggleAvater = null; 11 [SerializeField] private ToggleGroup m_ToggleAvaterGroup = null; 12 13 /* MainMenu */ 14 private void Start() 15 { 16 m_HumanAnimator = GetComponent<Animator>(); 17 m_CatAnimator = GetComponent<Animator>(); 18 m_ToggleAvater = GetComponent<Toggle>(); 19 m_ToggleAvaterGroup = GetComponent<ToggleGroup>(); 20 } 21 22 23 public void SelectPlayer() 24 { 25 if ( m_ToggleAvaterGroup.AnyTogglesOn() ) 26 { 27 //現在選択中のPlayerがどちらかを取得 28 m_ToggleAvater = m_ToggleAvaterGroup.ActiveToggles().FirstOrDefault(); 29 Debug.Log(m_ToggleAvater.name); 30 31 } 32 33 34 if ( m_ToggleAvater.name == "Human" ) 35 { 36 m_HumanAnimator.SetTrigger("Happy"); 37 GameDataManager.instance.playerTypeID = 0; 38 Invoke("NextScene", 2); 39 } 40 else if ( m_ToggleAvater.name == "Cat" ) 41 { 42 m_CatAnimator.SetTrigger("Happy"); 43 GameDataManager.instance.playerTypeID = 1; 44 Invoke("NextScene", 2); 45 } 46 } 47 48 void NextScene() 49 { 50 SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1); 51 } 52}
C#
1 //現在選択中のPlayerがどちらかを取得 2 m_ToggleAvater = m_ToggleAvaterGroup.ActiveToggles().FirstOrDefault(); 3 Debug.Log(m_ToggleAvater.name);
上記のm_ToggleAvater.nameに、どんな値が入っているのかデバックでは確認できずにいます。
結果、これは次のシーンへ遷移して、このシーンで設定したトグルなどの値を次のシーンへ引き継がせる流れになっています。
なっててほしいのですが、
実際にはこうはならず、トグルが機能していないため、SelectPlayer()の関数内が実行されていません。
尚、このスクリプトは、
UIにボタンがあり、そこのOnclick()によってSelectPlayer()を呼び出しています。
ちょっとOnclickの使い方も間違えているのかもしれないので、教えていただければ幸いです。
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.3f1
以下に、上記トグルに関係ある設定とInspectorのスクリーンショットを以下に貼り付けます。
以上です。
C#
1m_ToggleAvaterGroup.AnyTogglesOn()
がNullなので、Trueの中の処理が呼ばれていないのかと思いますが、この処理をどう修正すればよいのでしょうか。
このスクリプトを参考にしたQiitaURLを載せます!
別の参項にしているサイト。結局、どちらのスクリプトでもトグルを選択し、OKボタンをしてもトグルにチェックが入っているほうのスクリプトは呼ばれません????
回答1件
あなたの回答
tips
プレビュー