Стоят у меня 2 танка: за одним сервер, за другим клиент. На танках висят по нетворкВьюшке. Сервер - редактор Юнити, клиент - закомпиленный билд. Задача в том, чтоб передать по сети идентификатор того, по ком игрок попал. Если один из сетевых приемников "узнает" о том, что в него попали, он сам себя взрывает.
Когда стреляю, вывожу вьюшку того, по ком попал, и передаю ее через RPC всем "остальным" вьюшкам. Кроме того, вывожу собственную вьюшку:
скрипт 1 (обработка выстрела и взрывов):
Синтаксис:
Используется javascript
print (hit.collider.gameObject.networkView.viewID);
print(transform.parent.parent.parent.gameObject.networkView.viewID);
SendMessage("ReceiveHitInfo", hit);
print(transform.parent.parent.parent.gameObject.networkView.viewID);
SendMessage("ReceiveHitInfo", hit);
скрипт 2 (у мну тут сидят сетевые вызовы):
Синтаксис:
Используется csharp
void ReceiveHitInfo (RaycastHit hit) {
networkView.RPC("RemoteClientObject", RPCMode.Others, hit.collider.networkView.viewID);
}
networkView.RPC("RemoteClientObject", RPCMode.Others, hit.collider.networkView.viewID);
}
Тут же, функция-приемник:
скрипт 2:
Синтаксис:
Используется csharp
void RemoteClientObject(NetworkViewID nvid) {
SendMessage("SendHitterInfo", nvid);
}
SendMessage("SendHitterInfo", nvid);
}
Соответствующая обработка:
скрипт 1:
Синтаксис:
Используется javascript
function SendHitterInfo(nvid : NetworkViewID) {
print(nvid);
print(transform.parent.parent.parent.gameObject.networkView.viewID);
}
print(nvid);
print(transform.parent.parent.parent.gameObject.networkView.viewID);
}
Теперь тестим. По русски. Стреляем, пишим по кому попали, пишим собственный айди.
На стороне по ком попали: принимаем вью по ком попали, выводим этот вью, и выводим собственный вью.
Тестим. Миссия 1. Сервер стреляет по клиенту
150
1
Транскрипция: Айди по ком попали (по клиенту) - 150, собственная айди (сервера) - 1.
Миссия 2. Клиент стреляет по серверу. Сервер является приемником. Информация на сервере (в редакторе):
1
150
Транскрипция: айди по ком попали(по серверу) - 1, собственный айди (сервера) - 150.
Все немного запутано, сам часто не понимаю верно я думаю или нет. Написал много букв, спасибо если вы хотябы дочитали. Но мораль такова, что в "миссии 2" цифры должны быть одинаковые. Если я клиентом стреляю по серверу, и передаю айди сервера, при этом сервер является приемником информации, то сервер должен вывести - по ком попали (по серверу) и собственный (серверский). То есть 1,1.
Может быть проблема в том, что тест на локальной машине? Вьюшки ведь уникальные. От чего такая путаница? Или ткныте меня носом в мою лужу, которую я не вижу, пожалуйсто.