Unity C#ExitGames Photon PUN Hashtable无法正确更新

时间:2017-01-01 08:03:53

标签: c# unity3d hashtable photon

我正在使用Unity的Photon PUN。我有一些静态类可以跟踪游戏中的玩家数据。以下是更新数据的方法示例...

public static void IsSeated(bool value)
{
    Room room = PhotonNetwork.room;
    Hashtable PlayerSeat1 = new Hashtable();
    object[] seat1 = (object[])room.customProperties["seat1"];
    seat1[0] = value;
    PlayerSeat1.Add("seat1", seat1);
    room.SetCustomProperties(PlayerSeat1);
}

问题是,当我更新此哈希表时,我的所有其他会议室数据都已覆盖了更改。我的所有哈希表都有不同的键。我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题......任何使用带有Hashtables和房间数据的Photon Pun的人都可能感兴趣

当我在初始化方法中初始化所有哈希表数据时,我正在做这样的事情......

房间= PhotonNetwork.room;

        object[] data = new object[]{with data inside};   


        Hashtable GameData1 = new Hashtable();
        GameData1.Add("data1", data);

        Hashtable GameData2= new Hashtable();
        GameData2.Add("data2", data);

        room.SetCustomProperties(GameData1);
        room.SetCustomProperties(GameData2);

然后当我更新任何房间数据时,它会覆盖我的所有数据,即使我有不同的密钥...

但是当我像这样初始化它时......

房间= PhotonNetwork.room;

        object[] first_data = new object[]{with data inside};   
        object[] second_data = new object[]{with data inside}; 

        Hashtable GameData1 = new Hashtable();
        GameData1.Add("data1", first_data);

        Hashtable GameData2= new Hashtable();
        GameData2.Add("data2", second_data);

        room.SetCustomProperties(GameData1);
        room.SetCustomProperties(GameData2);

它正常更新,不会覆盖任何其他Hashtables ......