Есть несколько способов справиться с этим.Это зависит от того, для чего вам нужна эта цель, и от того, будет ли она существовать для других клиентов, если на нее не нацелен ни один объект.
Предположим, у вас есть Player, который синхронизируется, и синиймяч и красный шар на сцене.У игрока есть мяч, который они «держат».Вы хотите запустить синхронизацию так, чтобы на всех клиентах, если игрок держит красный шар, он будет держать его для всех клиентов, а если он держит синий шар, он сделает это для всех клиентов.
Проблемасвязывание синего шара в одном клиенте со всеми синими шарами в чужом клиенте.
Вариант а) Присвойте каждому шару имя и создайте статический словарь, сопоставляющий его имя с объектом на сцене (вы можете сделать ихдобавь себя в Awake или Start of ball).Теперь вы можете синхронизировать имя мяча, который держит игрок (строка напротив объекта).Когда клиент получает изменение имени, вы можете обработать изменение имени как поиск его в статическом словаре и установку его как удерживаемого мяча.
Вариант б) Синхронизировать игрока И шары.Все, что связано с логикой, произойдет только для текущего игрока.Таким образом, если местный игрок держит мяч, позиция игрока будет синхронизирована, и позиция шара будет синхронизирована, но больше ничего не произойдет с другими игроками.Это, конечно, предполагает, что это работает для всего, что вы пытаетесь выполнить.
Вариант c) Сериализация мяча.Отправьте данные, которые описывают шар (размер, цвет и т. Д.) И создайте новый экземпляр на стороне клиента.Это НЕ будет привязано к каким-либо существующим шарам на стороне клиента.Вам может понадобиться проверить и уничтожить тот шар, который уже удерживается.Это, вероятно, наименее эффективный способ добиться этого с точки зрения производительности.