unity UI如何开启(显示)或者关闭(隐藏)Panel界面最好?
unity UI如何开启(显示)或者关闭(隐藏)Panel界面,相信大家都是知道的,但是如何做最好呢?
可能大家一般开启/关闭界面的方法就是直接SetActive吧。这样做通常是可以的,简答快速地解决需求,但是它又两个问题:
第一,Disable掉的物体上面的脚本也不运行了,而很多时候我们需要那个脚本运行。这样就不能用挂在自己身上脚本把自己SetActive(true)或者SetActive(false)。如果把自己的引用给另外一个脚本来对自己SetActive(true)或者SetActive(false),又会造成多余的耦合,并不符合OOP设计理念。
第二,Disable掉的物体,重新SetActive(true),会造成较大的性能消耗,如果此界面draw call较多,会有明显的延迟。
不用SetActive(true)/(false)之后,我们还有什么其他方法解决问题吗?
以下是大家可能想到的其他方法,它们也各有各的问题:
方法:Scale改为0,0,0,再改为1,1,1;
问题:改回后draw call加倍;大量垃圾回收;
方法:将界面移除Canvas这个父物体;
问题:改回后draw call加倍;大量垃圾回收;而且新增父物体增加额外引用耦合;
方法:放在Camera的某个culling层上;
问题:改回后draw call加倍;大量垃圾回收;只对screen space-camera有效;
方法:Canvas.enable = false;
问题:改回后延迟严重;而且不方便使用;
这些都不好,那你说,什么方法可行呢?
这个解决方法就是给Panel加一个CanvasGroup,上面提到的问题,在它身上都不会发生;
若要显示:
GetComponent<CanvasGroup>().alpha = 1;
GetComponent<CanvasGroup>().interactable = true;
GetComponent<CanvasGroup>().blocksRaycasts = true;
若要隐藏:
GetComponent<CanvasGroup>().alpha = 0;
GetComponent<CanvasGroup>().interactable = false;
GetComponent<CanvasGroup>().blocksRaycasts = false;
以上就是各种方法的对比。We got a winner!
以下是我自己做的小游戏,扫码玩玩看:
unity UI如何开启(显示)或者关闭(隐藏)Panel界面最好?相关推荐
- 动态控制SAP C4C UI元素的显示和隐藏
C4C UI上UI元素的显示和隐藏可以通过Key User在Adaptation模式里通过编辑一些简单的rule去控制,诸如这种格式: if ( logic expression = true )th ...
- Unity读取图片并显示到UI中
Unity读取图片并显示到UI中 方法一:将图片转换成字符串 代码 解释 效果图 方法二:将图片转换成字节数组 代码 解释 效果图 对比 在进行Unity开发时,经常会遇到将读取磁盘中图片显示到UI上 ...
- Unity中将3D模型显示在UI上或者显示在UI前面
标题 Unity中将3D模型显示在UI上或者显示在UI前面 一.将3D模型显示在UI上-使用RawImage和Render Texture组合实现效果 1.创建一个RawImage控件 2.创建一个R ...
- unity怎么在UI面板上显示出3D立体模型
unity怎么在Ui面板上显示出3D模型! 1.创建Render texture 2.创建RawImage 3.创建摄像机 注意点:1,摄像机和RawImage上面要将Render texture拖上 ...
- Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理
Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理 目录 Unity UGUI 效果 之 UI 元素 多边形UI (例如雷 ...
- Unity UI优化策略
Unity UI优化策略 前言 最近学习了Unity的图形渲染和UI的优化部分,感觉还是有挺多东西的.在此做一个简单的总结和记录. 如果把计算机绘制想象成画画,想要加快画画速度,我们可以从几个方面来进 ...
- Unity UI架构设计理念
Unity UI架构设计理念 https://www.jianshu.com/p/e64347dff4fe Unity UI架构设计理念 1.以ARPG为例,多个场景会反复出现相同的"UI窗 ...
- PyQt5子窗口开启后锁定或隐藏主窗口
PyQt5子窗口开启后锁定或隐藏主窗口 老规矩,先放图 锁定主窗口 隐藏主窗口 实现 实现方式非常简单与C++方式基本相同 在主界面UI初始化时把按钮信号与拉起窗口的槽函数绑定,这里我的按钮为sele ...
- 【厚积薄发】Unity UI 显隐(共存)关系的优化处理方案
这是第146篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间10分钟,认真读完必有收获. UWA 问答社区:answer.uwa4d.com UWA QQ群 ...
最新文章
- 【Jenkins系列1】Jenkins定时任务设置
- 深入浅出UML类图(四)
- CSS reset 标签初始化设置
- 语音识别中强制对齐_语音识别中的标注问题和嵌入式训练
- [詹兴致矩阵论习题参考解答]习题7.1
- [Go] 正则表达式 示例
- c语言竞赛成绩排序,吧内编程竞赛:成绩公布
- 软链接文件和硬链接文件
- LeetCode---binary-tree-inorder-traversal
- 【PostgreSQL-9.6.3】函数(2)--字符型函数
- GDAL库中WFS服务中含有中文不能获取数据的问题
- HTML期末大作业——基于html实现传统文化苏绣手工艺带psd设计图视频dw模板
- LIFT: Learned Invariant Feature Transform 论文解读
- python 二值化细化_Python OpenCV图像细化
- 淘宝新店流量如何从0到1000
- X must be 1D: shape is (1440, 1)
- 深入理解Java虚拟机(周志明版)总结—WSYW126
- 我的择业思考:在AI最火的时候来到工业界!
- 便携一体机设计资料机构图:定制化仪器户外便携式手提触摸一体机
- C++入门教程(十一、宏)