• Unity 3d 隐藏GameObject


    本篇简单介绍Unity3d中隐藏GameObject的三种方式。

    隐藏GameObject

    Unity3d 版本5.x

    Destroy方法

    Destroy方法顾名思义是销毁的意思。使用该方法可以将改GameObject从场景中销毁,来隐藏物体。

    
       public GameObject obj;
       
       //销毁物体
       Destroy(obj);
    
    

    Renderer的enabled属性

    你可以通过GameObjectRendererenabled属性的布尔值来控制场景是否渲染该物体。

    
       public GameObject obj;
       
       //隐藏物体
       obj.GetComponent<Renderer>().enabled = false;
       
       //显示物体
       obj.GetComponent<Renderer>().enabled = true;
    
    
    

    当你设置为false

    outPut

    SetActive方法

    众所周知每个GameObject都有一个active属性,你可以通过SetActive方法来选择是否激活该物体,activeSelf方法可以用来来查看物体的当前局部的激活状态。

    
       public GameObject obj;
    
       //隐藏物体
       obj.SetActive(false);
       
       //显示物体
       obj.SetActive(false);
       
    
    
    

    outPut

    Tips

    你的父物体通过SetActive设置为不激活的状态的时候,并不影响子物体的激活状态。但是子物体也不会显示因为被父物体覆盖。
    所以SetActive只会影响到自身的激活状态。

    隐藏子物体

    1.通过Active隐藏子物体在Unity3d 版本4.0之前是可以使用SetActiveRecursively方法的。

    如果你现在Unity3d 版本5.x控制整个物体子物体的激活状态,则需要进行一次遍历遍历父物体的所有子节点。

    
         private void SetChildrenActive (GameObject obj, bool active) {
         		
         		for(int i=0; i < obj.transform.childCount; i++) {
         			
         			GameObject childObj = obj.transform.GetChild(i).gameObject;
         			childObj.SetActive (active);
         			
         		}
         	}
    
    
    

    2.同样的你也可以使用同样的过程使用Renderer.enabled来控制。

  • 相关阅读:
    Java中Volatile关键字详解
    java hashmap&concurrentHashmap源理
    java CAS和AQS
    jvm内存模型
    springAop源码分析
    一个项目设置两个git地址,并最终实现一次性同时推送到到两个git地址上的方法总结
    H5实现横向滚动的方法总结
    tab吸顶的神奇-- css粘性属性
    H5制作显示轮播图的方法Swiper
    微信H5中禁止分享好友及分享到朋友圈的方法
  • 原文地址:https://www.cnblogs.com/chenjy1225/p/9661885.html
Copyright © 2020-2023  润新知