问题标签 [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.
unity3d - 将 NetworkTransform 与 RigidBody 一起使用时出现 NullReferenceException
当我尝试使用 NetworkServer.Spawn 创建一个带有刚体和 NetworkTransform 设置为 Sync Rigidbody 3D 的对象时,我得到了这个:
NullReferenceException:对象引用未设置为对象 UnityEngine.Networking.NetworkTransform.SerializeMode3D 的实例(UnityEngine.Networking.NetworkWriter writer)(在 C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkTransform.cs:251)
unity3d - 生成的玩家无法与服务器通信
我正在使用本地 WAMP 服务器来连接所有内容。当我启动服务器然后连接客户端时,我没有收到任何错误。在玩家生成之前,一切似乎都运行良好,它告诉我“SkeletonPlayer(Clone) (UnityEngine.GameObject) 的 SpawnObject,NetworkServer 未激活。如果没有活动的服务器,无法生成对象。” 关于发生了什么的任何想法?
unity3d - UNet 客户端数据错误:MessageToLong
根据手册,我正在通过 NetworkServer.SendToAll 从服务器发送一些基本网络消息。一旦我达到这些的特定吞吐率,客户端就会开始使用MessageToLong
(sic) in出错UNetStaticUpdate
。这不是(正如人们所认为的)消息太长的问题,因为它们仅在数量上发生变化,而不是大小。
我猜在幕后有一些缓冲机制无法跟上?
c# - 客户端-服务器-客户端* 游戏系统
我正在 Unity 中构建多人游戏。为此,我必须将一些值从客户端发送到通过服务器连接的两个或多个客户端。我想将其构建为服务器正宗游戏。客户将使用 Android,他们的数据将通过服务器同步(可能是一些 PHP 函数或者其他,我不太清楚)。
我可以将数据从游戏发送到我的服务器,但是如何通过我的服务器将该数据发送到其他客户端?
实际上我不想同步所有玩家场景(即可以使用 Unity 的内置网络或 Photon 完成的 gameObjects 位置),因为我想向他们展示不同的视图,这就是为什么我必须通过我的客户端在客户端之间进行通信自己的服务器。
谁能帮帮我?非常感谢任何帮助链接或工具名称或任何类型的教程链接。
c# - UNET 多人游戏,让两个玩家都与 gameObject 交互,在主机和客户端上同步更改
我想创建一个简单的演示。我希望在平面中间有一个立方体,当您单击它时会改变颜色。(这很容易实现)我希望有两个玩家轮流点击立方体。只有轮到你时,立方体才会改变颜色。如果立方体改变颜色,改变将反映在两个玩家的屏幕上。我一直在查看 UNET 的示例, http: //forum.unity3d.com/threads/unet-sample-projects.331978/,其中大多数都有一个您可以通过键盘控制的网络角色,以及这方面把我甩了。我是否仍然需要创建 2 个播放器,但只是让它们不可见并且没有控制脚本?我的块应该是预制件吗?这是我的块的脚本:
另外我会注意到我的 Block 目前不是预制件。我启用了网络身份组件,以及网络转换->同步转换。当我启动服务器主机时,我可以更改块的颜色,但客户端无法查看这些更改。当客户端单击该块时,除了错误消息:Trying to send command to the object without authority,什么也没有发生。
任何帮助,将不胜感激!谢谢 http://docs.unity3d.com/Manual/UNetSetup.html
unity3d - 网络旋转同步
我的 Unity 版本是 5.2.3f1,我正在尝试同步子游戏对象的旋转,在本地工作得非常好,但它没有出现在其他客户端中。我尝试了所有我能找到的东西,但一无所获。
这样做的原因是要旋转 FPS 身体,所以,我正在尝试旋转 Spine2(旋转相机不是我最好的解决方案)。我正在使用 Mixamo 角色进行测试,最后我将拥有 Mixamo 自动装配的角色,因此我在这里制作的所有内容都将兼容。
我尝试使用 Network Transform Rigidbody 3D,它只同步角色本身,而不是 Spine2,我尝试过 Network Transform Child 和官方骨架同步。
在脚本部分,我尝试了很多东西,最有希望的是这样的:
它来自 youtube 上的 UNET 教程系列,Gamer To Game Developer 用户。
我将它附加到 Spine2 上,但仍然无法正常工作,但是当我将其附加到主角时,它起作用了。
也试过这个:
但我认为这是针对旧版本的 Unity。
为了进行旋转,我正在使用A Free Simple Smooth Mouselook
我编辑了它,这行:
基本上,我将 Vector3.right 更改为 Vector3.forward 并仅在未按下鼠标右键的情况下转换 Vector3.right。该脚本附加到 Spine2 并在开始时通过脚本激活 if(isLocalPlayer)。
有一张当前层次结构的图片:
(有些摄像头只是为了测试,主摄像头是FirstPersonCamera,提取自标准资产)
我注意到,如果我调试 Spine2 旋转日志,它只会给我从 0 到 1 的值。
unity3d - Unity3D HLAPI 网络单人播放开销
使用 Unity3D 引擎的高级网络 API (HLAPI) 似乎是一种孤注一掷的方法。对于任何希望在多人游戏中使用的游戏对象,(大多数)行为都需要实现为NetworkBehaviour
s,并且需要网络组件。此外,所有场景都需要网络管理器。我宁愿没有所有单人资产的重复网络启用版本,而且似乎预期的做法是将单人游戏实现为仅具有单个(本地主机)的基于 LAN 主机的网络游戏客户。
我担心的是,在单人模式中,HLAPI 的东西绝对会导致大量开销,这是游戏的主要焦点。这是一个有效的担忧吗?
我考虑了几种缓解技术,但它们在可维护性和代码复杂性方面提出了自己的问题:
- 两种模式所需的预制件将被复制(违反 DRY:对一个预制件的更改需要手动镜像到另一个)
- 用多人游戏动态修改或替换单人游戏资产,反之亦然(复杂且可能容易出错)
有哪些更好的缓解技术?或者他们甚至需要?
c# - Unity Networking:在多人游戏中翻转精灵不会翻转主机
我正在开发一款小型多人 2d 平台游戏。我已经设法让它在网络上复制动画、运动和翻转精灵,但是我有一个我无法解决的错误。翻转精灵的代码非常适合宿主——他可以看到其他玩家在左转或右转时换边,但其他人看不到宿主翻转。第三个玩家也看不到第二个玩家转等。有些事情不对,如果有人可以看看我的代码,那就太好了。
主播放器脚本中的代码:
播放器上的附加Player_SyncPosition脚本中的代码:
编辑:
播放器
Player_SyncPosition
c# - 网络大厅管理器 Unity3D 中的不同预制件
我想让每个客户在大厅中选择他们的玩家预制件,当游戏开始时,我想为客户实例化选定的预制件。我在 LobbyManager 中定义了变量,但它不起作用。它总是与同一个主机。我该如何解决这个问题?
这是我的代码: