Unity Multiplayer Different Player Prefabs

So, I have two different player prefabs, player1 and player2. Each one has a canvas attached, canvas1 and canvas2.

I use the next code as NetworkManager:

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using UnityEngine.UI;
using UnityEngine.Networking.NetworkSystem;

public class NetworkController : NetworkManager

    public int chosenCharacter = 0;
    public GameObject[] characters;

    //subclass for sending network messages
    public class NetworkMessage : MessageBase
        public int chosenClass;

    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader)
        NetworkMessage message = extraMessageReader.ReadMessage<NetworkMessage>();
        int selectedClass = message.chosenClass;
        Debug.Log("server add with message " + selectedClass);

        GameObject player;
        Transform startPos = GetStartPosition();

        if (startPos != null)
            player = Instantiate(characters[chosenCharacter], startPos.position, startPos.rotation) as GameObject;
            player = Instantiate(characters[chosenCharacter], Vector3.zero, Quaternion.identity) as GameObject;


        NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);


    public override void OnClientConnect(NetworkConnection conn)
        NetworkMessage test = new NetworkMessage();
        test.chosenClass = chosenCharacter;

        ClientScene.AddPlayer(conn, 0, test);

    public override void OnClientSceneChanged(NetworkConnection conn)


So my problem is that when I connect with my second session it generates canvas2 over canvas1, making player one click canvas2. I would like to only generate the canvas of the player prefab for each session instead of generating them both. Any suggestion?


within a player prefab, you can instantiate the canvas in OnStartLocalPlayer.