Photon Networking Unity AllProperties не устанавливается
Я начал использовать Photon Networking для Unity и столкнулся с проблемой. Я хочу добавить в CustomProperties в плеере, а затем я хочу отладить результат. Однако отладка выводит "Null". Я делаю это после того, как комната создана.
Самое смешное в OnPhotonPlayerPropertiesChanged()
он печатает "изменено" и делает это только когда я выполняю SetPlayerPosition()
,
Но если я тогда проверю, есть ли ключ внутри пользовательских свойств, не содержит ли он его, поэтому он не печатает "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
}
2 ответа
Решение
В соответствии с doc-api PUN вы должны сделать это:
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");
}
}