Unity - 未调用 Photon OnJoinedRoom
Posted
技术标签:
【中文标题】Unity - 未调用 Photon OnJoinedRoom【英文标题】:Unity - Photon OnJoinedRoom not being called 【发布时间】:2017-12-23 13:30:35 【问题描述】:我正在使用 photon 为 android 制作 FPS 游戏。 代码如下:
using UnityEngine;
using UnityEngine.UI;
public class SceneLoaderButton : Photon.PunBehaviour
public string roomName, mapNameGL, password;
public GameObject loadingPan;
public MenuRooms menuManager;
// Use this for initialization
void Start ()
Button btn = GetComponent<Button> ();
btn.onClick.AddListener (ConnectCustomRoom);
// Update is called once per frame
void Update ()
void ConnectCustomRoom()
string room = roomName;
RoomInfo[] ri;
ri = PhotonNetwork.GetRoomList ();
bool correct = false;
string passwd, mapName = "";
passwd = password;
foreach (RoomInfo info in ri)
if (info.name == room)
if (info.customProperties ["Password"].ToString() == passwd)
print(info.playerCount + "/" + info.maxPlayers);
if (info.playerCount < info.maxPlayers)
correct = true;
else
menuManager.error("No room for you");
mapName = info.customProperties ["MapName"].ToString ();
else
menuManager.error("Incorrect password");
mapNameGL = mapName;
print(mapNameGL);
if (correct)
print("Correct");
loadingPan.active = !loadingPan.active;
PhotonNetwork.playerName = "Player" + UnityEngine.Random.Range (1000,9999).ToString();
PhotonNetwork.JoinRoom(room);
void OnJoinedRoom()
print("Joined room: " + roomName);
//We joined room, load respective map
Application.LoadLevel(mapNameGL);
这是来自按钮的代码。它被实例化,它应该加入房间,然后加载场景。在其他脚本中,“onjoinedroom”回调有效,即使我继承自 Photon.MonoBehaveiour,而不是 PUNBehaveiour。怎么了?
【问题讨论】:
【参考方案1】:基于 PUN 文档,它是一个虚拟成员,因此您可以覆盖该方法。
尝试将方法更改为:
override void OnJoinedRoom ()
//your codes
//or
public override void OnJoinedRoom ()
//your codes
这个类提供了一个 .photonView 和 PUN 的所有回调/事件 可以打电话。覆盖您要使用的事件/方法。通过扩展 此类,您可以实现单个方法作为覆盖。
希望对你有帮助。
参考: PUN Documentation
【讨论】:
以上是关于Unity - 未调用 Photon OnJoinedRoom的主要内容,如果未能解决你的问题,请参考以下文章
Unity Photon Network CustomPropeties 在加载新场景后未更新
使用Photon引擎进行unity网络游戏开发——Photon常用类介绍