Unity讲义

UnityAPI之component

  Component是Unity API库里提供的一个基类,unity是一种面向组件开发的物理引擎,组件可以认为是游戏物体(GameObject)身上的某种功能,比如摄像机,他的定义就是实现了相机组件的游戏物体.组件在c#中可以认定为一个类,所有组件的父类都是Component,下面的图片展示了他们的继承关系:
unity中各种类的继承关系

  需要注意的是unity不允许直接创建组件,他必须挂在GameObject,即组件的创建必须在对应GameObject的脚本上,一个GameObject的组件都必须在他挂载的脚本上.
Component里面有一个字段gameObject可以获得当前挂载的游戏物体你可以使用下面的语句打印出游戏物体名:

print(this.gameObject);

同理游戏物体也可以获得他自身的组件:

GetComponent("component-name");

GetComponent还有其他重载比如可以获得需要的组件,只需要指明组件类型就可以

GetComponent(typeof(component-name));
component-name cn=GetComponent<component-name>();
//对应返回值为组件类型的对象

找到组件后就可以修改一些组件属性

this.GetComponent<MeshRenderer>().material.color=Color.red;
obj.GetComponent<MeshRenderer>().material.color = Color.green;
//this指针就是当前挂载的游戏物体

也可以使用GetComponents()他会返回所有组件的数据

var allComponent = GetComponents<Component>();
		//返回所有组件的数组
		foreach(var item in allComponent)
        {
			Debug.Log(item.GetType());
        }

GetComponentsInChildren()会从自己开始获取他的所有后代的组件

var allChildComponent=GetComponentsInChildren<MeshRenderer>();
		//获得所有后代物体的所有组件(从自己开始)
		//自己也会变
		foreach (var item in allChildComponent)
        {
			item.material.color = Color.yellow;
        }

如上面的例子,父母会以身作则从自己开始执行变黄,同理也会有找祖宗方法

var allParentComponent = GetComponentsInParent<MeshRenderer>();
		foreach (var item in allParentComponent)
		{
			item.material.color = Color.blue;
		}

当然还有很多方法不过常用的就这么多,可以查询帮助文档来获得这些方法的参数,返回值和用法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值