Weapon switching not registering across players

I am trying to make a FPS multiplayer game and have run into an issue regarding switching between primary and secondary weapons. Although each player is able to see what gun they themselves have equipped, they are unable to see the secondary gun of other players when the other players switch guns. this is the current script that is working for the local player.

using UnityEngine;

public class WeaponSwitch : MonoBehaviour {

public int  selectedWeapon = 0;

public GameObject me;

void Start () {
	SelectWeapon ();
}
	
[PunRPC]
void Update () {
		int previousSelectedWeapon = selectedWeapon;

		if (Input.GetAxis ("Mouse ScrollWheel") > 0f) {
			if (selectedWeapon >= transform.childCount - 1) {
				selectedWeapon = 0;
			} else
				selectedWeapon++;
		}

		if (Input.GetAxis ("Mouse ScrollWheel") < 0f) {
			if (selectedWeapon <= 0) {
				selectedWeapon = transform.childCount - 1;
			} else
				selectedWeapon--;
		}

		if (previousSelectedWeapon != selectedWeapon) {
			SelectWeapon ();
		}
	}

[PunRPC]
public void SelectWeapon ()
{
	int i = 0;
	foreach (Transform weapon in transform) 
	{
        if (i == selectedWeapon)
        {
            weapon.gameObject.SetActive(true);
        }
        else
            weapon.gameObject.SetActive(false);
		i++;
	}
}

}

Hi,

you don’t have to mark each function with the [PunRPC] attribute, just those you actually want to use for RPC calls. Currently the weapon switch is also not synchronized and just processed on your local player. This is one thing that can be handled with a RPC call pretty well. Another thing is that the Input made in this frame will be applied to each object with the above described Update function. This can be avoided by using the if (!GetComponent<PhotonView>().isMine) condition.

Since this are quite a few things that have to be changed, I would recommend you taking a look at the Basics Tutorial first and at the RPCs and RaiseEvent documentation page afterwards.