У меня работало так: создаю [PunRPC] метод, в котором выполняю самый обычный GameObject.SetActive(bool), и вызываю через photonView.RPC(название метода). Как-то так.
Посмотрел твой код, метод SwitchWeapon должен выглядеть так:
*Метод OnTriggerEnter можно и не обозначать как [PunRPC].
[PunRPC]
public void SwitchWeapon()
{
for (int i = 0; i < unlockWeapons.Count; i++)
{
if (unlockWeapons[i].activeInHierarchy)
{
unlockWeapons[i].SetActive(false);
GameObject currentWepaon = unlockWeapons[i != 0 ? i - 1 : unlockWeapons.Count - 1];
currentWepaon.SetActive(true);
weaponIcon.sprite = currentWepaon.GetComponent<SpriteRenderer>().sprite;
weaponIcon.SetNativeSize();
break;
}
}
}
И вызываешь его через photonView.RPC(nameof(SwitchWeapon), RpcTarget.AllBufferedViaServer);
И ещё, дабы у тебя работал компонент photonView, класс игрока должен "наследоваться" от MonoBehaivourPun, или что-то в этом роде.