Unity 入门 Gameobject类

 1. Gamaobject 类中 属性GameObject.activeSelf 是否活动

                                                  GameObject.tag 标签

                                                  GameObject.layer 层

                                                   GameObject.name名字


 2. 创建游戏对象                                       

     在Unity场景中出现的所有实体都属于游戏对象,比如系统自带的立方体、球体以及美工制作的.FBX游戏模型等。游戏对象与脚本联系常紧密,因为游戏对象之间的一切交互都需要使用脚本来完成。
    使用脚本来调用游戏对象的方式有两种:
一、将脚本绑定在一个游戏对象上;
二、在代码中动态绑定脚本和删除脚本。
任何一个游戏对象都可以同时绑定多条游戏脚本,并且这些脚本互不干涉,各自完成各自的生命周期。
  脚本创建游戏对象:         GameObject.CreatePrimitive(PrimitiveType.Cube);

3.游戏对象的克隆

克隆游戏对象从效率上讲,克隆一个对象要比创建一个对象效率要高。常用于一些完全相同并且数量庞大的游戏对象,比如发射的子弹对象,每一颗子弹对象是完全一样的,每一次发射子弹都会克隆一个子弹对象,并且让克隆的子弹对象完成自己的生命周期。
public static Object Instantiate (Object original)
这实际上在Unity和使用复制(ctrl+D)命令是一样的。如果一个游戏物体,绑定了组件或脚本,将克隆整个游戏物体层次,以及所有子对象也会被克隆。所有游戏物体被激活。
 
using UnityEngine;
using System.Collections;
 
public class Test : MonoBehaviour {
    //将克隆对象与脚本建立联系的变量
   public GameObject template;
   void Start () {
  
//  实例化对象
      GameObject cloneGameObject=  GameObject.Instantiate(template);
//修改克隆对象的名称
      cloneGameObject.name="my_sphere";
 
//   激活对象
//      cloneGameObject.SetActive(true);
//   关闭对象
//      cloneGameObject.SetActive(false);
    }
 }


4获取游戏对象

    1.GameObject.Find 查找static GameObject Find (string name)  找到并返回一个名字为name的游戏物体。如果以name为名字的游戏物体没有被找到,则返回空如果name中包含‘/’字符,这个名称将被视作一个hierarchy中的路径名.这个函数只返回活动的游戏物体。除非迫不得已,建议不要在每一帧中使用这个函数。可以在开始的时候用一个成员变量来缓存结果
     2.GameObject.FindWithTag 查找标签static GameObject FindWithTag (string  tag)返回一个用tag做标识的活动的游戏物体,如果没有找到则为空。标签必须在使用之前到标签管理器里面声明。标签用于在脚本中通过标签名称快速查找物体。在标签管理器中可以设置层和标签。
它位于菜单Edit->Project Settings->Tags.
系统默认的7个标签:
Untagged(未标记)
Respawn(重生)
Finish(完成)
EditorOnly(只编辑)
MainCamera(主摄像机)
Player(游戏者)
GameController(游戏控制器)

   3.GameObject.FindGameObjectsWithTag 查找相同标签的游戏物体列表static GameObject[]      FindGameObjectsWithTag (string tag) 返回一个用tag做标识的活动的游戏物体的列表.如果没有找到则   为   空。标签必须在使用之前到标签管理器里面声明。
 
   4.运行游戏后,在代码中也可以动态添加与修改标签,但是必须提前在标签管理器中注册该标签,否则在程序   中修改标签时会抛出异常,提示无法找到该标签。




using UnityEngine;
using System.Collections;


public class Test07 : MonoBehaviour {


   GameObject capsule;


   public GameObject[] peoples;




   void Start () {
      //通过名称查找对象
      //capsule = GameObject.Find("Capsule");
      //通过标签查找对象
      capsule =GameObject.FindGameObjectWithTag("people");
//      capsule.tag="people3";
//      Debug.Log(capsule.name+ " : "+ capsule.tag);


      peoples =GameObject.FindGameObjectsWithTag("people");


      for(int i=0;i<peoples.Length;i++)
      {
         Debug.Log(peoples[i].name);
      }




   }
  


   void Update () {
  
   }
}
  5 游戏对象的销毁

   GameObject.Destroy();



在游戏编程中 尽量不要大量的find() 和destory() 这样消耗内存

要用 findwithtag() 和_______代替



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值