我有两个不同的 Unity 项目,一个是 HoloLens 应用程序,另一个是桌面应用程序。我的目标是通过桌面应用程序操作 HoloLens 应用程序中的对象。目前,当 HoloLens 是主机而桌面充当客户端时,我有 Unet 工作。通过 HoloLens 进行操作并将其传输到桌面应用程序是可行的,但反之则不然。当它用作服务器时,我无法连接到桌面应用程序。我猜这与物体在世界位置的锚定有关,但我不确定。
其他人建议 HoloLens 可以是服务器,客户端可以通过具有 [Command] 实现的方法向服务器发送命令。我在桌面应用程序上添加了一个 playerPrefab,以便将其识别为可以发送这些命令的播放器。不幸的是,这似乎不起作用。这会导致以下错误消息:“未找到 1 的生成场景对象”。将预制件添加到场景中并将其作为播放器拖到 NetworkManager 上,但这会导致对象不是实际播放器(使我无法向服务器发送命令)。
我确实找到了一种不同的方法:授予非玩家对象权限。我试图这样做如下:
- 在 HoloLens 上启动服务器
- 连接到桌面应用程序
- 调用 Rpc 方法来分配客户端权限
不幸的是,这会导致不同的错误消息:“在肝脏 (UnityEngine.GameObject) 上找不到传入 [-1367249836] 的接收器,服务器和客户端应该具有相同的 NetworkBehaviour 实例 [netId=1]”
我基本上想要实现的是让一个非玩家对象(因为桌面应用程序纯粹用于操作 HoloLens 中的对象)能够对服务器上的对象(HoloLens)进行更改。