GameObject.GetComponent Manual     Reference     Scripting  
Scripting > Runtime Classes > GameObject
GameObject.GetComponent

function GetComponent (type : Type) : Component

Description

Returns the component of Type type if the game object has one attached, null if it doesn't. You can access both builtin components or scripts with this function.

GetComponent is the primary way of accessing other components. From javascript the type of a script is always the name of the script as seen in the project view. Example:

JavaScript
function Start () {
var curTransform : Transform;

curTransform = gameObject.GetComponent(Transform);
// This is equivalent to:
curTransform = gameObject.transform;
}

function Update () {
// To access public variables and functions
// in another script attached to the same game object.
// (ScriptName is the name of the javascript file)
var other : ScriptName = gameObject.GetComponent(ScriptName);
// Call the function DoSomething on the script
other.DoSomething ();
// set another variable in the other script instance
other.someVariable = 5;
}

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
void Start() {
Transform curTransform;
curTransform = gameObject.GetComponent<Transform>();
curTransform = gameObject.transform;
}
void Update() {
ScriptName other = gameObject.GetComponent<ScriptName>();
other.DoSomething();
other.someVariable = 5;
}
}

import UnityEngine
import System.Collections

class example(MonoBehaviour):

def Start():
curTransform as Transform
curTransform = gameObject.GetComponent[of Transform]()
curTransform = gameObject.transform

def Update():
other as ScriptName = gameObject.GetComponent[of ScriptName]()
other.DoSomething()
other.someVariable = 5

function GetComponent.<T> () : T

Description

Generic version. See the Generic Functions page for more details.

function GetComponent (type : String) : Component

Description

Returns the component with name type if the game object has one attached, null if it doesn't.

It is better to use GetComponent with a Type instead of a string for performance reasons. Sometimes you might not be able to get to the type however, for example when trying to access a C# script from Javascript. In that case you can simply access the component by name instead of type. Example:

JavaScript
function Update () {
// To access public variables and functions
// in another script attached to the same game object.
// (ScriptName is the name of the javascript file)
var other : ScriptName;
other = gameObject.GetComponent("ScriptName");
// Call the function DoSomething on the script
other.DoSomething ();
// set another variable in the other script instance
other.someVariable = 5;
}

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
void Update() {
ScriptName other;
other = gameObject.GetComponent("ScriptName") as ScriptName;
other.DoSomething();
other.someVariable = 5;
}
}

import UnityEngine
import System.Collections

class example(MonoBehaviour):

def Update():
other as ScriptName
other = (gameObject.GetComponent('ScriptName') as ScriptName)
other.DoSomething()
other.someVariable = 5