создание объекта для вызова rpc

Сеть в Unity3D

создание объекта для вызова rpc

Сообщение ladon 09 авг 2011, 07:13

Сделал сервер, подключаюсь к нему клиентом, требуется вызывать rpc. Все работает за исключением двух сообщений о ошибках при подключении
View ID AllocatedID: 0 not found during lookup. Strange behaviour may occur
Received state update for view id' AllocatedID: 0' but the NetworkView doesn't exist

объекты создаю вручную при соединении с сервером на клиенте и при старте сервера, прилепил вот такую функцию
Код: Выделить всё
        private void Start()
        {
           gameObject.AddComponent<NetworkView>();
           gameObject.networkView.stateSynchronization = NetworkStateSynchronization.Off;
           viewID = Network.AllocateViewID();
        }


как я понимаю эти сообщения вызываются тем что сервер пытается рассказать о том где у него стоит этот объект при подключении клиента. хотя вроде не должен ибо NetworkStateSynchronization.Off
что еще крутить не понимаю, хелп, как эти сообщения об ошибках побороть?
ladon
UNец
 
Сообщения: 31
Зарегистрирован: 09 авг 2011, 07:03

Re: создание объекта для вызова rpc

Сообщение IDoNotExist 09 авг 2011, 09:12

ladon писал(а):
объекты создаю вручную при соединении с сервером на клиенте и при старте сервера, прилепил вот такую функцию
Код: Выделить всё
        private void Start()
        {
           gameObject.AddComponent<NetworkView>();
           gameObject.networkView.stateSynchronization = NetworkStateSynchronization.Off;
           viewID = Network.AllocateViewID();
        }


Как я понимаю объекты создаете отдельно на клиенте и отдельно на сервере, а потом запихиваете в них NetworkView. Чтото я сомниваюсь что данный вариант будет работать, там еще надо указывать id для каждого NetworkView, не проще ли было вам добавить NetworkView как компонент в ваш объект, а объект запихнуть в префаб, а затем клонировать уже этот префаб с помощью вызова Network.Instantiate(), при старте сервера, на клиентах объекты будут появляться автоматически при подключении к серверу.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: создание объекта для вызова rpc

Сообщение ladon 09 авг 2011, 11:33

> Network.Instantiate()
он насоздает объекты каждого клиента на каждом клиенте.
> Network Instantiate lets you Instantiate a prefab on all clients in a very easy to use way.
если это единственный путь придется делать так, но как то глупо создавать при подключении игрока префабные контроллеры всех других игроков и дизаблить их.
ladon
UNец
 
Сообщения: 31
Зарегистрирован: 09 авг 2011, 07:03

Re: создание объекта для вызова rpc

Сообщение IDoNotExist 09 авг 2011, 13:13

ladon писал(а):> Network.Instantiate()
он насоздает объекты каждого клиента на каждом клиенте.

Тогда я вообще не понимаю смысл вашего вопроса определитесь сначала что вы всетаки хотите сделать.

ladon писал(а):> Network.Instantiate()
если это единственный путь придется делать так, но как то глупо создавать при подключении игрока префабные контроллеры всех других игроков и дизаблить их.

Дак никто не говорил что стандартное сетевое решение идеально, если не нравится используйте другие их более чем достаточно.

Через Network.Instantiate() создаются к примеру Player'ы в сетевой игре, каждый клиент соответствует одному Player'у, и при подключении очередного клиента создается Player на этом клиенте и на остальных а затем синхронизируется по его NetworkView, если же вам нужно городить свой огород то никто вам не запрещает, но перед тем как делать это пройдите все же M2H Networking Tutorial
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: создание объекта для вызова rpc

Сообщение ladon 10 авг 2011, 07:06

Я хочу сделать скрипт который будет рулить вызовами RPC. Без NetworkView он не работает, а этот NetworkView шлет подключающимся клиентам какой то мусор от которого у клиентов вылезает ошибочное сообщение в лог.
Переделал на Network.Instantinate, теперь мусор шлется каждый апдейт. Префаб клиента появляется на сцене. Ошибка вылезает все та же.
ladon
UNец
 
Сообщения: 31
Зарегистрирован: 09 авг 2011, 07:03

Re: создание объекта для вызова rpc

Сообщение ladon 10 авг 2011, 07:15

выкрутил у компонента еще и
Код: Выделить всё
gameObject.networkView.observed = null;

теперь только 1 раз приходит сообщение о ошибке
Код: Выделить всё
View ID AllocatedID: 0 not found during lookup. Strange behaviour may occur
Received state update for view id' AllocatedID: 0' but the NetworkView doesn't exist
ladon
UNец
 
Сообщения: 31
Зарегистрирован: 09 авг 2011, 07:03

Re: создание объекта для вызова rpc

Сообщение gnoblin 10 авг 2011, 13:01

(думаю дело в том что) клиент еще не успел подключится, ему уже шлется какая-то инфа

поправлю у себя - отпишусь (так навскидку не помню как бороться)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: создание объекта для вызова rpc

Сообщение Alimath 01 дек 2011, 13:16

Появилась та же проблема. Кто-нибудь ее уже решил?
Alimath
UNец
 
Сообщения: 14
Зарегистрирован: 04 сен 2011, 18:23

Re: создание объекта для вызова rpc

Сообщение Kann 01 дек 2011, 14:13

а чего тут решать ?
если вылетает ошибка что указанна выше, значит у вас NetworkView не существует на данный момент в сцене, отсюда вывод, либо меняйте свой алгоритм вызова, либо делайте ожидание загрузки сцены полностью, прежде чем принимать сообщения по сети.
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06


Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3