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 *100);//为其施加向前的力
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; } }