一、GameObject:标识
1、Name:对象名 可以重复,无限数量
这里的脚本之间打开Unity软件将脚本挂在任何游戏对象就行
//获取游戏对象的名字
string name = gameObject.name;
Debug.Log(name+"---名字---");
打印结果:
2、Tag:对象标签,在Tags&Layer面板中设置
当物体可能是空物体时(游戏开发中,常用空物体去保存一些位置信息,空物体没有渲染,这时给物体添加一个图标,便于寻找与查看)
//获取游戏对象的标签
string tag = gameObject.tag;
Debug.Log(tag + "---标签---");
打印结果:
3、Layer:标记对象渲染组名字,常用射线碰撞,摄像机裁剪,最多32组
//获取游戏的层
int layer=gameObject.layer;
Debug.Log(layer + "---层---");
打印结果:
4、创建系统内置的游戏对象给名字,给标签(Tag)
// 创建系统内置物体,并给名字,位置
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.name = "Do";
obj.transform.position = Vector3.back;
obj.tag = "Player"; // 给的tag值必须在场景的tag选项中存在
打印结果:
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);
打印结果:
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类型的属性 获取游戏对象
public GameObject Cylinder;
void Start()
{
(1)
Rigidbody d = Cylinder.AddComponent<Rigidbody>();
(2)
Cylinder.AddComponent(typeof(Rigidbody));
}
打印结果:
三、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+"好久不见");
}
打印结果:
(2)SendMessageUpwards 用法:
void Start()
{
gameObject.SendMessageUpwards("SendParentMesage", 2);
}
void SendParentMesage(int a)
{
for (int i = 0; i < a; i++)
{
Debug.Log("向上级发送消息:"+"☆");
}
}
打印结果:
(3)BroadcastMessage 用法:
void Start()
{
gameObject.BroadcastMessage("SendChildMessage", "老王");
}
void SendChildMessage(string name)
{
Debug.Log("父类发了消息,那个父类:" + name);
}
打印结果:
参考:
http://www.cnblogs.com/xpvincent/p/3195453.html
http://blog.csdn.net/liulong1567/article/details/46463353
今天学习就到这...................