赞
踩
GameObject类是Unity场景中所有实体的基类。一个GameObject对象通常由多个组件(component)组成,且至少含有一个Transform组件。介绍GameObject类的一些实例属性、构造方法、实例方法和静态方法,并在最后对GameObject和Component这两个类之间的关系及其设计的GetComponent相关方法的使用区别进行注解。
在GameObject类中,设计的实例属性有activeSelf和activeInHierarchy。由于这两个属性功能相似,因此将属性activeInHierarchy作为activeSelf属性的提示内容介绍,下面主要介绍activeSelf属性。
public bool activeSelf { get; }
此属性用来返回GameObject对象的Active标识状态
cube1、cube2和cube3的Active状态分别为true、false和true。由于cube2的Actice为false,作为其子类cube3虽然没有被激活,但其activeSelf的返回值依然为true。
notes:注意此属性与属性activeInHierarchy的区别。activeInHierarchy属性的功能是返回GameObject实例在程序运行时的激活状态,它只有当GameObject实例的状态被激活时才会返回true
。而且它会受其父类激活状态的影响,如果其父类至最顶层的对象中有一个对象未被激活,activeInHierarchy就会返回false。
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属性值,结果如下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。