0

関数が呼び出されるたびに Unity でオブジェクトをインスタンス化しようとしています。

これは私のUiHandlerスクリプトの start メソッドです

public void Start() {

    GameObject obj = Instantiate(userPanelPrefab, userPanelContainer) as GameObject;

}

これは、 「プレイヤー」がゲームに参加するたびに呼び出されるUiHandlerスクリプト内の「OnPlayer」メソッドです。(それらは実際にはプレーヤーではなく、WebSocket サーバーを介して Unity に送信された名前にすぎません)

public void OnPlayer(WebsocketManager.PlayerEvent e) {
    Debug.Log("On Player");
    if (e.type == WebsocketManager.JOIN_TYPE) {
        Debug.Log("On Join");
        GameObject obj = Instantiate(userPanelPrefab, userPanelContainer) as GameObject;
        Debug.Log("Assign User Panel");
        UserPanel p = obj.GetComponent<UserPanel>();
        p.Set(e.name);
    }
}

start メソッドが呼び出されると、オブジェクトは必要に応じてインスタンス化されます。しかし、「OnPlayer」メソッドが呼び出されるたびに、何も起こらず、インスタンス化関数の下のコードは実行されません。コンソールにエラーや情報は表示されません。それは何もしません。

デバッグ メッセージを含むコンソール出力は次のとおりです。

  • プレイヤー上

  • 参加時

「Assign User Panel」ログもコンソールに表示されません。

WebSocket の統合にはSocket Sharpを使用しており、バックエンド ソケット サーバーは NodeJs で実行されています。

これは、WebsocketManagerスクリプトの WebSocket コードです

public const string JOIN_TYPE = "join";
WebSocket ws = new WebSocket("ws://10.0.0.8:3069/");

ws.OnMessage += (sender, m) => {
 string json = GetStringFromArray(m.Data);
    if (IsJson(json, out PlayerEvent ev)) {
        Debug.Log("Is Valid JSON");
        if (ev.type == JOIN_TYPE) {
            AddPlayer(ev.name);
        } else if (ev.type == LEAVE_TYPE) {
            RemovePlayer(ev.name);
        }
        uiHandler.OnPlayer(ev);
    }
}

どんな助けでも大歓迎です!

4

1 に答える 1