问题标签 [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 投票
1 回答
19975 浏览

c# - 没有服务器的 Unity3D 中的内置多人游戏?

我听说Unity3D有一个内置的多人游戏功能,它可以在没有服务器的情况下提供服务。但我找不到任何关于它的信息,我找到的所有教程都只是关于使用 Photon(PUD) 或 Google 服务。我知道Photon很好,所以我才开始研究它,并有使用它的计划。

不过我还是想写一些非常简单的不使用服务器的应用程序,比如 One VS One Rock Paper Scissors 游戏。使用 Photon 必须在性能上更好,但在某些情况下,就像我上面所说的,它似乎太多了。另外,免费用户的PUD的CCU只有20个,也就是说只有十个组可以同时玩,比如石头剪刀布游戏。

我看到有人说没有服务器是可能的,但也有人说不可能。

什么是对的?

0 投票
4 回答
17973 浏览

c# - 如何在 UNet/Unity5 中同步非玩家游戏对象属性?

我正在研究和学习 Unity 5、UNET 和网络的一些基础知识。我制作了一个简单的 3D 游戏,您可以在其中四处走动并更改对象的颜色。但是我现在想使它成为多人游戏,而且我在弄清楚如何通过网络发送更改以便所有玩家都可以看到单个玩家的颜色变化时遇到了很多麻烦。

部分问题在于使用较新的 UNET 网络引擎很难找到答案。有时我会遇到适用于旧方式的答案。

所以主要问题是,我如何网络非玩家 GameObject 属性更改?颜色、形状、大小等。

这是我现在拥有的一些代码 - 我有很多不同的版本,所以我只发布当前的:

我尝试了更多解决方案,包括在我想要更改颜色的对象上编写单独的脚本,包括 [SyncVar] 和挂钩函数。我还尝试了 Debug.Log 对我期望更新客户端上的对象的每个函数,并且它们正在使用预期的数据执行。

我真的不知道还能做什么。我觉得这是我想做的一件非常简单的事情,但我在任何问题、教程或其他资源中都没有遇到过同步非玩家游戏对象的情况。任何想法都会有所帮助,谢谢。

0 投票
1 回答
265 浏览

c# - syncing a list of already made bullets UNET

I currently have players spawning in with a click to move functionality moving around a space synced perfectly, but I cant get the bullets to sync properly.

When the player spawns in he creates 60 bullets which are then set inactive and stored until an ability is cast, when the ability gets cast I the bullets get sent active and I have a script that syncs them with all the clients as well, but the bullets are only getting set active on the local client, so the SyncPos script doesn't even run.

Do I need to send a message to a separate game object(ie: the net manager) in order to then send a message out to the other clients and say "hey activate this so you can sync it" or is there a better way? and if so how would I go about doing that.

0 投票
1 回答
692 浏览

unity3d - 没有 NetworkServer.Spawn 的 SyncVar

我有一个在运行时生成和配置的有点复杂的对象树。由于执行此操作所需的信息对服务器和客户端都可用,我希望双方独立生成对象,然后将联网的部分链接起来以进行同步。

也就是说,我需要一种方法来SyncVar处理存在于服务器和客户端上但最初不是通过NetworkServer.Spawn. 有没有办法手动配置 NetworkIdentity 以便 Unity 网络系统理解某物是同一个对象?

我有能力自己通过网络唯一地识别这些对象,我只需要一种方法将其传达给 Unity。NetworkIdentity.netId是只读的,所以这不是一个选项。

0 投票
0 回答
210 浏览

unity3d - NetworkServer.Spawn 不激活对象

我想在不调用的情况下在客户端上生成一个对象Awake,因此我可以通过 RPC 发送来首先对其进行配置。这可能吗?

什么不起作用:

  • 在调用之前停用服务器对象NetworkServer.Spawn
  • 停用预制件
  • ClientScene.RegisterSpawnHandler在委托中停用客户端对象
  • 在 -10 优先级组件的 Awake 中停用客户端对象(仍然调用其他 Awake)
0 投票
0 回答
810 浏览

c# - Unet:使用客户端权限生成其他对象

我正在使用 Unity 中的新 Unet 功能制作一个简单的井字游戏,以学习如何使用 Unet 功能。

我有一个大脑代码,它会产生 9 个精灵来组成电路板,并且正在努力在点击时将它们设置为 x。我使用 [synchvar] 来跟踪精灵的状态,并使用钩子在更改时[SyncVar]更改图像。如果我控制服务器,游戏运行完美,但如果我控制客户端,则什么都不做。据我了解,您可以通过向对象添加本地玩家权限并使用 [command] 来纠正此问题,但这似乎并不能解决问题。下面的代码是附加到我的精灵的。问题已得到解答,下面的代码反映了更正。

我的瓷砖由以下代码生成

我的 playerobjects 有以下代码

0 投票
0 回答
2431 浏览

unity3d - 试图在没有权限的情况下为对象发送命令

我正在实例化一个带有事件触发器“Pointer Down”的孩子(MoveRightBtn)的游戏对象(画布)。这是一个按钮,当我触摸它时,我应该移动我的播放器。但是当触摸时会发生此错误:

试图在没有权限的情况下为对象发送命令。

怎么了?

代码

公共类 playerShoot : NetworkBehaviour {

}

播放器:http : //i.stack.imgur.com/1RN1V.png

画布:http://i.stack.imgur.com/zu8Ax.png

画布子:http: //i.stack.imgur.com/oXwTy.png

0 投票
1 回答
1560 浏览

unity3d - Unity Network Material颜色更改不起作用

我有一个播放器对象:网络身份和网络转换。也是一个具有 NetworkManager 的对象。当我连接 2 台电脑时。我可以看到两个球员的动作。那也行。但是我的比赛中有两个球。一绿一红。

这是改变球颜色的代码。

当球员击球时,球会改变颜色。它对两个玩家都很好。但是当一名球员改变了球的颜色时,他自己也会改变。不适用于其他玩家。当一名球员改变球的颜色时,我希望所有球员都能看到相同的颜色。我尝试添加网络身份并检查我的球的“本地玩家权限”。但它没有用。

0 投票
1 回答
350 浏览

unity3d - Unity Network ClientRpc 问题。不同步

我有两名球员,这些球员正在击球。每当他们击球时,球的颜色就有可能发生变化。(绿色或红色)。但是当一个球员击球时,它只会改变他自己的球颜色,其他球员的球是相同的颜色。我希望所有玩家都能看到相同的颜色。这是代码:

球对象的网络身份已检查“本地玩家权限”。你们能告诉我我做错了什么吗?

谢谢你。

0 投票
1 回答
1420 浏览

unity3d - Unity 网络中的“发送大消息失败”

Unity 建议可以通过在 NetworkBehaviour 中覆盖 OnSerialize 来完成更复杂对象的自定义同步。但是,如果您尝试输入超过大约 1500 个字节,NetworkWriter 似乎只是放弃并出错。

在较低级别的上下文中,我希望对网络消息有这种大小限制,并自己将它们分块。不过,HLAPI 并没有真正公开在 OnSerialize 中执行此操作所需的功能;我该如何解决?