PUN2是啥东西?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PUN2是啥东西?相关的知识,希望对你有一定的参考价值。
参考技术A 手机的PUN2码,一种类似于第二级密码之类的密码。有需要的时候可以去移动(你的是移动就去移动)要求解决。比如手机卡被锁了。本回答被提问者采纳 参考技术B 手机的PUN2码PUN 2 Unity Photon.LoadLevel、IOnEventCallback 和 RaiseEvent
【中文标题】PUN 2 Unity Photon.LoadLevel、IOnEventCallback 和 RaiseEvent【英文标题】:PUN 2 Unity Photon.LoadLevel, IOnEventCallback and RaiseEvent 【发布时间】:2020-03-10 21:44:04 【问题描述】:我正在使用 PUN 2 开发基于多人回合的游戏。在使用 RaiseEvent 加载场景后实例化对象时遇到问题。
一切都是从这个问题开始的:Synchronizing GameObjects with Players 但看来我必须先解决其他问题。让我解释一下。
我有一个带有“加入队列”按钮的场景,如果没有其他可用且 MaxPlayerCount = 2,它会创建一个房间。所以在第二个玩家加入后,我使用 Photon.LoadLevel(sceneName) 来加载游戏场景。在游戏场景中,我有一个生成一些对象的组件。在这个组件上,我使用 PhotonNetwork.RaiseEvent 将这些对象的位置发送给其他玩家。
PhotonView photonView = containerTile.GetComponent<PhotonView>();
if(PhotonNetwork.AllocateViewID(photonView))
object[] data = new object[]
containerTile.transform.position, containerTile.transform.rotation, photonView.ViewID
;
RaiseEventOptions raiseEventOptions = new RaiseEventOptions
Receivers = ReceiverGroup.Others,
CachingOption = EventCaching.AddToRoomCache
;
SendOptions sendOptions = new SendOptions
Reliability = true
;
PhotonNetwork.RaiseEvent(CustomEvent, data, raiseEventOptions, sendOptions);
public void OnEvent(EventData photonEvent)
if(photonEvent.Code == CustomEvent)
object[] data = (object[])photonEvent.CustomData;
GameObject containerTile = (GameObject)Instantiate(containerPrefab, (Vector3)data[0], (Quaternion)data[1]);
PhotonView photonView = containerTile.GetComponent<PhotonView>();
photonView.ViewID = (int)data[2];
“CustomEvent”是我试图通过使用 IOnEventCallback 接口实现“OnEvent”回调来获取的自定义事件。当调用 OnEvent 时,EventData 代码是“PropertiesChanged(253)”,从文档中它似乎是在 MasterClient 更改房间时调用的,所以我猜 PhotonNetwork.LoadLevel 会这样做。
他们的文档说“当您使用广播选项“打开”调用 OpSetProperties 时,会触发此事件。它包含正在设置的属性。 我正在尝试跳过此 253 事件代码,但我不知道应该如何将“广播选项”设置为关闭,或者我想要实现的方法。
感谢阅读!
【问题讨论】:
只是为了理解,PUN 对PhotonNetwork.Instantiate 一个对象有一个原生特性,它可以让你将位置和旋转传递给其他人。你能解释一下为什么这不是你使用的吗? 【参考方案1】:您不能将自己实例化为网络游戏对象,PUN 不能那样工作。
改为:
使用PhotonNetwork.Instantiate()
使用 IPunPrefabPool 接口创建您自己的系统来生成网络实例(查看 DefaultPool 类了解其内部实现方式)
请务必先完成基础教程,掌握 PUN 的几个重要特性以及如何开始使用它。
https://doc.photonengine.com/en-us/pun/v2/demos-and-tutorials/pun-basics-tutorial/player-instantiation
【讨论】:
嗨,我在网络上实例化资产包对象时遇到问题。我已经尝试过你的解决方案,它在大厅领导端成功实例化对象,但在客户端没有任何反应......你能否提供更多提示,如何在客户端也实例化相同......如果有合适的例子因为那更明显......谢谢......以上是关于PUN2是啥东西?的主要内容,如果未能解决你的问题,请参考以下文章