Как получить данные из словаря Фотон EventContent

Мы получаем этот обратный вызов, используя движок ExitGames Photon Realtime, когда происходит событие

customEventAction(int playerNr,
nByte eventCode,
const ExitGames::Common::Object& eventContent)

Если объект является строкой, мы используем этот код для его извлечения

ExitGames::Common::JString str =
ExitGames::Common::ValueObject<ExitGames::Common::JString>(eventContent).getDataCopy();

Однако отправляемый объект — это словарь. Он отправляется с сервера с помощью BroadcastEvent.

Как мы получаем данные из этого?

Мы попробовали это, но это не имеет никакого смысла:

ExitGames::Common::Dictionary<byte,ExitGames::Common::Object>  pdic
= ExitGames::Common::ValueObject<ExitGames::Common::Dictionary<byte,ExitGames::Common::Object>>(eventContent).getDataCopy();

Я нашел код для получения данных из хеш-таблицы, но это тоже не работает.

Спасибо

Shaun

0

Решение

ExitGames::Common::Dictionary<nByte, ExitGames::Common::Object> dic = ExitGames::Common::ValueObject<ExitGames::Common::Dictionary<nByte, ExitGames::Common::Object> >(eventContent).getDataCopy();

абсолютно правильно и работает для меня.

Причина вашей проблемы должна быть в другой строке.

Когда вы заменяете реализации sendEvent () и customEventAction () в demo_loadBalancing в одном из SDK клиента Photon C ++ следующими фрагментами, тогда эта демонстрационная программа успешно отправляет и получает словарь:

Отправить:

void NetworkLogic::sendEvent(void)
{
ExitGames::Common::ValueObject<ExitGames::Common::JString> obj(L"test");
ExitGames::Common::Dictionary<nByte, ExitGames::Common::Object> dic;
dic.put(1, obj);
mLoadBalancingClient.opRaiseEvent(false, dic, 0);
}

Получать:

void NetworkLogic::customEventAction(int /*playerNr*/, nByte /*eventCode*/, const ExitGames::Common::Object& eventContent)
{
EGLOG(ExitGames::Common::DebugLevel::ALL, L"");
ExitGames::Common::Dictionary<nByte, ExitGames::Common::Object> dic = ExitGames::Common::ValueObject<ExitGames::Common::Dictionary<nByte, ExitGames::Common::Object> >(eventContent).getDataCopy();
const ExitGames::Common::Object* pObj = dic.getValue(1);
ExitGames::Common::JString str = ExitGames::Common::ValueObject<ExitGames::Common::JString>(pObj).getDataCopy();
mpOutputListener->write(L"received the following string as Dictionary value: " + str);
}

Это дает мне следующую строку вывода на принимающем клиенте:

получил в качестве значения словаря следующую строку: test

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]