问题标签 [unity-networking]

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 回答
156 浏览

unity-networking - 防止间歇性丢包导致断线

一直试图在这里找到问题(Unity 开发人员让它看起来像是一种设计选择),但我一直在尝试模拟延迟以查看我的游戏如何在互联网上运行(我也尝试从一个受束缚的客户端连接热点并且它也断开了连接)并发现任何数量的数据包丢失(即使只有 1%)最终都会在几分钟内导致断开连接。

我的游戏可以很好地接收数据,因为您可以看到远程玩家可以正常移动直到断开连接。我认为这与 UNET 的心跳数据包由于某种原因没有被重新发送有关,并且一旦它丢弃了你断开连接的第一个数据包。

如果这是一种设计选择,那么当您显然有一些人可以使用蜂窝连接时,我无法看到 Unity 会如何认为您可以拥有坚如磐石的连接。有人知道这是什么一回事吗?我也试过在 Unity 论坛上提问,现在已经一个多星期没有回复了。

谢谢

0 投票
1 回答
885 浏览

unity3d - In Unity how do you send a message (sync a var, call a command) from Client to server without using the player object

I have a multiplayer unity game (actually it is a two player game),
One player runs as host and the second one connects as client.
But I want to client to choose which scene to load.
Which means I need to either use a [Command] to do so.
But I run into client authority issues and get this error: Trying to send command for object without authority.

If I try to set the objects local authority I get: AssignClientAuthority can only be call on the server for spawned objects.

Even if I remove the authority and reset it it ends up with the same owner.

I have tried sending messages using SendAll too.

So is there another way that I am missing?

0 投票
1 回答
1428 浏览

unity3d - 如何为 WebGL 构建运行 uNET(Unity 网络)主机服务器 - Unity 5.3.5

所以我有一个游戏要导出到 WebGL。它使用 Unity 最新的网络解决方案 uNET(Unity Networking),我选择了 *use websockets 选项。

目前,WebGL 客户端不能作为服务器。因此,为了托管游戏,我在通过编辑器运行游戏时就这样做了。然后在浏览器中,我可以作为客户端加入游戏。

所以很明显我不想让我的电脑通过编辑器成为主机,而网络中的人作为客户加入。

我在想我应该独立构建游戏并在某个服务器上运行独立游戏并以主机身份加入游戏。然后当然我会 24/7 离开服务器,这样任何人都可以通过网络加入。但我不知道如何实现这一点(即使用什么服务),或者这是否是正确的方法。

0 投票
1 回答
1894 浏览

c# - Unity Networking:无法在所有客户端上生成场景对象

我真的不知道如何解决我的问题。我一直在寻找答案,但我找不到任何东西。

我的场景中有一个按钮,客户端和主机都可以按下。当按下按钮时,它会在场景中创建一个立方体。问题在于:立方体只能由主机创建,而主机是唯一可以看到和操作它的用户。我的代码是:

有人可以帮我吗?太感谢了

0 投票
1 回答
509 浏览

unity3d - UNET 专用服务器。我怎样才能使它资源明智?

我的目标是使用 UNET 专用服务器进行生产,但每个会话(3-6 个玩家)超过 100 MB 的 RAM 显然太多了。如何强制服务器不加载模型/音频/纹理?

0 投票
0 回答
144 浏览

unity3d - 什么是 Unity CmdDelegate

找不到任何描述如何在 Unity 中使用 CmdDelegate 的示例。Unity 脚本 API 在描述中只有一行:“Delegate for Command functions”。一些伪代码会有所帮助。

谢谢你。

0 投票
2 回答
1537 浏览

c# - 同步从 Unet/Unity 5 中另一个可交互对象更改的非玩家对象变换?

我的游戏中有一个立方体,它在查看另一个对象时在其初始状态和更大的状态之间徘徊。这在单人游戏中效果很好,但是当我将它带到多人游戏时,我找不到正确的选项组合来让它在两个客户端(一个是主机)上更新。每个玩家仍然可以激活自己的立方体,但不会在另一台机器上显示。该脚本位于具有网络标识的按钮上,它访问也具有网络标识和网络转换的多维数据集。

单人游戏代码参考:

0 投票
1 回答
1740 浏览

unity3d - Unity [UNET] 同步非玩家对象变换

我有一个关于 UNET 系统的问题。

场景中有一些可以拾取的对象。我想在玩家拿起它时同步转换该对象。

该对象有一个选中的NetworkIdentity组件。LocalPlayerAuthority它也有一个NetworkTransform脚本,但转换仅从主机同步到客户端,而不是相反。因此,如果我在主机端移动对象,所有客户端都会看到更改,但如果客户端移动它,则只有特定客户端会看到更改。我需要做什么才能使其在双方同步?

0 投票
2 回答
862 浏览

unity5 - 如何计算来自非玩家对象的所有玩家的得分

我一直在尝试使用 unity 5.4 和 c# 制作火箭联盟类型的游戏。

我已经得到了球员工作和比赛区域的一切。玩家由网络生成器生成,球由球生成器生成,就像教程中的敌人生成器一样。我有两个球可以碰撞球并重置球的位置。但是我如何告诉球员有一个进球呢?我一直在到处寻找,找不到一个很好的例子来说明如何从球向球员传递信息。我有一个文本用户界面,它显示在所有球员的相机上,并且使用 2 个变量来计算得分,所以我想要的是在球与球门碰撞时以某种方式通过球增加这些变量。

据我了解,RPC 调用仅在球员对象之间起作用,如果我尝试将它们放在球和球员之间,同步变量似乎不起作用,任何人有任何提示或可以告诉我我错过了什么?

编辑:对于有同样问题的人。我通过创建一个 scoreManager 对象并让它将分数作为同步变量来解决这个问题,然后我得到了 scoremanager 组件及其脚本并增加了球的分数,然后也为球员获取它并获取分数。

0 投票
0 回答
333 浏览

c# - Unity Networking:当客户端首先加载场景时,网络对象没有出现在客户端上

我在多人游戏中遇到对象实例化问题。游戏布局很简单:玩家进入大厅,一旦每个人都准备好,就会出现倒计时和加载游戏关卡的LobbyManager调用。ServerChangeScene(gameScene)问题是在很多负载上,所有联网对象都没有在客户端上实例化。经过一些游戏测试后,我注意到这似乎只发生在client服务器之前加载场景时 - 当server首先加载时一切都正确显示并且游戏正常运行。有没有办法确保服务器首先加载?

一些代码供参考: