Unity控制物体显示和隐藏

Unity控制物体显示和隐藏

今天碰到一个比较特殊的问题,刚开始一直没解决网上找了很多博客也没找到答案,后来在QQ群友的帮助下得以解决,借此机会正好来总结 一下。在开发过程中常常需要对物体进行隐藏和显示操作,包括对UI和物体的控制,以下的实验均为UGUI的前提下。

思路提示

其实整体的思路无非就是两种,
一种是直接暴力的将这个物体设置为未激活状态,这样上边的脚本也就不能运行了,如果想再次激活则需要其他物体来进行控制恢复
另一种思路是设置到看不见的状态,这里设置看不见的状态,又可以设置物体的Render组件或者是设置UI的透明度,如果是由Shader里边控制的,可以更改Shader的的透明度属性,Shader需要开启透明度测试。这种方式相当于是隐身,不会影响物体挂载的脚本运行。

通用的显示和隐藏

设置物体的激活状态

关键要点

    void Show()
    {
        gameObject.SetActive(true);
    }

    void Hide()
    {
        gameObject.SetActive(false);
    }

如果存在子物体需要一起控制,需要使用SetActiveRecursively(false)

3D物体的显示和隐藏

设置Renderer状态

这种方法,相当于是只是隐身的状态,实际上物体还是存在的只是不显示出来而已
一定要先注意,物体有没有Render组件,一般来说需要渲染的物体都有(非UI)
关键要点

    void Show()
    {
        gameObject.GetComponent<Renderer>().enabled = true;
    }

    void Hide()
    {
        gameObject.GetComponent<Renderer>().enabled = false;
    }

设置Shader的透明度

这种方式首先要看物体的材质球上边的Shader是否有可以控制的透明度属性,
如果有才可以进行控制。

    void Show()
    {
        material.SetColor("_Color", Color.white);
    }

    void Hide()
    {
        material.SetColor("_Color", Color.clear);
    }

文末会给出完整的测试工程,请自行下载。

UI的显示和隐藏

更改组件颜色的透明度

如果组件比较简单,有明显的可以调节颜色透明度的地方,可以直接进行设置,
比如Image组件,Text组件 ,缺点比较麻烦,只能控制自身

CanvasGroup组件

这种方法可以同时控制子物体的显示和隐藏
关键要点
首先要给UI添加一个CanvasGroup组件

    void Show()
    {
        gameObject.GetComponent<CanvasGroup>().alpha = 1;
    }

    void Hide()
    {
        gameObject.GetComponent<CanvasGroup>().alpha = 0;
    }

测试工程

打开版本Unity5.6.3
链接: https://pan.baidu.com/s/1yXvqdGaNEHqqdT1AcIBlLw 密码: 8gse

  • 29
    点赞
  • 175
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值