组件使用
Unity中,我们的游戏逻辑总是围绕着游戏对象和组件展开的,上一节介绍了游戏对象,这里我们介绍一下如何获取组件,以及如何访问组件的属性和方法。
获取组件
使用代码访问组件
上一节中,我们介绍了GetComponent<T>()
方法,它支持一个泛型参数,返回组件实例。
之前我们说过,我们编写的脚本其实也是一种组件,因此获取一个对象的脚本组件也是可行的。
下面代码中,CubeMove
是我们之前自定义的一个脚本,用来让方块来回震动(代码详见03-变量定义和参数展示
):
CubeMove cubeMove = obj.GetComponent<CubeMove>();
同理,我们也可以使用AddComponent<>()
方法为一个游戏对象添加组件:
CubeMove cubeMove = obj.AddComponent<CubeMove>();
其返回值为新添加的组件实例。
使用Unity编辑器赋值
实际上,我们可以还可以用拖拽的方式进行组件实例的赋值。如下我们定义了一个脚本变量,CubeMove
是我们之前自定义的一个脚本:
public CubeMove cubeMove;
在Unity编辑器中,我们直接将带有该组件的游戏对象拖进去即可:
如果拖拽的游戏对象不包含该组件,是无法拖进去的,光标会显示一个禁止符号。
访问组件属性和方法
既然我们能够拿到组件实例,那么自然也就能访问组件中的公有属性和方法。
下面代码中,我们基于Prefab初始化了一个游戏对象,然后获取其cubeMove
组件,最后调用了其中的ScaleForce()
:
GameObject obj = Instantiate(cubePrefab);
CubeMove cubeMove = obj.GetComponent<CubeMove>();
cubeMove.ScaleForce(10);
对于Unity各种内置组件,引入的插件包含的其他人写的脚本组件,还有我们自己编写的脚本组件之间相互调用,其实都是如上述实现的。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。