Using Photon Pun 2.0 on Unity, method not being called.

Options

Hello! I am using 2022.1.2.1f1 version of unity.


I am currently following a tutorial from Blackthornprod: https://www.youtube.com/watch?v=D28Drg9MCi4


For some reason, a method is not being called.


Here are the scripts:

//

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using Photon.Pun;

using Photon.Realtime;

using UnityEngine.UI;


public class LobbyManager : MonoBehaviourPunCallbacks

{

   public InputField roomInputField;

   public GameObject lobbyPanel;

   public GameObject roomPanel;

   public Text roomName;


   public RoomName roomNamePrefab;

   public Transform contentObject;

   List<RoomName> roomNamesList = new List<RoomName>();


   public float timeBetweenUpdates = 1.5f;

   float nextUpdateTime;


   public List<PlayerItem> playerItemsList = new List<PlayerItem>();

   public PlayerItem playerItemPrefab;

   public Transform playerItemParent;


   private void Start()

   {

     PhotonNetwork.JoinLobby();

   }


   public void OnClickCreate()

   {

     if (roomInputField.text.Length >= 1 && roomInputField.text.Length <= 10)

     {

       PhotonNetwork.CreateRoom(roomInputField.text);

     }

   }


   public override void OnJoinedRoom()

   {

     base.OnJoinedRoom();


     lobbyPanel.SetActive(false);

     roomPanel.SetActive(true);

     roomName.text = PhotonNetwork.CurrentRoom.Name;


     UpdatePlayerList();

   }


   public override void OnRoomListUpdate(List<RoomInfo> roomList)

   {

     base.OnRoomListUpdate(roomList);


     if (Time.time >= nextUpdateTime)

     {

       UpdateRoomList(roomList);

       nextUpdateTime = Time.time + timeBetweenUpdates;

     }

   }


   void UpdateRoomList(List<RoomInfo> list)

   {

     foreach (RoomName name in roomNamesList)

     {

       Destroy(name.gameObject);

     }


     roomNamesList.Clear();


     foreach(RoomInfo room in list)

     {

       RoomName newRoom = Instantiate(roomNamePrefab, contentObject);

       newRoom.SetRoomName(room.Name);


       roomNamesList.Add(newRoom);

     }

   }


   public void JoinRoom(string roomName)

   {

     PhotonNetwork.JoinRoom(roomName);

   }


   public void OnClickLeaveRoom()

   {

     PhotonNetwork.LeaveRoom();

   }


   public override void OnLeftRoom()

   {

     base.OnLeftRoom();


     roomPanel.SetActive(false);

     lobbyPanel.SetActive(true);

   }


   public override void OnConnectedToMaster()

   {

     base.OnConnectedToMaster();


     PhotonNetwork.JoinLobby();

   }


   public void UpdatePlayerList()

   {

     foreach (PlayerItem item in playerItemsList)

     {

       Destroy(item.gameObject);

     }


     playerItemsList.Clear();


     if (PhotonNetwork.CurrentRoom == null)

     {

       return;

     }


     foreach (KeyValuePair<int, Player> player in PhotonNetwork.CurrentRoom.Players)

     {

       PlayerItem newplayerItem = Instantiate(playerItemPrefab, playerItemParent);

       newplayerItem.SetPlayerInfo(player.Value);


       if (player.Value == PhotonNetwork.LocalPlayer)

       {

         newplayerItem.ApplyLocalChanges();

       }


       playerItemsList.Add(newplayerItem);

     }

   }


   public override void OnPlayerEnteredRoom(Player newPlayer)

   {

     base.OnPlayerEnteredRoom(newPlayer);


     UpdatePlayerList();

   }


   public override void OnPlayerLeftRoom(Player otherPlayer)

   {

     base.OnPlayerLeftRoom(otherPlayer);


     UpdatePlayerList();

   }

}

\\

and:

//

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

using Photon.Pun;

using Photon.Realtime;


public class PlayerItem : MonoBehaviour

{

   public Text playerName;

   public Color highlightColor;

   public GameObject leftArrowButton;

   public GameObject rightArrowButton;

   private Image backgroundImage;


   private void Start()

   {

     backgroundImage = GetComponent<Image>();

   }


   public void SetPlayerInfo(Player _player)

   {

     playerName.text = _player.NickName;

   }


   public void ApplyLocalChanges()

   {

     backgroundImage.color = highlightColor;


     leftArrowButton.SetActive(true);

     rightArrowButton.SetActive(true);

   }

}

\\


ApplyLocalChanges(), for whatever reason, is not being called. I am a unity beginner programmer, and I have no idea how Photon works either. Thanks for the help.

Answers

  • Tobias
    Tobias admin
    edited February 2023
    Options

    Which version of PUN do you use? If it's not 2.41, please update.