1

我有两个不同的 Unity 项目,一个是 HoloLens 应用程序,另一个是桌面应用程序。我的目标是通过桌面应用程序操作 HoloLens 应用程序中的对象。目前,当 HoloLens 是主机而桌面充当客户端时,我有 Unet 工作。通过 HoloLens 进行操作并将其传输到桌面应用程序是可行的,但反之则不然。当它用作服务器时,我无法连接到桌面应用程序。我猜这与物体在世界位置的锚定有关,但我不确定。

其他人建议 HoloLens 可以是服务器,客户端可以通过具有 [Command] 实现的方法向服务器发送命令。我在桌面应用程序上添加了一个 playerPrefab,以便将其识别为可以发送这些命令的播放器。不幸的是,这似乎不起作用。这会导致以下错误消息:“未找到 1 的生成场景对象”。将预制件添加到场景中并将其作为播放器拖到 NetworkManager 上,但这会导致对象不是实际播放器(使我无法向服务器发送命令)。

我确实找到了一种不同的方法:授予非玩家对象权限。我试图这样做如下:

  1. 在 HoloLens 上启动服务器
  2. 连接到桌面应用程序
  3. 调用 Rpc 方法来分配客户端权限

不幸的是,这会导致不同的错误消息:“在肝脏 (UnityEngine.GameObject) 上找不到传入 [-1367249836] 的接收器,服务器和客户端应该具有相同的 NetworkBehaviour 实例 [netId=1]”

我基本上想要实现的是让一个非玩家对象(因为桌面应用程序纯粹用于操作 HoloLens 中的对象)能够对服务器上的对象(HoloLens)进行更改。

4

1 回答 1

0

我同意上面的评论,它应该在同一个项目中开发。我们在工作中成功创建了一个远程支持应用程序,允许桌面用户与 HoloLens 用户交互。我们通过在一个 Unity 项目中开发两个场景来实现这一点。

  1. 桌面场景
  2. HoloLens 场景

通过这样做,我们能够利用相同的脚本使应用程序在所有设备上运行。(我们必须加入一些 if 语句来使某些代码设备特定)。对于桌面部分,3D 场景构建没有问题。

于 2018-04-01T16:16:50.693 回答