【Unity100个实用小技巧】世界Canvas自动隐藏,包含子物体

news2024/11/28 22:45:32

  • ☀️博客主页:CSDN博客主页
  • 💨本文由 萌萌的小木屋 原创,首发于 CSDN💢
  • 🔥学习专栏推荐:面试汇总
  • ❗️游戏框架专栏推荐:游戏实用框架专栏
  • ⛅️点赞 👍 收藏 ⭐留言 📝,如有错误请指正
  • 📆 未来很长,值得我们全力奔赴更美好的生活✨

  • ------------------❤️分割线❤️-------------------------

请添加图片描述请添加图片描述请添加图片描述

Unity 小科普

老规矩,先介绍一下Unity的科普小知识:

  •  Unity 是行业领先的实时3D开发平台。
  • 包括游戏开发,电影,AR/VR,虚拟现实在内的所有创作者,可以将梦想照进现实。
  • Unity提供了一套完整完善的软件解决方案,可用于创作,运营和模拟任何2D和3D的内容,进本全平台支持
  • 实际上Unity就是一个游戏引擎,大名鼎鼎的原神就是用它制作的。

Unity100个实用小技巧

需求:世界模式Canvas自动隐藏,包含所有的子UI控件

using UnityEngine;

public class AutoHide : MonoBehaviour
{
    public float alphaSpeed = 1f;          //渐隐渐显的速度
    private float m_UIAlpha = 1;             //初始化时让UI显示
    private CanvasGroup m_CanvasGroup;
    // Use this for initialization
    void Start()
    {
        m_CanvasGroup = this.GetComponent<CanvasGroup>();
    }

    // Update is called once per frame
    void Update()
    {
        if (m_CanvasGroup == null) return;

        if (m_UIAlpha != m_CanvasGroup.alpha)
        {
            m_CanvasGroup.alpha = Mathf.Lerp(m_CanvasGroup.alpha, m_UIAlpha, alphaSpeed * Time.deltaTime);

            GetComponent<MainScenePanel>().SetAllSceneModelAlpha(m_CanvasGroup.alpha);

            if (Mathf.Abs(m_UIAlpha - m_CanvasGroup.alpha) <= 0.01f)
            {
                m_CanvasGroup.alpha = m_UIAlpha;
            }
        }
    }

    /// <summary>
    /// 显示
    /// </summary>
    public void UIFadeInEvent()
    {
        m_UIAlpha = 1;
        if (m_CanvasGroup != null)
        {
            m_CanvasGroup.blocksRaycasts = true;      //可以和该对象交互
        }
    }

    /// <summary>
    /// 隐藏
    /// </summary>
    public void UIFadeOutEvent()
    {
        m_UIAlpha = 0;
        if (m_CanvasGroup != null)
        {
            m_CanvasGroup.blocksRaycasts = false;     //不可以和该对象交互
        }
    }
}

原理:通过修改CanvasGroup.alpha实现

CanvasGroup

一种可放置 Canvas 的元素,可用于修改子 Alpha、Raycasting、Enabled 状态。

画布组可用于修改子元素的状态。

参数:

Alpha : 该组UI元素的透明度。注:每个UI最终的透明度是由此值和自身的alpha数值相乘得到。

Interactable : 是否需要交互(勾选的则是可交互),同时作用于该组全部UI元素。

Blcok Raycasts : 是否可以接收图形射线的检测(勾选则接受检测)。注:不适用于Physics.Raycast.。

Ignore Parent Group : 是否需要忽略父级对象中的CanvasGroup的设置。(勾选则忽略)
应用场景:

  1. 在窗口的GameObject上添加一个CanvasGroup,通过控制它的Alpha值来淡入淡出整个窗口;
  2.   通过给父级GameObject上添加一个CanvasGroup并设置它的Interactable值为false来设置一套没有交互(灰色)的控制;
  3. 通过将元素或元素的一个父级添加Canvas Group并设置BlockRaycasts值为false来制作一个或多个不阻止鼠标事件的UI元素;

