2017-01-25 9 views
1

私は奇妙な動作をしています私は知らないなぜですか?ボタンクリックイベントでAddリスナーに関数を追加しようとしていますが、シーンをリロードしてもそのリスナーは表示されません。私はこの機能を持っています。 は(その取得目的のボタンオブジェクトが正しく、私がテストした)、私はに機能上呼び出していますC#でイベントリスナー関数を追加しましたが、まだそれがありません

public void SetupMenuSceneButtons() 
    { 
     if (GameObject.Find("BtnStartHost")) 
      Debug.Log("BtnStartHost found"); 
     if (GameObject.Find("BtnJoinGame")) 
      Debug.Log("BtnJoinGame found"); 

     GameObject.Find("BtnStartHost").GetComponent<Button>().onClick.RemoveAllListeners(); 
     GameObject.Find("BtnStartHost").GetComponent<Button>().onClick.AddListener(delegate { StartupHost(); }); 
     GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.RemoveAllListeners(); 
     GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.AddListener(delegate { JoinGame(); }); 

    } 

イベントをOnLevelWasLoadedが、私は私のシーンをリロードしてクリックでその機能割り当てがまだ不足していると私のボタンが機能していません。デリゲートなしでイベントリスナーを追加しようとしましたが、同じ問題があります。

GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.AddListener(JoinGame); 

私もこれを介して割り当てを試みましたが、それでも問題は解決しません。私はV5.5上のコードのテストを実行した

GameObject.Find("BtnStartHost").GetComponent<Button>().onClick.RemoveAllListeners(); 
     GameObject.Find("BtnStartHost").GetComponent<Button>().onClick.AddListener(()=> { StartupHost(); }); 
     GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.RemoveAllListeners(); 
     GameObject.Find("BtnJoinGame").GetComponent<Button>().onClick.AddListener(() => { JoinGame(); }); 
+0

発見されたのですか?あなたが登録したかどうかを見るために、すぐ後で呼び出すことを試みることができます。 – Everts

+0

@Evertsはいボタンオブジェクトを正しく取得しています。どうすればonClickコードを呼び出すことができますか? –

+0

GameObject.Find( "BtnStartHost")。GetComponent

答えて

1

、OnLevelWasLoadedはちょうど(面白いそれはまだVSオートコンプリート)と呼ばれ、廃止さについて警告をトリガされていません。

次取り組んでいる:あなたが実際にボタンを表示、印刷が

void OnEnable() 
{ 
    SceneManager.sceneLoaded += SceneManager_sceneLoaded; ; 
} 

private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1) 
{ 
    SetupMenuSceneButtons(); 
} 
関連する問題