Tag: unity3d unet

Unity Networking-UNet中的加法场景加载

简短说明:我正在我的主场景中加载一个添加场景 ,它的加载很好但是添加场景的GameObject(包含网络标识组件)正在变得禁用 。 详细信息:我正在通过此代码加载一个附加场景,以便添加一个场景加载到我的服务器和所有工作正常的客户端: [ClientRpc] public void RpcLoadLevelAcrossNetwork() { SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); } 虽然它已将我的场景加载到客户端/服务器但是具有网络标识的对象被禁用(这是默认行为,因为我检查了Unity UNetSceneObjects ,其中声明: 加载场景时,将禁用场景中具有NetworkIdentity组件的所有对象; 在客户端和服务器上。 然后, 当场景完全加载时,将调用NetworkServer.SpawnObjects()来激活这些联网的场景对象。 这将在服务器场景完成加载时由NetworkManager自动完成 – 或者可以由用户代码直接调用。 作为文档声明它将自动激活网络标识对象,但它不会在我的上下文中发生。 我的场景加载很好,但其网络标识对象不活动。 我做错了什么? 我还试图通过在我新加载的场景中调用NetworkServer.SpawnObjects()来激活我自己的对象,但它只在服务器端生成对象,同时在客户端显示错误 未找到1个Spawn场景对象的Spawn场景对象找不到2个未找到的Spawn场景对象….. ….. 。 。 任何Unet冠军可以帮助我吗? 编辑/更新方法: 我已经根据添加场景加载的统一论坛讨论更改了我的代码,它在服务器上加载我的附加场景有错误(如下所示),仍然我的客户端的场景网络标识对象被禁用: 错误: 使用无效连接对象调用Ready():conn = null 另一个代码尝试: #region AdditiveSceneLoadingSetup [Command]//calling this for additive scene load- its start public void CmdLoadAdditiveSceneMainCall() { RpcLoadAdditiveScene(); StartCoroutine(LoadAdditiveSceneAtServer()); } […]

如何使用C#中的Unity UNET获取本地网络中所有设备的IP地址?

大家! 我在一个本地网络中有很多设备。 我怎样才能获得所有这些设备的IP地址? 我想做这样的事情: using UnityEngine; using System.Collections; using System.Collections.Generic; public class Tools : MonoBehaviour { //get local ip address public string getIP() { string IP = “”; IP = Network.player.ipAddress; return IP; } //get all ip addresses in local network public List getIPArray() { List listIP = new List(); return listIP; } }

Unity3D。 试图在没有权限的情况下发送对象的命令

我有一个多人回合制战略游戏,需要一个游戏经理,控制当前的游戏状态(轮到谁了)。 这个管理器应该对每个客户端都是通用的,它的状态应该在服务器上同步。 以下是我这样做的方法:游戏管理器对象是NetworkBehaviour,它具有NetworkIdentity,它不是本地玩家权限,也不是服务器权限。 我已经制作了一个自定义的NetworkManager,它在客户端连接上生成游戏管理器,也测试它是否是服务器。 这是一个代码: public override void OnClientConnect(NetworkConnection conn) { ClientScene.Ready(conn); if (NetworkServer.active) { var manager = Instantiate(MultiplayerManagerPrefab, Vector3.zero, Quaternion.identity) as GameObject; var tacticsManager = manager.GetComponent(); NetworkServer.RegisterHandler(MsgType.AddPlayer, tacticsManager.CreatePlayerOnServer); NetworkServer.Spawn(manager); } ClientScene.AddPlayer(0); } 当我在服务器上运行它时它工作正常,它在客户端上创建一个实例并同步从服务器到客户端的变量。 但是,当我尝试从客户端运行命令时,它会忽略它们,抛出此警告: 试图在没有权限的情况下发送对象的命令。 UnityEngine.Networking.NetworkBehaviour:SendCommandInternal(NetworkWriter,Int32,String) 请注意,此游戏管理器是在任何玩家之前生成的,因为它必须负责产生玩家。 我究竟做错了什么?