関数が呼び出されるたびに 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);
}
}
どんな助けでも大歓迎です!