Using Photon Pun 2.0 on Unity, method not being called.
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
-
Which version of PUN do you use? If it's not 2.41, please update.
0