问题标签 [unity3d-unet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
341 浏览

unity3d - Unity3d Unet 多人游戏 - 只有服务器主机可以放置建筑物网络感知

我正在编写一个多人游戏,但我坚持使用构建系统 - 我的意思是我已经创建了一个代码来放置块它在主机端工作得非常好(当你在主机上运行这个脚本时,每个客户端都会生成块)但是它不能在客户端工作(块只为本地客户端生成,而不是为服务器和其他客户端生成)。我见过很多类似的问题,但今天没有找到答案。也许你们可以帮我一把。这是我的代码:

PS:我已将网络身份脚本分配给预制件我正在创建网络感知,并且我在我的网络管理器中将该预制件作为已注册的可生成预制件。

0 投票
0 回答
295 浏览

networking - UNET ID 统一 5.4

我正在开发一个 Unity 多人网络应用程序。我已经到了可以在同一台机器上成功运行客户端和主机的地步。但是,当我在一台机器上运行主机并让另一台机器上的客户端尝试连接它时,客户端无法连接。它会搜索直到超时。

我找到了遇到类似问题的人,我在这里找到了一个建议获取 Unity UNET ID 的答案。 http://answers.unity3d.com/questions/990419/how-to-use-unity-51-networking-on-multiple-compute.html#answer-1064955

但是,该答案中的链接现在已损坏,我找不到任何有关获取 Unity 5.4 应用程序的 UNET ID 的信息。有人有使用 Unity 5.4 成功进行跨计算机多人网络的经验吗?

0 投票
1 回答
1068 浏览

unity3d - Unity 生成具有客户端权限的子节点

我目前正在学习整个网络是如何统一工作的。在我的代码中,我正在创建一个由多个预制件制成的宇宙飞船。

这一切都始于一个Hardpoint. AHardpoint可以保存单个对象,稍后将在循环中实例化该对象。

PlayerController(起点)我有这个代码来产生第一个对象,驾驶舱:

接下来是SpawnComponent()位于Hardpoint脚本中的代码:

CmdSpawn,也位于Hardpoint

最后RollThroughDecompression,它只是调用Decompress()函数:

只是为了不遗漏任何信息,Decompress()

抱歉,代码有点混乱/令人困惑,但我一直在努力弄清楚为什么新生成的对象client authority除了生成的第一个对象之外没有(可能是因为它是从 调用的PlayerController)。我已经被这个问题困扰了好几天了。新生成的对象被设置为本地玩家对象的子对象,甚至NetworkServer.SpawnWithClientAuthority在测试时生成:

Trying to send command for object without authority.打电话时CmdSpawn()

NetworkManager在此处输入图像描述

我得到的结果:

在此处输入图像描述

如您所见,驾驶舱(第一部分)按预期生成。但安装在上面的零件Hardpoints没有。澄清一下EmptyHardpoint,就是这样。一个没有子节点的硬点,只是一个带有hardpoint脚本playercontroller并附加到它的空游戏对象。img驾驶舱预制件还包括hardpoints

0 投票
1 回答
1051 浏览

c# - UNET - 让任何玩家向同一个 NetworkIdentity 发送命令

统一版本:5.5

场景示例

  • Light [带有 Light 组件的游戏对象]
  • LightSwitch - [包含:BoxCollider|NetworkIdentity|从 NetworkBehaviour 继承的脚本,当有人点击它的 BoxCollider 时打开/关闭灯光]

灯开关.cs

¿我怎样才能让任何玩家点击LightSwitch并打开/关闭灯?

编辑:按照示例,这是我必须构建的代码:

Player.cs 代码:

多亏了 Unity,只是为了切换灯而已。

0 投票
1 回答
419 浏览

unity3d - 具有 UNET 客户端的权限

我需要修改一个非玩家对象。我能够做到,但由于某些原因,我收到警告:

我已经阅读了统一文档和各种答案,但奇怪的是它确实有效,但我希望阻止警告。

首先有一个创建中性对象的 Manager 对象。这发生在主机上。

然后每个玩家都有以下内容:

主机不会触发警告。只有远程客户端会收到警告。当我有很多客户端时,我可以在编辑器控制台中看到它会打印多少次客户端。但同样,它确实有效,我可以看到新数据正在传播到所有会话,但我预计稍后会出现一些问题。

0 投票
1 回答
629 浏览

c# - Unity WebGL 构建错误:名称 Network 在当前上下文中不存在

我正在尝试使用 Unity3D 和新的 UNET 系统构建多人 WebGL 游戏。它在编辑器中完美运行,并为 Mac 和 Windows 完美构建,但我尝试为 WebGL 构建它,它在多个脚本中给了我这个错误:

当前上下文中不存在名称 Network

它在 WebGL 的编辑器中运行良好,但在我尝试构建时会显示错误。我一直在阅读此文档,但无法弄清楚为什么它没有显示。https://docs.unity3d.com/Manual/webgl-networking.html

我使用的是最新版本的 Unity,5.5

0 投票
1 回答
628 浏览

c# - 如何将网络播放器连接到互联网

我刚刚遵循了一个关于Basic UNet Tut Here的指南,它的产卵网络汽车播放器可以由本地播放器控制。我可以通过统一提供的内置网络管理器 HUD与网络管理器组件一起制作或加入服务器。我能够在不同 PC 上的 LAN 上运行和连接应用程序,但无法在其他网络上连接它。我不知道是什么原因。我是否需要为它制作或购买服务器,或者我做错了什么。

0 投票
0 回答
461 浏览

networking - 在 Unity 中,实现和覆盖网络管理器以创建自定义网络管理器

我需要一些答案来开发统一的服务器。统一如何实现网络管理器来创建用于连接远程服务器的网络管理器?我将为我的游戏开发 Java 套接字服务器,但我找不到任何有关与远程服务器通信的信息。它只是关于本地服务器和客户端。谢谢你的建议。

0 投票
1 回答
789 浏览

c# - Unity Networking 中的附加场景加载

我有一个主要场景,当我启动或加入服务器时,我的播放器正在加载。在播放器的某些动作中,我想在我的主场景中加载附加场景,该场景在客户端上加载良好,但不能通过网络加载。我的其他客户无法观看。我在这里检查了不同的链接,我还发现了这个统一反馈页面,在我看来,这个(添加场景加载到 UNET)功能在统一中不可用。谁能确认 unet 中的附加场景加载不可用,那么还有什么替代方案?

0 投票
2 回答
3078 浏览

c# - Unity Networking-UNet 中的附加场景加载

简短描述:我正在我的 Main Scene 中加载 Additive Scene,它的加载很好,但 Additive 场景的 GameObject(包含Network Identity组件)正在变为 disable

详细信息: 我正在通过此代码加载附加场景,以便将附加场景加载到我的服务器和所有工作正常的客户端中:

尽管它已将我的场景加载到客户端/服务器中,但具有网络身份的对象已禁用(这是默认行为,因为我检查了 Unity UNetSceneObjects,其中指出:

加载场景时,场景中所有带有 NetworkIdentity 组件的对象都将被禁用;在客户端和服务器上。然后,当场景完全加载时,调用 NetworkServer.SpawnObjects() 来激活这些联网的场景对象。这将在服务器场景完成加载时由 NetworkManager 自动完成- 或者可以由用户代码直接调用。

正如文档所述,它将自动激活网络身份对象,但在我的上下文中并没有发生。我的场景加载很好,但它的网络身份对象不活跃。

我做错了什么?

我还尝试通过在新加载的场景中调用 NetworkServer.SpawnObjects()来激活我自己的对象,但它只在服务器端生成对象,同时在客户端显示错误

未找到 1 的生成场景对象 未找到 2 的生成场景对象 未找到 3 的生成场景对象...... . .

任何 Unet Champion 可以帮助我吗?

编辑/更新方法:

我已经根据关于附加场景加载的统一论坛讨论更改了我的代码,它在服务器上加载我的附加场景时出现错误(如下所示),并且我的客户端的场景网络身份对象仍然被禁用:

错误:

使用无效的连接对象调用 Ready():conn=null

另一个代码尝试: