Problem with network flashlight

HI.
I made a flashlight script that works when the player presses the F key it toggles the spot light and plays a click sound but for some reason it doesn’t work over the network.

Here’s my code so far.

using UnityEngine;
using System.Collections;

/// <summary>
/// This script allows the player to toggle a light with the F key.
/// </summary>

public class FlashLight : MonoBehaviour {
	
	public AudioClip lightToggle;
	
	private bool _lightEnabled = false;
	
	// Use this for initialization
	void Start () 
	{
		if(networkView.isMine == true)
		{
			//nothing here.
		}
		
		else
		{
			enabled = false;
		}
	}
	
	// Update is called once per frame
	void Update () 
	{
    	if(Input.GetKeyDown(KeyCode.F))
		{
			_lightEnabled = !_lightEnabled;
			Debug.Log("F");
        	networkView.RPC ("ToggleFlashlight", RPCMode.AllBuffered);
		}
	}
	
	[RPC]
	void ToggleFlashlight()
	{
		if(_lightEnabled == true)
		{
			light.enabled = false;
			audio.PlayOneShot(lightToggle);
		}
		
		if(_lightEnabled == false)
		{
			light.enabled = true;
			audio.PlayOneShot(lightToggle);
		}
	}
}

It should be working, but when I open my game with 2 clients and press the F key on one of them, It only toggles the light for the one pressing the key while the other client can’t see the light toggling.

Does anyone know what to do to make this work?

The problem is that you are not setting the boolean value of _lightEnabled on the receiving end of the RPC.

Just remember to set the value:

[RPC] void ToggleFlashlight() {
    _lightEnabled = !_lightEnabled;     //Right here.

    light.enabled = !_lightEnabled;

    audio.PlayOneShot(lightToggle);
}

And remember to remove this so that you don’t set the value twice locally:

if(Input.GetKeyDown(KeyCode.F)){
    //_lightEnabled = !_lightEnabled;   //And remove this 
    Debug.Log("F");
        networkView.RPC ("ToggleFlashlight", RPCMode.AllBuffered);
}