使用 Photon Unity Network(多人游戏)在 Unity 中实时同步

Posted

技术标签:

【中文标题】使用 Photon Unity Network(多人游戏)在 Unity 中实时同步【英文标题】:Real time sync in Unity using Photon Unity Network(multiplayer) 【发布时间】:2020-03-09 06:45:30 【问题描述】:

我正在做一个演示项目,我在其中使用 Unity 3D 和 Photon Unity 网络 (PUN) 进行实时游戏。

顶部面板中的人是一个敌方单位,由另一名玩家控制,该玩家对左下角的玩家造成伤害(左侧 1/3 hp)。 但是,右下角的人是治疗者,可以治疗左下角的玩家(均由本地玩家控制)。

这是我的问题!因为它不是基于回合的,并且必须实时发生。如何设计我的多人游戏系统?我之前在回合制游戏中工作过,我只是在远程玩家中传递索引并镜像本地发生的事件。

但是这里的图片中有延迟,我不知道如何进行! 我想做的是,让治疗者在被远程玩家攻击之前在本地以及远程玩家的手机上治疗玩家,或者在治疗者根据事件发生的时间戳治愈他的生命值之前杀死玩家并在两个设备上反映出来。

【问题讨论】:

【参考方案1】:

我认为您对某些双关语网络功能感到困惑。

如果治疗者治愈了你的本地玩家,那么你的本地玩家的远程实例也会如此。当然,您的治疗系统必须联网,请务必阅读我们的基础教程,了解如何实施简单的健康系统。

https://doc.photonengine.com/en-us/pun/v2/demos-and-tutorials/pun-basics-tutorial/player-networking#health_synchronization

比健康管理稍微复杂的是你的玩家和治疗者之间的本地切换。为此,您有两个主要变体。

    在玩家和治疗者之间转移所有权:https://doc.photonengine.com/en-us/pun/v1/demos-and-tutorials/package-demos/ownership-transfer(这是一个 v1 演示,但原则仍然适用于 v2)

    有一个隐形网络玩家,并在你的游戏中使用你自己的逻辑,让玩家匹配这个隐形网络玩家或治疗者匹配它。

【讨论】:

以上是关于使用 Photon Unity Network(多人游戏)在 Unity 中实时同步的主要内容,如果未能解决你的问题,请参考以下文章

csharp 连接到Photon Unity Network并加入或创建房间的组件。

Photon Network Player.SetCustomProperties 不起作用

一Photon 引擎

使用Photon引擎进行unity网络游戏开发——Photon常用类介绍

在Unity中使用Photon(网络多人联机)

Unity - 未调用 Photon OnJoinedRoom