- Home /
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?
But did u set a networkview to the light? Can the light be seen by both the players or only by one ?
I set a networkview on the light yet. and all players are able to see it.
Answer by FLASHDENMARK · Sep 10, 2013 at 03:28 PM
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);
}
Your answer
Follow this Question
Related Questions
Network.RemoveRPCs Problem. 1 Answer
RPC setName() not working correctly 0 Answers
Unity3d Network - Cant See Connected Players 3 Answers
Network Instantiate PlayerPrefab Problem 2 Answers
Can't send RPC function since no connection was started 1 Answer