В Unet,
1. Только СЕРВЕР может порождать любой объект - конец истории
В Unet серверы порождают объекты и все. Конец истории.
2. ВЫ ДОЛЖНЫ ИМЕТЬ объекты игрока. У каждого клиента ОБЯЗАТЕЛЬНО ДОЛЖЕН быть объект игрока.
Совершенно нормально, что объект игрока на самом деле не танк или двуногий, а просто пустой игровой объект. (Иногда называется абстрактным объектом игрока).
У каждого клиента ДОЛЖЕН быть объект игрока - часто просто пустой игровой объект.
3. Относительно создания объектов, имеющих полномочия клиента - см. Пункт 1.
Создавать объекты с полномочиями клиента очень просто. Просто перейдите на страницу документации Manual / UNetSpawning.html и прокрутите вниз до Code (CSharp):
NetworkServer.SpawnWithClientAuthority(treeGo, conn);
Там это объясняется (на самом деле это все, что нужно).
4. Скажем, какой-то конкретный игрок, X, будет иметь власть над объектом. Конечно, вы не можете создать объект, пока X не присоединится!
В строке кода чуть выше люди часто спрашивают откуда, черт возьми, вы знаете, какое соединение NetworkConnection
использовать?
Конечно, это бессмысленно, пока X действительно не присоединится к игре! См. Пункт 2!
Итак, вы могли бы делать такие вещи ...
Пример 1 - ваш материнский корабль только один конкретный клиент. Конечно, сервер, очевидно, должен знать NetworkConnection
этого клиента. Вы сохраните его в переменной networkConnectionToMothership
. Таким образом, в этом примере у вас есть соединение.
or
Пример 2 - клиент (скажем, клиент JohnSmith) хочет создать объект, над которым JohnSmith будет иметь полномочия. Проще говоря, клиент (JohnSmith) просит сервер создать объект. Запрашивает сервер просто означает отправить Command
.
Внутри любой команды (т.е. запущенной на сервере) у вас буквально есть свойство connectionToClient
, которое дает вам необходимое соединение!
Так вот в чем дело.
По этому конкретному вопросу в вашем коде вы вызываете NetworkServer.spawn
.
Ты должен звонить
NetworkServer.SpawnWithClientAuthority(treeGo, conn);
(Найдите это на этой странице документации: Manual / UNetSpawning.html)
и я объяснил выше в примере (2), как вы узнаете, какой conn использовать.
person
Fattie
schedule
10.08.2018