我有两个不同的Unity项目,一个是HoloLens应用程序,另一个是桌面应用程序。我的目标是通过桌面应用程序操作HoloLens应用程序中的对象。目前,当HoloLens是主机而桌面充当客户端时,我有Unet工作。通过HoloLens进行操作并将其传输到桌面应用程序可以正常工作,但反之亦然。当它充当服务器时,我无法连接到桌面应用程序。我猜这与世界位置的物体锚定有关,但我不确定。
其他人建议HoloLens可以是服务器,客户端可以通过[Command]实现方法向服务器发送命令。我在桌面应用程序上添加了一个playerPrefab,以便它被识别为能够让我发送这些命令的播放器。不幸的是,这似乎不起作用。这会导致以下错误消息:“找不到1的Spawn场景对象”。将预制件添加到场景中并将其作为播放器在NetworkManager上拖动,但这会导致对象不是实际播放器(禁止我向服务器发送命令)。
我确实找到了一种不同的方法:授予非玩家对象权限。我试着这样做:
不幸的是,这导致了一条不同的错误消息:“在肝脏(UnityEngine.GameObject)上找不到传入[-1367249836]的接收器,服务器和客户端应该具有相同的NetworkBehaviour实例[netId = 1]”
我基本上想要实现的是拥有一个非玩家对象(因为桌面应用程序纯粹用于操纵HoloLens中的对象)能够对服务器上的对象进行更改(HoloLens)。
答案 0 :(得分:0)
我同意上述评论,即她应该在同一个项目中开发。我们在工作中成功创建了一个远程支持应用程序,允许桌面用户与HoloLens用户进行交互。我们通过在一个Unity项目中开发两个场景来实现这一点。
通过这样做,我们可以使用相同的脚本来使应用程序在所有设备上运行。 (我们不得不抛出一些if语句来使某些代码设备具体化)。对于桌面,部分3D场景没有问题。