使用JavaScript来获取GameObject很简单,你只需要调用Find()静态方法,并把想要的GameObject的名称作为参数:
private var pawnGO:GameObject;
function Awake(){
pawnGO = GameObject.Find("awn");
}
用C#也很相似:
using UnityEngine;
using System.Collections;
public class PawnGetter : MonoBehaviour {
private GameObject pawnGO;
void Awake (){
pawnGO = GameObject.Find("awn");
}
}
在不考虑两种语言的关键字和格式不同的情况下,代码是完全一样的(第一个代码的第四行和第二个代码的第八行是相同的)。不管代码是强类型还是弱类型,GameObject.Find()方法总是会返回一个GameObject值。
现在,让我们看看如何获得一个GameObject上的组件。假设“PawnMover”组件赋给“Pawn”GameObject,让我们来看看如何使用JavaScript获得“PawnMover”组件:
private var pawnGO:GameObject;
private var pmSCawnMover;
function Awake(){
pawnGO = GameObject.Find("awn");
pmSC = pawnGO.GetComponent("awnMover");
}
基 本上,要获得“PawnMover”组件,我们所需要做的就是从“Pawn”GameObject调用GetComponent()方法,并把所需组件的名称作为参数。除了名称,我们也可以通过组件类型作为参数,但是像上面的例子我们用名字就行了。因为JavaScript是弱类型,返回值为组件,我们不需要把组件给PawnMover类作为结果。在C#中也是一样的:
using UnityEngine;
using System.Collections;
public class PawnGetter : MonoBehaviour {
private GameObject pawnGO;
private PawnMover pmSC;
void Awake(){
pawnGO = GameObject.Find("awn"); //returns a CS0266 error
pmSC = pawnGO.GetComponent("awnMover");//<=returns a CS0266 error
//this is the right way to do it when using C#
pmSC = pawnGO.GetComponent< PawnMover >();
}
}