Правильный способ передачи объектов данных в Unity

Я пытаюсь работать над отправкой объекта моего класса сцены из программы на С#, чтобы отобразить его в программе Unity.

Каковы общие способы достижения этого?

Один из вариантов, который я придумал, — это WCF: программа Unity действует как клиент, а другая программа C# — как сервер. В каждом кадре (т. е. в функции обновления Unity) программа Unity запрашивает текущий объект сцены у другой программы C# в режиме запрос/ответ.

Есть ли лучшие варианты? Есть ли более распространенный способ передачи объектов данных в Unity?


person Boozzz    schedule 24.06.2014    source источник


Ответы (1)


Возможно, я констатирую очевидное, но задумывались ли вы над тем, что приложение Unity в каком-то смысле является обычным приложением C#?

Итак, как бы вы обычно вводили данные в проект консольного приложения, если бы у вас была только Visual Studio и пустой новый проект?

Однако, как правило, это зависит от ваших требований, если вы один из многих сумасшедших, создающих MMO для своего первого игрового проекта, вам понадобится какой-нибудь сверхмощный и масштабируемый серверный код и, вероятно, какая-то специальная двоичная сериализация «битовой упаковки». метод для обработки этого сжатия между сервером и клиентом.

Однако, если вы не совсем потеряли его, то, вероятно, вы создаете что-то вроде шутера от первого лица (для этого и был создан Unity) или что-то попроще, не требующее постоянных потоков данных, требующих низкого пинга... вот где ваш сценарий WCF сидит.

В Unity есть некоторые встроенные сетевые функции, но (и это чисто мое мнение) они подходят для больших игровых ситуаций, в которых происходит много всего.

Например... клон minecraft или шутер от первого лица, в котором может участвовать до 16 игроков, вы можете легко использовать встроенную сетевую функциональность единства, помимо того, что вы находитесь на своей собственной территории.

Вот несколько ссылок, которые помогут вам копнуть глубже...

http://blog.ccoder.co.uk/?page=6

http://www.paladinstudios.com/2013/07/10/how-to-create-an-online-multiplayer-game-with-unity/

person War    schedule 24.06.2014
comment
Когда я использую WCF, я получаю следующий вариант: мое приложение Unity отправляет запрос, а другое приложение C# (= хост-приложение) отвечает, отправляя объект в приложение Unity. Я мог бы представить себе это, используя TCP в качестве протокола с включенным SessionMode. Однако я ищу более эффективный способ без этой моды запроса/ответа. Есть ли способ непрерывно передавать объекты данных из приложения C# в приложение Unity асинхронно через UDP (например). Затем мне может понадобиться рабочий поток в приложении Unity, который постоянно получает объекты данных из приложения C# и сохраняет их в приложении Unity. - person Boozzz; 24.06.2014