GameObject属性
GameObject.activeSelf 是否活动
该属性是一个只读属性我们可以通过打印日志的方式看到运行的结果
GameObject.tag 标签
该属性是一个可读可写的属性
如果要通过代码对游戏对象修改tag值,确保已经在标签列表中添加过要修改的标签
gameObject.tag = “Tag01”;
Debug.Log(gameObject.tag);
GameObject.layer 层
访问或修改游戏对象所在的层,该属性也是可读可写。代码操作方式可tag操作相同
GameObject.name名字
访问或修改游戏对象的名字
访问游戏对象的名字
Debug.Log(gameObject.name);
修改游戏对象的名字 不用提前预设 在游戏运行的时候会自行修改
gameObject.name = “BS”;
克隆对象
克隆游戏对象从效率上讲,克隆一个对象要比创建一个对象效率要高。常用于一些完全相同并且数量庞大的游戏对象,比如发射的子弹对象,每一颗子弹对象是完全一样的,每一次发射子弹都会克隆一个子弹对象,并且让克隆的子弹对象完成自己的生命周期。
克隆对象:
public GameObject prefabObj;(克隆对象的模板)
GameObject 是Object的子类
对某个对象进行克隆(切记Unity之中要把模块填进去)
GameObject table = GameObject.Instantiate(prefabObj);
table.transform.position = new Vector3(i*15,0,0);
和上面的两行代码是一样的
GameObject table = GameObject.Instantiate(prefabObj, new Vector3(15 * i, 0, 0), Quaternion.identity) as GameObject;
激活对象
SetActive(true);
关闭对象
SetActive(false);
创建对象
在Unity场景中出现的所有实体都属于游戏对象
使用脚本来调用游戏对象的方式有两种:
一、将脚本绑定在一个游戏对象上;
二、在代码中动态绑定脚本和删除脚本。
任何一个游戏对象都可以同时绑定多条游戏脚本,并且这些脚本互不干涉,各自完成各自的生命周期。
GameObject.CreatePrimitive(PrimitiveType.Cube);
1.GameObject.Find 查找
2.GameObject.FindWithTag 查找标签
3.GameObject.FindGameObjectsWithTag 查找相同标签的游戏物体列表static GameObject[] FindGameObjectsWithTag (string tag) 返回一个用tag做标识的活动的游戏物体的列表.如果没有找到则 为 空。标签必须在使用之前到标签管理器里面声明。
GameObject obj01 = GameObject.Find("Capsule");
//访问obj01游戏对象的名字和tag
Debug.Log("obj01.name = " +obj01.name +" obj01.tag ="+obj01.tag);
GameObject obj2 = GameObject.FindWithTag("Player");
//获取tag值为Player 的游戏对象
Debug.Log("obj2.name = " + obj2.name);
GameObject obj03 = GameObject.FindGameObjectWithTag("Player");
Debug.Log("obj03.name = " + obj03.name);
//获取所有标签为Person的游戏对象
GameObject[] objArr = GameObject.FindGameObjectsWithTag("Person");
//查看对象数组的中每一个游戏对象的信息
for (int i = 0; i < objArr.Length; i++)
{
Debug.Log("name = " + objArr[i].name + " tag =" + objArr[i].tag);
}
销毁游戏对象
销毁对象
public static void Destroy(Object obj);
在t秒后销毁对象
public static void Destroy(Object obj, t(时间));
立刻销毁游戏对象
public static void DestroyImmediate(Object obj);
对象添加组件
GameObject myCamera = new GameObject();
myCamera.name = “myCamera”;
myCamera.AddComponent();(为对象添加Camera组件)
获取某一组件/脚本的字段,要放到Awake里初始化(赋值);这样才能获取到想要的字段值。
test = myCamera.AddComponent();(获取TestAddComponent脚本)
获得组件:GetComponent
Component(组件)
(三种获得组件的方法)
Component com = m_Camera.GetComponent(typeof(Transform));(获得Transform);
Camera camera_Test = m_Camera.GetComponent();(获得Camera);
Component com_Test = m_Camera.GetComponent(“Camera”);(获得Camera);
Component trans = testobj.GetComponentInChildren();(获得父子孙录中想要的组件)
Component[] components = testobj.GetComponentsInChildren();(获得父子全部的组件)
删除游戏对象组件
删除游戏对象组件的时候一般都不是单独存在的,我们要向删除,必须知道是删除的那个游戏对象身上的游戏组件
void Start ()
{
//获取游戏对象
GameObject m_light = GameObject.Find(“Directional Light”);
//获取组件
Light component = m_light.GetComponent();
//删除组件
Destroy(component);