ClientRpc
属性を使用してネットワーク経由でさまざまな基本タイプの配列を送信しようとしています。私は問題なくネットワーク経由でこれらを送信できることdocumentation状態、:ClientRPC呼び出しでプリミティブタイプの配列を送信する
- の基本タイプ(バイト、int型、float型、文字列、UInt64型など)
- 基本型の配列
しかし、それらが混在しているように見えますが、object[]
アレイでは動作しません。私は、次の例があります。サーバー上で
[Command]
void CmdForwardEvent(string eventName, object[] args) {
Debug.Log ("Broadcasting event: " + eventName);
foreach (var o in args) {
Debug.Log ("arg-class: " + o.GetType() + ": " + o);
}
RpcForwardEvent (eventName, args);
}
[ClientRpc]
void RpcForwardEvent(string eventName, object[] args) {
Debug.Log ("Received event " + eventName);
foreach (var o in args) {
Debug.Log ("arg-class: " + o.GetType() + ": " + o);
}
}
void Update() {
if (Input.GetKeyDown (KeyCode.P)) {
CmdForwardEvent("Testevent", new object[]{"some string", 1, false});
}
}
を、私はクライアントで出力
Broadcasting event: Testevent
arg-class: System.String: some string
arg-class: System.Int32: 1
arg-class: System.Boolean: false
を取得し、これはエラーなしで到着:
Received event: Testevent
arg-class: System.Object: System.Object
arg-class: System.Object: System.Object
arg-class: System.Object: System.Object
はどのようにして、様々な送信することができますClientRpc呼び出しで異なる基本型を持つ引数の量
しかし、それは働いていますか?クライアントに必要なプリミティブ型にキャストして値をアンボックスするだけで済みます。私は本当に何が問題なのか分かりません。 –
問題は、クライアント側のタイプがわからないことです。 'GetType()'はruntime _に_実際の型を返します。紛失しました – Felk
'if(o is System.String)'を試してみましたか? –