質問編集履歴

1

項目分けました

2017/08/02 17:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,16 @@
1
+ ■前提・実現したいこと■
2
+
1
- タイトルに書いたを実現すために、ようなコードのですが意図した動作をしません。
3
+ タイトルに書いたとおり、「あ1個のクライアントから自分クライアントの関数呼び出す」ことをしたいのですが意図した動作をしません。
2
4
 
3
5
 
4
6
 
5
- 動作とては、あるクライアントが自身の「netId」を引数して、サーバーの「CmdCallRequestPlayerDeta」を呼び出す。
7
+ ■実現たいこ
6
8
 
7
- 「CmdCallRequestPlayerDeta」では、引数の「netId」と異なる「netId」のコネクションがあれば、そのコネクションの「CallClientFunction」関数を呼び出す。というものです。
9
+ あるクライアントが自身のnetId」を引数として、サーバーの「CmdCallRequestPlayerDeta」を呼び出す。
8
10
 
11
+ 「CmdCallRequestPlayerDeta」では、引数の「netId」と異なる「netId」のコネクションがあれば、そのコネクションの「CallClientFunction」関数を呼び出す。
9
12
 
13
+ ■ソースコード■
10
14
 
11
15
  ```
12
16
 
@@ -50,14 +54,20 @@
50
54
 
51
55
  ```
52
56
 
57
+ ■発生している問題■
58
+
59
+ 「ある1個のクライアントから自分以外のクライアントの関数を呼び出す」という動作ではなく、「ある1個のクライアントが自分の関数を呼び出す」という動作になってしまう。
60
+
61
+
62
+
63
+ ■問題が発生するまでの流れ・手順■
64
+
53
- 上記のコードで、ホストを建て、そこにクライアントが1個接続。クライアントが「CmdCallRequestPlayerDeta」を呼ぶと、クライアントの「netId」として「2」を渡します。
65
+ ホストを建て、そこにクライアントが1個接続。クライアントが「CmdCallRequestPlayerDeta」を呼ぶと、クライアントの「netId」として「2」を渡します。
54
66
 
55
67
  そして、「NetworkServer.connections」が2個のコネクションを取得し、「Send」の前のif文では「2 != 1」という条件のときに、「Send」から「CallClientFunction」が1度だけ実行されます。
56
68
 
69
+ しかし、そこで呼ばれた「this.netId」では「CmdCallRequestPlayerDeta」の引数として渡した「netId」と同じ「2」が出力されます。つまり、サーバーの「CmdCallRequestPlayerDeta」を呼んだクライアントの「CallClientFunction」を読んでしまっています。
57
70
 
58
71
 
59
- しかし、そこで呼ばれた「this.netId」では「CmdCallRequestPlayerDeta」の引数として渡した「netId」と同じ「2」が出力されますた。
60
-
61
- 従って、「ある1個のクライアントから自分以外のクライアントの関数を呼び出す」という動作ではなく、「ある1個のクライアントが自分の関数を呼び出す」という動作になっています。
62
72
 
63
73
  意図した動作をするにはどこを修正すれば良いでしょうか。