我正在尝试使用该ClientRpc
属性通过网络发送各种基本类型的数组。文档指出,我可以毫无问题地通过网络发送这些:
- 基本类型(byte、int、float、string、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 调用发送具有不同基本类型的各种数量的参数?