Как сделать SetActive определенному игровому объекту, пренадлежащему 1 игроку, но так, чтобы все остальные это тоже увидели?

В Unity вы можете использовать функцию SetActive для изменения видимости игровых объектов в игре. Чтобы сделать SetActive определенному игровому объекту, принадлежащему одному игроку, но так, чтобы все остальные игроки это тоже увидели, вам понадобится сетевая функциональность.

Первым шагом будет создание многопользовательской сетевой сцены, где каждый игрок будет иметь свое сетевое представление объекта, принадлежащего ему. Затем, для каждого игрового объекта, привязанного к одному игроку, вы можете создать компонент NetworkIdentity и NetworkTransform, чтобы синхронизировать его состояние и положение между всеми игроками в сети.

Далее, вы можете создать скрипт, который будет управлять активностью объекта, на основе сетевых сообщений. Например, если вы хотите, чтобы только игрок 1 видел свой объект, вы можете добавить следующий код к скрипту:

using UnityEngine;
using UnityEngine.Networking;

public class PlayerObject : NetworkBehaviour
{
    [SerializeField] private GameObject playerObject;

    private void Start()
    {
        if (isLocalPlayer)
        {
            // Активируем объект принадлежащий локальному игроку
            playerObject.SetActive(true);
        }
        else
        {
            // Деактивируем объекты принадлежащие другим игрокам
            playerObject.SetActive(false);
        }
    }
}

В этом примере мы используем NetworkBehaviour, чтобы определить, какой игрок имеет авторитет на свой объект. Если isLocalPlayer равен true, то это означает, что данный код выполняется только на стороне локального игрока (т.е. игрока, у которого есть авторитет на объект). В этом случае мы активируем игровой объект для этого игрока. В противном случае, если это не локальный игрок, мы деактивируем игровой объект.

Важно отметить, что для корректной работы данного кода, вы должны использовать сетевую систему Unity для установки соединения между игроками, а также правильно настроить NetworkManager для синхронизации объектов и передачи сетевых сообщений.

Используя указанный подход, каждый игрок увидит активность игрового объекта только для своего персонажа, тогда как остальные игроки будут видеть его в деактивированном состоянии. Это позволяет вам контролировать, какие объекты являются видимыми только для конкретного игрока, но синхронизированы между всеми игроками.