How to enable component of children in instantiated prefab?

I’m following Quill18’s Multiplayer FPS Tutorial and in Part 5 we have to enable some components in a instantiated player prefab. However, in my particular case, the player itself (with “MouseLook”, “FPSInputController” and “CharacterMotor” scripts and such) is a children of another GO (caller Player GO).

How can I enable these 3 italicized components, since they’re the components of a children object?

Bear in mind that these 3 scripts are JS, whereas the script that instantiates the player and enable these components is C#.

Below there is my hierarchy for the player GO and script that instantiates players:

37886-playerhierarchy.jpg

    using UnityEngine;
    using System.Collections;
    
    public class NetworkManager : MonoBehaviour {
    
    	public GameObject standbyCamera;
    	SpawnSpot [] spawnSpots;
    
    	// Use this for initialization
    	void Start () {
    		spawnSpots = GameObject.FindObjectsOfType<SpawnSpot> ();
    		Connect ();
    	}
    
    	void Connect () {
    		PhotonNetwork.offlineMode = false;
    		PhotonNetwork.ConnectUsingSettings ("RPGVR 1.0.0");
    		}
    
    	void OnGUI (){
    		GUILayout.Label (PhotonNetwork.connectionStateDetailed.ToString() );
    		}
    
    	void OnJoinedLobby() {
    		PhotonNetwork.JoinRandomRoom ();
    		}
    
    	void OnPhotonRandomJoinFailed() {
    		PhotonNetwork.CreateRoom (null);
    		}
    
    	void OnJoinedRoom(){
    		Debug.Log ("OnJoinedLobby");
    
    		SpawnMyPlayer ();
    		}
    	void SpawnMyPlayer (){
    		if (spawnSpots == null) {
    			Debug.LogError ("No Spawn Spots avaiables. Don't Panic");
    			return;
    		}
    		SpawnSpot mySpawnSpot = spawnSpots[ Random.Range (0, spawnSpots.Length) ];
    		GameObject myPlayerGO = (GameObject) PhotonNetwork.Instantiate("Player GO", mySpawnSpot.transform.position, mySpawnSpot.transform.rotation, 0);
    		//Disable the Standby Camera
    		standbyCamera.SetActive(false);
    		//Enable "Sky Dome" Children of "PlayerGO" Game Object
    		myPlayerGO.transform.FindChild("Sky Dome").gameObject.SetActive(true);
    		//Enable Components in "Player" Children of "PlayerGO" Game Object
    
    		((MonoBehaviour)myPlayerGO.transform.FindChild("Player").GetComponent("MouseLook")).enabled = true;
    //		((MonoBehaviour)myPlayerGO.GetComponent ("FPSInputController")).enabled = true;
    //		((MonoBehaviour)myPlayerGO.GetComponent ("MouseLook")).enabled = true;
    //		((MonoBehaviour)myPlayerGO.GetComponent ("CharacterMotor")).enabled = true;
    //		myPlayerGO.transform.FindChild("Camera 1").gameObject.SetActive(true);
    	}
    }

Please help!

If you want that the C# scripts access to JS scripts, then you have to put the JS scripts into a folder called “Standard Assets”. This way you can do in C#:

yourPlayerGo.GetComponent<YourJsScript>().enabled = true;

Usually mixing JS and C# is not a very good idea, because one of them must be placed in “Standard Assets” and this means that you can access these scripts only one-way (C# to JS or JS to C#). I would suggest to leave convert all the scripts to C# or JS and have one only script type in your project, will be much easier to maintain.