Local player authority issues.

Hey everyone!

First off, I would like to say that I’m extremely new at networking and am working on a project to teach myself unity’s networking. However, I’m running into issues i can’t seem to solve. I have a player object for each player that gets instantiated as soon as they start the game. So far every player connects fine and has his own position in the world.

However, right now I’m trying to print a simple message on the server with a Command as a test. When it try to use isLocalPlayer, it doesn’t seem to recognize it and when I don’t, I get a “Trying to send command for object without authority”.

The code snippets in question, all belonging to the same script.:

	bool isClicked = false;

	void LateUpdate () 
	{
		if (isLocalPlayer && isClient && !isServer) {
			CmdPrint ("Test from a client!");
		}

		if (isClicked) {
			print("isClicked is pressed.");
			if(isLocalPlayer && isClient && !isServer){
				print ("Test1");
				CmdPrint ("first ");
			}
			isClicked = !isClicked;
		}
	}

	void OnGUI() {
		if(GUI.Button(new Rect(20, 20, 200, 40), "Button 1")) {
			isClicked = true;

		}//if
	}//onGUI

Now, whenever I launch it, connect a client and click the button, nothing prints. Turns out for some reason the isLocalPlayer is false. When I remove the isLocalPlayer and leave the other two conditions, i get the “Trying to send command for object without authority” issue. What am I doing wrong in this case? Why is isLocalPlayer false?

The script is attached on to a gameObject that gets instantiated for each player through the NetworkManager. Local authority is ticked too.

@Theoman
Don’t draw the button if it’s not a local player. Say you have multiple scripts like this in the scene, they all draw the button and you don’t know which user’s button you are clicking since they are on top of each other. Just check if(isLocalPlayer) in the OnGUI method and you should be fine.

Also, you don’t need to check if isClient or isServer, only isLocalPlayer is enough.