【发布时间】:2018-09-09 13:41:48
【问题描述】:
我有两个不同的 Unity 项目,一个是 HoloLens 应用程序,另一个是桌面应用程序。我的目标是通过桌面应用程序操作 HoloLens 应用程序中的对象。目前,当 HoloLens 是主机而桌面充当客户端时,我有 Unet 工作。通过 HoloLens 进行操作并将其传输到桌面应用程序是可行的,但反之则不然。当它用作服务器时,我无法连接到桌面应用程序。我猜这与物体在世界位置的锚定有关,但我不确定。
其他人建议 HoloLens 可以是服务器,客户端可以通过具有 [Command] 实现的方法向服务器发送命令。我在桌面应用程序上添加了一个 playerPrefab,以便将其识别为可以发送这些命令的播放器。不幸的是,这似乎不起作用。这会导致以下错误消息:“未找到 1 的生成场景对象”。将预制件添加到场景中并将其作为播放器拖到 NetworkManager 上,但这会导致对象不是实际播放器(使我无法向服务器发送命令)。
我确实找到了一种不同的方法:授予非玩家对象权限。我尝试这样做:
- 在 HoloLens 上启动服务器
- 连接到桌面应用程序
- 调用 Rpc 方法来分配客户端权限
不幸的是,这会导致不同的错误消息:“在 Liver(UnityEngine.GameObject) 上找不到传入 [-1367249836] 的接收器,服务器和客户端应该具有相同的 NetworkBehaviour 实例 [netId=1]”
我基本上想要实现的是让一个非玩家对象(因为桌面应用程序纯粹用于操作 HoloLens 中的对象)能够对服务器上的对象(HoloLens)进行更改。
【问题讨论】:
-
它们不应该是两个不同的应用程序。它们必须是同一个。
-
我选择使用两个不同的应用程序的原因是因为一个项目会应用混合现实设置,而另一个则不会。使用相同的应用程序不会导致桌面应用程序出错吗?我可以使用 SystemInfo.deviceType 动态应用正确的设置吗?
-
如果你不使用同一个项目,那么你要么看不到一端发生的事情,要么得到一堆错误。您可以将它们构建为针对不同的设备,但它们需要属于同一个项目。大多数混合现实设置都会在运行时检查。
标签: unity3d uwp hololens unity3d-unet unet