3

我正在努力做到这一点,每当玩家连接到服务器时,它会将其选定的名称传输到 RPC,然后它将为每个人更新玩家游戏对象。但这似乎给出了以下错误:

发送 RPC 失败,因为不支持“setPlayerName”参数 0 (UnityEngine.GameObject)。

这是我的代码:

void OnConnectedToServer() {
    GameObject newPlayer = (GameObject)Network.Instantiate(newPlayerPrefab, new Vector3(0,0,0), Quaternion.identity, 0);
    networkView.RPC("setPlayerName", RPCMode.AllBuffered, newPlayer);
}

[RPC]
void setPlayerName(GameObject newPlayer) {
    newPlayer.name = "Player_" + playerName;
}

如果这不是更改新生成玩家gameObject名称的正确方法,那么请帮助我,这实际上是正确的方法。

4

1 回答 1

0

NetworkView.RPC 中不支持将 GameObject 作为参数...您可以在此处查看支持的参数类型:

http://docs.unity3d.com/Documentation/Components/net-RPCDetails.html

(您也可以使用文档中未提及的 byte[])

也许你可以将玩家的名字作为字符串发送,让服务器处理游戏对象的创建

于 2013-03-20T17:08:01.740 回答