Unity - Photon OnJoinedRoom не вызывается

Я использую фотон, чтобы сделать игру FPS для Android. Вот код:

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. Что случилось?


person user193464    schedule 23.12.2017    source источник


Ответы (1)


согласно документации PUN, это виртуальный член, поэтому вы можете переопределить этот метод.

попробуйте изменить метод на:

override void OnJoinedRoom ()
{
//your codes
}
//or
public override void OnJoinedRoom ()
{
//your codes
}

Этот класс предоставляет .photonView и все обратные вызовы/события, которые может вызывать PUN. Переопределите события/методы, которые вы хотите использовать. Расширяя этот класс, вы можете реализовать отдельные методы как переопределение.

Надеюсь, это поможет вам.

Ссылка : документация PUN

person endrik exe    schedule 26.12.2017