Photon Pun player Custom properties

93 Views Asked by At

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

    }

}
0

There are 0 best solutions below