程序员常用的Unity3D核心类及方法

233 阅读2分钟

##前言 创建、克隆、销毁游戏对象

####01 创建游戏对象

GameObject  cube=GameObject.CreatePrimitive(PrimitiveType.Cube);    Cube.name=”cube1”;//设定名字

Cube.renderer.material.color=Color.red;//设定对象的颜色

####02 克隆对象:Instantiate();

GameObject obj=GameObject.Instantiate(cube);//创建一个

03 销毁对象:Destroy();

Destroy(obj,1);//一秒后对象消失

把脚本添加到对象上:

一种是把脚本直接拖到对象上;另一种是通过代码:cube.AddComponent(“script”);销毁对象的脚本:Destroy(cube.GetComponent(“script”));

1、给游戏物体添加名为FoobarScript的脚本    GameObject.AddComponent ("FoobarScript");

2、给游戏物体添加刚体Rigidbody  rb = GameObject.AddComponent ("Rigidbody"); 3、给游戏物体添加球体碰撞器SphereCollider  sc = GameObject.AddComponent ("SphereCollider");


GameObject类

方法:Find()、FindWithTag()、FindGameObjectsWithTag()等

####01 通过名称来查找

GameObject  player = new GameObject("Player");    GameObject  go=GameObject.Find(“Player”);

####02 通过tag标签获取单个游戏对象

GameObject  go=GameObject.FindWithTag(“Player”);

GameObject go=GameObject..FindGameObjectWithTag (“Player”);

####03 通过游戏标签获取多组游戏对象

GameObject[]  go=GameObject.FindGameObjectsWithTag (“Player”);


组件引用函数:

GetComponent            得到组件

GetComponents           得到组件列表(用于多个同类型组件的时候)

GetComponentInChildren   得到对象或对象子物体上的组件

如:  ScriptName other=GameObject.GetComponent();//在对象上添加脚本

print(other.name);//可以通过对象引用脚本中的名字


Time类

属性:deltaTime

如1:

Float a=3.0f;

 Void Update(){

      A-=Time.delatTime;//倒计时 Print(a);

 }

如2:

按下A键,游戏物体向左移动;按下D键,游戏物体向右移动

 float move_h=0;

if (Input.GetKey (KeyCode.A)) { move_h-=Time.deltaTime; }

if (Input.GetKey (KeyCode.D)) { move_h+=Time.deltaTime; }

transform.Translate(new Vector3(move_h,0,move_v));


协同程序(Coroutine)

协同程序,即在主程序运行时同时开启另一段逻辑处理来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。

在Unity3D中,使用MonoBehaviour.StartCoroutine方法即可开启一个协同程序,也就是说该方法必须在MonoBehaviour或继承于MonoBehaviour的类中调用。

在Unity3D中,使用StartCoroutine(string methodName)可以开启一个线程。

Yield

Yield语句是一种特殊类型的Return(返回)语句,它可以确保函数在下一次被执行时,不是从头开始,而是从Yield语句处开始。

可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行

void Start () {

    print("Start开始"); StartCoroutine("Do"); print("Do调用后");

 }

IEnumerator Do(){ 

    print("Do开始");

    yield return  new WaitForSeconds(3.0f);  print("暂停3秒后"); 

 }

运行结果为:Start开始--》Do开始---》Do调用后---》暂停3秒后


Random类(随机数)

float a=Random.value;

int b=Random.Range(0,100)    包括最大和最小

float c=Random.Range(0.0f,1.0f);   包括最小但不包括最大


消息传递函数

GameObject.SendMessage:向自身的脚本中发送消息 GameObject.BroadcastMessag:向自身及子类中发送消息

GameObject.SendMessageUpwards:向自身及父类中发送消息  如:

Sphere:      

  void Start () {

gameObject.SendMessageUpwards ("Do","向父对象发出信息"); } Cube:

void Do(string message){ print (message);

 }

Math方法

Math.Repeat(float t , float leght); 返回t的值,而且t的值在0到legth之间,如果t的值大于length,则t=t%length(取余操作,始终让返回的值小于length)

实例:Mathf.Repeat(Time.time, 3)   //让Time.time的数值除以3取余,得出的值不能大于3