在Unity中使用Photon(网络多人联机)
Posted 我是新手人机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Unity中使用Photon(网络多人联机)相关的知识,希望对你有一定的参考价值。
在Unity中使用Photon
1. 申请中国区免费PHOTON光子引擎
1-1. 申请账号
- 进入官网,点击右上角的 Sign in
- 登录
1-2. 申请APP
- 点击 CREATE A NEW APP
- 填写信息
1-3. 申请中国区免费光子云
进去填写一下信息,1-2个工作日就会审核通过(一般都能审核通过的)。
2. 在Unity中使用Photon
2-1. 下载插件 PUN2
- 在资源商店下载 PUN2
- 导入到Unity,会弹出 PUN Setup 界面,点击跳过(等一下填)
- 找到 PhotonServerSettings
- 点击 PhotonServerSettings 在 Inspector 面板填写信息
a. 在 Photon 个人主页里面找到申请的APP,填写到 App Id PUN 中
b. 勾选 Use Name Server
c. Fixed Region 填 cn
d. Server 填 ns.photonengine.cn
- 填写完后的信息
3. 打开demo场景查看能否联机
3-1. 将场景添加到 Build Settings 里
3-2. 打包(Build)出来,开两个窗口进行联机
4. 最后效果
如何在 Unity Photon 多人游戏中更改其他客户端变量?
【中文标题】如何在 Unity Photon 多人游戏中更改其他客户端变量?【英文标题】:How can I change other clients variable in Unity Photon multiplayer? 【发布时间】:2016-09-27 13:34:45 【问题描述】:我对 PunRpc 调用有点困惑,我尝试了 PhotonTarget.Others 看看它是否会健康——;在其他客户端上,但它没有工作。
此刻我想知道我怎样才能做到健康——;当我按空格键时在其他客户端上。
这是我尝试过的: 这是命令:
photonView.RPC("healthReduction", PhotonTargets.Others, null);
这就是 RPC
[PunRPC]
void healthReduction()
health--;
Debug.Log("Health--");
但还是不行。
【问题讨论】:
你有播放器脚本的代码吗? 您的日志中有任何内容吗?如果方法不存在或参数不匹配,PUN 会输出错误。您不记录 RPC 调用。你确定它会被调用吗?有关 RPC 使用示例,请参阅 PUN 演示。 问题是通过 RPC 调用,我不能减少 ENEMYS 的生命值,我只能减少我的生命值。因此,当我调用 PhotonTargets.Others 时,它将在我的播放器上执行代码,但只有其他人可以看到我的播放器的更新健康状况,而我不能。我想在 ENEMY 的播放器上执行此代码,但现在我相信 RPC 调用不可能,只能更新您自己的变量,以便其他人可以看到它们,但要获取敌人的变量并修改它是不可能的我相信:/ . 【参考方案1】:我通过使用一个实例并使用 2 个不同的命名脚本解决了这个问题,例如,如果我想从 PlayerManager 访问 PlayerManager1 脚本,我这样做PlayerManager1.Instance.photonView.RPC("reduceMyHealth",PhotonTargets.All,null)
这将调用 PlayerManager1 中的 reduceMyHealth() PunRpc。
为此,您必须将此代码添加到您要访问的脚本中:
static public PlayerManager1 Instance;
和 start()Instance = this;
【讨论】:
【参考方案2】:我认为这很容易解决。 源代码如上。
public class TestPhoton : Photon.PunBehaviour
public PhotonView gameView;
void Start()
gameView = this.GetComponent<PhotonView>();
public void OnClickTest()
photonView.RPC("HealthReduction", PhotonTargets.Others);
[PunRPC]
public void HealthReduction()
health--;
【讨论】:
以上是关于在Unity中使用Photon(网络多人联机)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Unity Photon 多人游戏中更改其他客户端变量?
Unity Gun Ammo 在多人游戏中没有减少问题(可能与我的多人游戏系统:光子有关)