Unity3D基础--动态创建和设置游戏对象

转载自原文:http://m.blog.csdn.net/blog/smbroe/43488627

1.如何动态创建对象:调用GameObject的CreatePrimitive方法可以按模型进行创建,PrimitiveType中可选的模型有,Cube(立方体),Sphere(球体),Capsule(胶囊),Plane(平原),Cylinder(圆柱);创建出的对象不需要Add之类的就可以显示出来

GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);<span style="font-family:宋体;">//指定游戏对象的位置

2.动态添加组件:通过AddComponent<Rigidbody>();可以为一个GameObject对象添加一个刚体组件,其中Rigidbody表示刚体,我们可以通过更改这个类型来为其添加不同的组件。当我们添加刚体组件后可以获得GameObject的rigidbody对象并对刚体进行设置

cubeObject.AddComponent<Rigidbody>();//为游戏对象添加刚体组件
cubeObject.rigidbody.mass = 0.5f;//设置刚体密度,默认为1
cubeObject.rigidbody.AddForce(Vector3.forward *);//为其施加向前的力

3.动态添加脚本:可以通过AddComponent方法并传入一个string类型对象(表示脚本的名称)来为GameObject对象动态添加脚本。

cubeObject.AddComponent("AutoDestory");//添加脚本文件AutoDestory

4.动态销毁对象:Destroy(cubeObject)是立即销毁游戏对象,Destroy(cubeObject,1)是延迟一秒销毁游戏对象

5.动态销毁脚本:Destroy(cubeObject.GetComponent(“AutoDestory”))销毁cubeObject对象上附加的脚。

6.一般我们在游戏对象不可见时会销毁或停止其动作,在其被摄像同捕捉到可见时执行其动作,这样我们可以复写其中的OnBecameInvisible方法(当游戏对象不可见时被执行),OnBecameVisible方法(当游戏对象可见时被执行)来达到上述效果。

using UnityEngine;
using System.Collections; //当游戏对象不可见时销毁
public class AutoDestory : MonoBehaviour
{ void OnBecameInvisible(){
Destroy (this.gameObject);
}
}

7.复制对象:在游戏中有时相同的对象会用到很多次,例如大量的子弹发射,如果利用复制对象的方法可以提高效率。调用GameObject的Instantiate方法返回一个Object对象进行强转可以得到复制的对象。

GameObject cubeClone = (GameObject) GameObject.Instantiate(cubeObject);

8.动态设置游戏对象的材质,为游戏对象添加贴图:我们可以通过cubeObject.renderer.material获得游戏对象的材质,并对其赋值即可,一般我们可以声明一个public的Material的成员变量,并赋给游戏对象,这样我们可以在Unity的编辑器中随时更改贴图。

using UnityEngine;
using System.Collections; public class Test : MonoBehaviour { public Material cubMeterial; // Use this for initialization
void Start () {
GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);
cubeObject.renderer.material = cubMeterial; } }
上一篇:PHP学习系列(1)——字符串处理函数(4)


下一篇:JavaSE教程-04Java中循环语句for,while,do···while-练习2