CanvasGroup的Alpha与SetActive()方法比较:

  1. CanvasGroup的Alpha与SetActive()两者之间的性能区别不大。
  2. CanvasGroup的Alpha由0设为1的时候,并不会让自己活着的子节点中脚本执行Awake()方法,而SetActive(true)则会执行Awake()方法。
  3. CanvasGroup的Alpha设为0和SetActive(false)的时候,同样不会调用drawcall;

参考链接

官方说明


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/576660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE】JUC(java.util.concurrent)的常见类以及线程安全的集合类

目录 1、JUC&#xff08;java.util.concurrent&#xff09;的常见类 1.1、Callable接口的用法&#xff08;创建线程的一种写法&#xff09; 1.2、ReentrantLock可重入互斥锁 1.2.1、ReentrantLock和synchronized的区别 1.2.2、如何选择使用哪个锁 1.3、Semaphore信号量 1…

pta(浙大第四版)五道经典练习题③

目录 ①7-4 IP地址转换 ②、查找日期 ③藏头词 四、IP地址转换 五、删除链表值为偶数的节点 ①7-4 IP地址转换 题述&#xff1a;IP地址转换&#xff1a;一个IP地址是用四个字节&#xff08;每个字节8个位&#xff09;的二进制码组成。输入32位二进制字符串&#xff0c;输…

探索iOS转场动画

iOS提供图像转场动画&#xff0c;可实现酷炫的转场特效。动画包括&#xff1a;溶解、折叠、复印机、暴露、翻页、波纹、滑动等等。 一、溶解动画 CIDissolveTransition提供溶解动画&#xff0c;我们来看看对应的转场动画效果&#xff1a; 在CIFilter指定CIDissolveTransition…

Qt线程基础,多线程使用注意点,目前支持的线程种类。

Qt线程基础 一、什么是线程&#xff1f;二、GUI线程和工作线程三、同时访问数据四、使用线程1、何时使用线程的替代品2、应该用哪种Qt线程技术&#xff1f; 六、Qt中的多线程技术1、QThread:带有可选事件循环的低级API2、QThreadPool和QRunnable:重用线程 七、Qt Concurrent:使…

集成学习以及随机森林介绍

一、集成学习简介 1.什么是集成学习&#xff1f; 集成学习&#xff08;Ensemble Learning&#xff09;是一种机器学习方法&#xff0c;通过将多个弱学习器&#xff08;weak learner&#xff09;组合在一起来构建一个更强大的学习器&#xff08;strong learner&#xff09;。 …

C语言进阶——字符函数和字符串函数(下)

在前面我们已经学习了strlen、strcpy、strcat、strcmp几个库函数&#xff0c;今天我们继续学习剩余的库函数。 上期链接&#xff1a; C语言进阶——字符函数和字符串函数&#xff08;上&#xff09;_wangjiushun的博客-CSDN博客 目录&#xff1a; 3、长度受限制的字符串函数…

Redis(四)持久化策略

文章目录 持久化策略1、为什么Redis需要持久化2、Redis提供的两种持久化方式(1)RGB持久化详解概述RGB持久化的两种触发策略手动触发实例测试&#xff1a;自动触发实例测试&#xff1a; 查看rdb的状态信息info Persistence rdb模式的优缺点 (2)AOF持久化详解AOF持久化步骤&#…

近期复盘 | 想多了都是问题,想开了都是答案

文章目录 &#x1f339;四月坚持背单词&#xff0c;五月坚持利用AI写文章&#x1f60a;六月会坚持干什么&#x1f64c;23年7月&#xff1a;毕业两年&#xff0c;参保两年&#x1f440;强制存储&#xff0c;消费降级&#xff0c;开源节流&#x1f61c;好好深耕能力&#x1f381;…

JavaScript 进阶 (一)

目录 作用域 局部作用域 函数作用域 块作用域 全局作用域 作用域链 JS垃圾回收机制 闭包 变量提升 函数进阶 函数提升 函数参数 箭头函数 基本语法 箭头函数参数 箭头函数this 解构赋值 数组解构 对象解构 遍历数组 forEach 方法&#xff08;重点&#xff09; …

shell SNAT与DNAT

文章目录 SNATSNAT原理与应用SNAT实验 DNATDNAT原理与应用DNAT实验 SNAT SNAT原理与应用 SNAT 应用环境&#xff1a;局域网主机共享单个公网IP地址接入Internet&#xff08;私有不能早Internet中正常路由&#xff09; SNAT原理&#xff1a;修改数据包的源地址。 SNAT转换前提…

文心一言 VS 讯飞星火 VS chatgpt (23)-- 算法导论4.2 5题

五、V.Pan 发现一种方法&#xff0c;可以用 132 464 次乘法操作完成 68 x 68 的矩阵相乘&#xff0c;发现另一种方法&#xff0c;可以用 143 640 次乘法操作完成 70 x 70 的矩阵相乘&#xff0c;还发现一种方法&#xff0c;可以用155 424次乘法操作完成 72 x 72 的矩阵相乘。当…

数据安全治理科技产品能力-数据安全复合治理框架和模型解读(2)

数据治理,数据安全治理行业在发展,在实践,所以很多东西是实践出来的,哪有什么神仙理论指导,即使有也是一家之说,但为了提高企业投产比,必要的认知是必须的,落地数据安全治理科技水平差异直接决定产品和项目是否可持续性,当前和未来更需要专业和有效创新。数据安全治理…

自动驾驶业内动态简讯

1. 引言 参与自动驾驶领域相关研发工作已有多年&#xff0c;针对该领域的快速发展&#xff0c;收集业内各大科技公司最新进展和技术突破&#xff0c;供伙伴们交流探讨。 闲话少说&#xff0c;直接开始吧! 2. 博世 据新闻介绍&#xff0c;博世在德国道路上测试L4级无人驾驶汽…

java 区分缺陷Defects/感染Infections/失败Failure

java 区分缺陷Defects/感染Infections/失败Failure 缺陷Defects 软件故障总是从代码中一个或多个缺陷的执行开始。 缺陷只是一段有缺陷、不正确的代码。 缺陷可能是程序语句的一部分或完整部分&#xff0c;也可能对应于不存在但应该存在的语句。 尽管程序员要对代码中的缺陷负…

基于SSM的甜品店商城系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着社会经济的发展和…

Altium Designer 相同电路多组复制布线

在进行设计开发的时候&#xff0c;总会遇到相同的电路&#xff0c;或者模块&#xff0c;这些电路可以使用相同的布局和走线。我们可以画好其中一部分&#xff0c;然后直接复制&#xff0c;就可以提高效率。下面记录我自己的实际操作过程&#xff0c;有一些地方遇到了问题&#…

Android | Android OS 源码结构

参考&#xff1a;AndroidXRef (http://androidxref.com/)版本&#xff1a;Pie - 9.0.0_r3 整体结构 对于 Android OS 的源码目录来说&#xff0c;各个版本的结构大同小异&#xff0c;随不同版本特性会有个别目录差异。编译后会额外产生一个 out 文件夹用于存储编译产生的文件。…

Unity使用SteamVR2.0实现基本功能(瞬移,抓取物品,射线点击,UI交互等)

基础设置 把SteamVR的Player预制件拖到一个空场景,删掉场景内原本的相机 一.瞬移 新建一个Plane,当做地板找到SteamVR的人物瞬移控制器 Teleporting ,把它拖到场景里 1. 范围移动 我们需要在可以移动的区域,也就是碰撞器上,挂TeleportArea脚本 这个脚本会自动修改你的材质球…

抖音seo源码--开源,支持二开不加密

抖音seo源码&#xff0c;抖音seo矩阵系统源码技术搭建&#xff0c;抖音seo源码技术开发思路梳理搭建 开发思路&#xff1a; 抖音seo源码如何搭建&#xff1f;抖音seo排名优化系统软件部分源码分析&#xff0c;代码打包中。。。 场景&#xff1a;在 python 中&#xff0c;你可…

windows下修改PyCharm默认terminal 在Git Bash中使用conda

windows下修改PyCharm默认terminal & 在Git Bash中使用conda windows下修改PyCharm默认terminal在Git Bash中使用conda windows下修改PyCharm默认terminal PyCharm的terminal默认使用的是powershell&#xff0c;但是conda环境是通过cmd运行的&#xff0c;因此可以将PyChar…