最近在给项目中添加局域网功能时,发现在Unity的新版网络Unet中的NetworkManager下只能添加一个PlayerPrefab,也就是说在每个客户端只能Spawn出相同的角色模型,这在实际游戏项目中是不可能的,整个游戏只有一个模型会使游戏感到单调,然后查了一些资料,在Unity工程中测试了一下,终于找到了解决办法。

解决办法

    解决方案就是:重写NetworkBehavior中的OnServerAddPlayer方法,自己写一个脚本让他继承NetworkManager,不用引擎给的那个NetworkManager组件。


然后将Player添加到各个客户端:


    需要注意的是:要把所有的Player预制体注册进Spawn Prefab中,不然在server端生成了,但在客户端显示不了。

    我在Unity里做了个小demo,有两个角色cube和capsule,自己做了一个简单的UI界面,可以选择指定的角色。 img 文末有下载地址

工程文件下载地址

注:以上的工程是在Unity 5.3.4版本下创建的,其他版本可能略有出入,本文系原创。