根据多人网络 Unity 中的标签随机化玩家

Randomizing players depending on Tag in Multiplayer Network Unity

如何根据玩家在多人游戏中的标签随机化玩家(使用 UNITY Networking 大厅资产)?例如,我生成了带有标签 "Flee" 的玩家,然后我想随机确定他们中谁将成为 "Chaser"。所以如果有 5 个玩家,其中 4 个应该有 "Flee" 标签,另一个应该是 "chaser"。我一直在尝试这样做,但每个客户都会发生这种情况,他们会随机化数字,因此有时客户 A 在他看来会被标记为 "Chaser",而在其他人看来,他会被标记为 "Flee"。所以基本上发生的事情是它在每个客户端随机化,但我想要的是在服务器中随机化只是为了确定 "Chaser" 标签。帮助将不胜感激。谢谢!

您需要覆盖函数 OnServerAddPlayer NetworkManager 或添加新脚本来控制 NetworkManager OnServerAddPlayer 。

我使用覆盖 NetworkManger 并将其称为 CNetworkManger 然后在检查器中我将 2 个对象附加 NetworkIdentity 添加到播放器预制件中。

public override void OnServerAddPlayer (NetworkConnection conn, short playerControllerId) {
            var player = (GameObject)GameObject.Instantiate(spawnPrefabs[{{ YOUR TAG INDEX }}], 
                Vector3.zero, 
                Quaternion.identity);
        }