in our game, there are only two players in each room so i doing this to update ultimateNumber OnTriggeEnter for each player while the other player can see the updated value
the problem here both player update the value, I want to separate each player only update his own, while other player can see it
public class PlayersPorpertiesManager : MonoBehaviourPunCallbacks
{ public Hashtable playerPropertiesHash;
int ultimateNumber;
int ultimateNumberE;
TextMeshProUGUI ultimateText;
TextMeshProUGUI ultimateTextE;
void Start()
{
// Initialize custom properties for the local player
if (PhotonNetwork.IsConnected && PhotonNetwork.LocalPlayer != null)
{
InitializeCustomProperties(PhotonNetwork.LocalPlayer);
}
}
// Update is called once per frame
void Update()
{
}
private void InitializeCustomProperties(Player player)
{
// Create the hashtables for the local and remote players
playerPropertiesHash = new Hashtable();
//ultimateNumbers
ultimateNumber = GameManager.instance.ultimateNumber;
ultimateNumberE = GameManager.instance.ultimateNumberE;
// Add the custom properties to the hashtables
playerPropertiesHash[PlayersPropertiesEnum.UltimateNumber.ToString()] = ultimateNumber;
playerPropertiesHash[PlayersPropertiesEnum.UltimateNumberE.ToString()] = ultimateNumberE;
// Set the custom properties for the players
player.SetCustomProperties(playerPropertiesHash);
}
public void UpdatePlayerProperty(Player targetPlayer, PlayersPropertiesEnum property, object value)
{
if (targetPlayer != null)
{
Hashtable props = targetPlayer.CustomProperties;
props[property.ToString()] = value;
targetPlayer.SetCustomProperties(props);
}
}
public override void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps)
{
if (targetPlayer != null)
{
// Player properties of other players have been updated
// Handle the updated properties accordingly
Debug.Log($"Player {targetPlayer.ActorNumber} properties have been updated: {changedProps.ToStringFull()}");
int ultimateNumber = (int)targetPlayer.CustomProperties[PlayersPropertiesEnum.UltimateNumber.ToString()];
ultimateText.text = $"{ultimateNumber}";
// Update UI elements for other players
int ultimateNumberE = (int)targetPlayer.CustomProperties[PlayersPropertiesEnum.UltimateNumberE.ToString()];
ultimateTextE.text = $"{ultimateNumberE}";
// Find the corresponding UI elements for the targetPlayer and update them
// ...
// ...
// Update other UI elements for other players based on the updated properties
}
}