Unity3d 缺少ClientRpc(Unity Mirror)的重要功能
我有一个问题,ClientRpc从未被称为任何客户端对象。我在互联网上搜索了好几个小时,但我找不到任何线索来解释我的实现为什么不起作用。 我遵循这样的顺序:Unity3d 缺少ClientRpc(Unity Mirror)的重要功能,unity3d,mirror,unity3d-unet,Unity3d,Mirror,Unity3d Unet,我有一个问题,ClientRpc从未被称为任何客户端对象。我在互联网上搜索了好几个小时,但我找不到任何线索来解释我的实现为什么不起作用。 我遵循这样的顺序: 在大厅中添加玩家 将场景切换到游戏场景 在服务器上生成随机分幅 使用Rpc将平铺数据发送到客户端进行渲染 但是,渲染函数从未被调用 NetworkManager.cs public override void OnServerReady(NetworkConnection conn) { base.OnServerReady(con
public override void OnServerReady(NetworkConnection conn)
{
base.OnServerReady(conn);
//Make sure they're all ready
for (int i = RoomPlayers.Count - 1; i >= 0; i--)
{
if (!RoomPlayers[i].IsReady)
{
return;
}
}
//Previously add SpawnTiles to OnServerReadied
OnServerReadied?.Invoke(conn);
}
private void SpawnTiles(NetworkConnection conn)
{
//Generate rawTiles beforehand
Debug.Log(conn.isReady);
Debug.Log("Entered spawn tiles");
RpcSpawnTiles(rawTiles);
}
[ClientRpc]
public void RpcSpawnTiles(short[] rawTiles)
{
Debug.Log("Client spawning tiles");
}
GameManager.cs
public override void OnServerReady(NetworkConnection conn)
{
base.OnServerReady(conn);
//Make sure they're all ready
for (int i = RoomPlayers.Count - 1; i >= 0; i--)
{
if (!RoomPlayers[i].IsReady)
{
return;
}
}
//Previously add SpawnTiles to OnServerReadied
OnServerReadied?.Invoke(conn);
}
private void SpawnTiles(NetworkConnection conn)
{
//Generate rawTiles beforehand
Debug.Log(conn.isReady);
Debug.Log("Entered spawn tiles");
RpcSpawnTiles(rawTiles);
}
[ClientRpc]
public void RpcSpawnTiles(short[] rawTiles)
{
Debug.Log("Client spawning tiles");
}
这是我在主机上运行时的输出:
True
Entered spawn tiles
它似乎从未进入Rpc函数:(
我有什么特别明显的遗漏吗?我的游戏经理确实有一个NetworkID连接到它上为了让它工作,我似乎需要做很多事情-我不完全确定哪一个工作正常,但如果你有这些问题,我必须检查这些事情-
OnClientSceneChanged
和OnServerSceneChanged
控制台中有任何错误??如果
short[]rawTiles
太大,一次发送太多数据可能会引发错误另一方面GameManager.cs是否继承自网络行为
?如果不是,网络行为不会发生我的GameManager确实附加了网络ID
。您只能通过组件发送网络内容A
是一种networkbehavior
和B
这会自动要求组件所连接的游戏对象具有NetworkIdendity
控制台不会输出任何错误消息。它可能太大-太短[]rawTiles
是一个扁平的100x100数组。GameManager继承自NetworkBehavior。我现在的假设是,场景更改导致了问题,并且调用Rpc时,GameManager
尚未在客户端上生成。