2017-08-31 11 views
3

Photon Networking for Unityを使い始めましたが、問題が発生しました。私は、プレーヤーのCustomPropertiesに追加したいと思うし、結果をデバッグしたい。しかし、デバッグは "Null"を表示します。私は部屋が作られた後にこれを行います。Photon Networking Unity AllPropertiesが設定されていません

面白いのはOnPhotonPlayerPropertiesChanged()で、「変更されました」という印刷が行われ、SetPlayerPosition()を実行したときだけです。

しかし、私はcustompropertiesの中のキーをチェックすればそれは含まれていないので "10"を印刷しないのですか?

void Awake() 
    { 
     SetPlayerPosition(); 
    } 

    public override void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) 
    { 
     Debug.Log("changed"); 
     if (PhotonNetwork.player.CustomProperties.ContainsKey("1")) 
     { 
      Debug.Log("it works"); 
     } 
    } 

    void SetPlayerPosition() 
    { 
     ExitGames.Client.Photon.Hashtable xyzPos = new ExitGames.Client.Photon.Hashtable(); 
     xyzPos.Add(1, "10"); 
     xyzPos.Add(2, "5"); 
     xyzPos.Add(3, "10"); 
     PhotonNetwork.player.SetCustomProperties(xyzPos); 
     // PhotonNetwork.player.SetCustomProperties(xyzPos, null, true); doesnt work either 
    } 
+0

「カスタムプロパティの中のキーがそれを含んでいないかどうかを確認すれば、それを含んでいます」 - それは何ですか? –

+0

ハッシュテーブルにはキーが含まれておらず、値も含まれていません。 –

答えて

0

実際awnserキーが文字列である必要があるということを!

1

PUN's doc-apiによると、あなたはこれを行う必要があります。

void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) 
{ 
    PhotonPlayer player = playerAndUpdatedProps[0] as PhotonPlayer; 
    Hashtable props = playerAndUpdatedProps[1] as Hashtable; 

    Debug.Log(string.Format("Properties {0} updated for player {1}", SupportClass.DictionaryToString(props), player); 
    if (player.CustomProperties.ContainsKey("1")) 
    { 
     Debug.Log("it works 1"); 
    } 
    if (props.ContainsKey("1")) 
    { 
     Debug.Log("it works 2"); 
    } 
} 
関連する問題