GameObject(游戏对象)和Transform

一、GameObject:标识

1、Name:对象名 可以重复,无限数量

这里的脚本之间打开Unity软件将脚本挂在任何游戏对象就行

      //获取游戏对象的名字
       string name = gameObject.name;
        Debug.Log(name+"---名字---");

打印结果:


Paste_Image.png
2、Tag:对象标签,在Tags&Layer面板中设置

当物体可能是空物体时(游戏开发中,常用空物体去保存一些位置信息,空物体没有渲染,这时给物体添加一个图标,便于寻找与查看)

       //获取游戏对象的标签
        string tag = gameObject.tag;
        Debug.Log(tag + "---标签---");

打印结果:


Paste_Image.png
3、Layer:标记对象渲染组名字,常用射线碰撞,摄像机裁剪,最多32组
       //获取游戏的层
        int layer=gameObject.layer;
        Debug.Log(layer + "---层---");

打印结果:


Paste_Image.png
4、创建系统内置的游戏对象给名字,给标签(Tag)
// 创建系统内置物体,并给名字,位置
        GameObject obj =  GameObject.CreatePrimitive(PrimitiveType.Cube);
        obj.name = "Do";
        obj.transform.position = Vector3.back;
        obj.tag = "Player"; // 给的tag值必须在场景的tag选项中存在

打印结果:


GameObject(游戏对象)和Transform_第1张图片
Paste_Image.png
5、获取场景中所有标签为Player的对象组,在遍历
 //(1)获取所有的标签为"player"的游戏对象,返回的是一个对象数组
        GameObject[] objs = GameObject.FindGameObjectsWithTag("Player");
        Debug.Log("-----" + objs.Length);
        foreach (GameObject item in objs)
        {
            Debug.Log(item.name);
        }
 // (2)根据tag获取游戏对象
        GameObject objWithTag = GameObject.FindGameObjectWithTag("Player");
        Debug.Log(objWithTag);

打印结果:


GameObject(游戏对象)和Transform_第2张图片
根据Tag获取游戏对象
6、实例化游戏对象,通过预制物加载
//(1)
GameObject go=GameObject.Instantiate(obj);
go.name="Player_Cube";
//将游戏对象出现的预制物放在指定的位置
go.transform.position=new Vector3(-2.5f, 3.78f, 3.17f);
//(2) GameObject.CreatePrimitive(PrimitiveType.Cube);

打印结果:


GameObject(游戏对象)和Transform_第3张图片
Paste_Image.png

二、动态获取组件

  //定义了GameObject类型的属性  获取游戏对象 
    public GameObject Cylinder;
void Start()
{
(1)
Rigidbody d = Cylinder.AddComponent();
(2)
Cylinder.AddComponent(typeof(Rigidbody));
}

打印结果:


GameObject(游戏对象)和Transform_第4张图片
Paste_Image.png

三、Unity3D中的SendMessage使用(消息推送)

1、概述:

Unity推送机制非常方便脚本开发,它实现的是一种伪监听者模式,利用的是反射机制。

2、三个常用的函数

(1)SendMessage
(2)SendMessageUpwards
(3)BroadcastMessage
这三个都是GameObject或者Component的成员函数,只要得到一个对象,然后调用它的这三个函数就可以进行一个消息的推送。
(1)SendMessage 用法:

void Start()
{
this.SendMessage("SendMessageOne","兄弟");
}
void SendMessageOne(string name)
{
Debug.Log(name+"好久不见");
}

打印结果:


Paste_Image.png

(2)SendMessageUpwards 用法:

void Start()
{
gameObject.SendMessageUpwards("SendParentMesage", 2);
}
void SendParentMesage(int a)
    {
        for (int i = 0; i < a; i++)
        {
            Debug.Log("向上级发送消息:"+"☆");
        }
    }

打印结果:


Paste_Image.png

(3)BroadcastMessage 用法:

void Start()
{
 gameObject.BroadcastMessage("SendChildMessage", "老王");
}
void SendChildMessage(string name)
    {
        Debug.Log("父类发了消息,那个父类:" + name);
    }

打印结果:


Paste_Image.png

参考:
http://www.cnblogs.com/xpvincent/p/3195453.html
http://blog.csdn.net/liulong1567/article/details/46463353
今天学习就到这...................

你可能感兴趣的:(GameObject(游戏对象)和Transform)