GameObject类是Unity场景中所有实体的基类。一个GameObject对象通常由多个组件(component)组成,且至少含有一个Transform组件。介绍GameObject类的一些实例属性、构造方法、实例方法和静态方法,并在最后对GameObject和Component这两个类之间的关系及其设计的GetComponent相关方法的使用区别进行注解。
一、GameObject类实例属性
在GameObject类中,设计的实例属性有activeSelf和activeInHierarchy。由于这两个属性功能相似,因此将属性activeInHierarchy作为activeSelf属性的提示内容介绍,下面主要介绍activeSelf属性。
1、aspect属性:设置摄像机视口比例
(1)基本语法
public bool activeSelf { get; }
(2)功能说明
此属性用来返回GameObject对象的Active标识状态
cube1、cube2和cube3的Active状态分别为true、false和true。由于cube2的Actice为false,作为其子类cube3虽然没有被激活,但其activeSelf的返回值依然为true。
notes:注意此属性与属性activeInHierarchy的区别。activeInHierarchy属性的功能是返回GameObject实例在程序运行时的激活状态,它只有当GameObject实例的状态被激活时才会返回true
。而且它会受其父类激活状态的影响,如果其父类至最顶层的对象中有一个对象未被激活,activeInHierarchy就会返回false。
(3)代码实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ActiveSelf_demo : MonoBehaviour
{
public GameObject cube1, cube2, cube3;
void Start()
{
//对Cube2设置为false,其他设置为true
cube1.SetActive(true);
cube2.SetActive(false);
cube3.SetActive(true);
Debug.Log("activeSelf:");
//尽管cube2被设置为fasle,但其子类cube3的activeSelf返回值仍然为true
Debug.Log("cube1.activeSelf:" + cube1.activeSelf);
Debug.Log("cube2.activeSelf:" + cube2.activeSelf);
Debug.Log("cube3.activeSelf:" + cube3.activeSelf);
Debug.Log("-----------------------------------------------------------");
Debug.Log("\nactiveInHierarchy:");
//cube2和cube3的activeInHierarchy返回值都为false
Debug.Log("cube1.activeInHierarchy:" + cube1.activeInHierarchy);
Debug.Log("cube2.activeInHierarchy:" + cube2.activeInHierarchy);
Debug.Log("cube3.activeInHierarchy:" + cube3.activeInHierarchy);
}
}
首先声明了3个变量cube1,cube2和cube3分别指向实例工程中的3个GameObject对象cube1,cube2和cube3,这3个对象的层级关系如图所示。
然后分别设置cube1、cube2和cube3的Active为true、false和true。
最后分别打印出这3个对象的activeSelf属性值和activeIn Hierarchy属性值,结果如下。