Unity进阶-ui框架学习笔记
文章目录
- Unity进阶-ui框架学习笔记
Unity进阶-ui框架学习笔记
笔记来源课程:https://study.163.com/course/courseMain.htm?courseId=1212756805&_trace_c_p_k2_=8c8d7393c43b400d89ae94ab037586fc
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qvYhS3e7-1690019993960)(QQ%E6%88%AA%E5%9B%BE20230722085931.png)]](https://img-blog.csdnimg.cn/e15dad67cc784f6e861eff376d742d56.png)
- 最上面的管理层(canvas)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x9NEL12X-1690019993961)(QQ%E6%88%AA%E5%9B%BE20230722093841.png)]](https://img-blog.csdnimg.cn/72759bc8c8654cd2911543d71c060b6e.png)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class UImanager : MyrSingletonBase<UImanager>
{//下层控制器的字典public Dictionary<string, UIController> UIControllerDic = new Dictionary<string, UIController>();void Start(){}//设置页面激活状态public void SetActive(string controllerName, bool active){transform.Find(controllerName).gameObject.SetActive(active);}//获取页面上的子控件public UIControl GetUIControl(string controllerName, string controlName){//这个字典里是否存在该名称的组件if (UIControllerDic.ContainsKey(controllerName)) {//它下面的字典里是否存在对应组件if (UIControllerDic[controllerName].UIControlDic.ContainsKey(controlName)) {return UIControllerDic[controllerName].UIControlDic[controlName];}}return null;}}
调整下运行顺序,让他快于controller
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L7BTY0Xp-1690019993962)(../AppData/Roaming/Typora/typora-user-images/image-20230722171921737.png)]](https://img-blog.csdnimg.cn/a896f4018c3a4e6faa11f8228bf4f518.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-smOfAPvE-1690019993962)(../AppData/Roaming/Typora/typora-user-images/image-20230722171854565.png)]](https://img-blog.csdnimg.cn/a77ed40faa1d43f3b78f7275bd2e832e.png)
- panel的控制层
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uukx7lHB-1690019993964)(QQ%E6%88%AA%E5%9B%BE20230722094215.png)]](https://img-blog.csdnimg.cn/3148b324c882403688f788ebd4af8800.png)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class UIController : MonoBehaviour
{//下层控制器的字典public Dictionary<string, UIControl> UIControlDic = new Dictionary<string, UIControl>();void Awake() {//添加到UI控制器的字典里UImanager.Instance.UIControllerDic.Add(transform.name, this);//给子控件加上UIcontrol脚本foreach (Transform tran in transform) {if (tran.gameObject.GetComponent<UIControl>() == null) {tran.gameObject.AddComponent<UIControl>();}}}}
- panel下面的组件层
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qaDs5oQV-1690019993965)(QQ%E6%88%AA%E5%9B%BE20230722094906.png)]](https://img-blog.csdnimg.cn/1c04de7e51334fe19d016d9eec3298ef.png)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;public class UIControl : MonoBehaviour
{//父控制器public UIController controller;private void Awake() {//将自身添加到父级控制器上if (transform.parent != null) {controller = transform.GetComponentInParent<UIController>();if (controller != null) {controller.UIControlDic.Add(transform.name, this);}} }///<summary>/// 各个组件对应的函数///</summary>//更改文本public void ChangetText(string str) {if (GetComponent<Text>() != null) {GetComponent<Text>().text = str;}}//更改图片public void ChangeImage(Sprite sprite) {if(GetComponent<Image>() != null) {GetComponent<Image>().sprite = sprite;}}//输入public void AddInputFieldEvent(UnityAction<string> action){InputField control = GetComponent<InputField>();if (control != null) {control.onValueChanged.AddListener(action);}}//Sliderpublic void AddSliderEvent(UnityAction<float> action){Slider control = GetComponent<Slider>();if (control != null) {control.onValueChanged.AddListener(action);}}//Buttonpublic void AddButtonClickEvent(UnityAction action) {Button control = GetComponent<Button>();if (control != null) {control.onClick.AddListener(action);}}
}
-
使用
UImanager.Instance.GetUIControl("score", "scores").ChangetText("分数:" + score);
相关文章:
Unity进阶-ui框架学习笔记
文章目录 Unity进阶-ui框架学习笔记 Unity进阶-ui框架学习笔记 笔记来源课程:https://study.163.com/course/courseMain.htm?courseId1212756805&_trace_c_p_k2_8c8d7393c43b400d89ae94ab037586fc 最上面的管理层(canvas) using System…...
Django实现接口自动化平台(十四)测试用例模块Testcases序列化器及视图【持续更新中】
相关文章: Django实现接口自动化平台(十三)接口模块Interfaces序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django…...
如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io+直接io
一般会如何实现文件传输? 服务器提供文件传输功能,需要将磁盘上的文件读取出来,通过网络协议发送到客户端。如果需要你自己编码实现这个文件传输功能,你会怎么实现呢? 通常,你会选择最直接的方法…...
Docker运行MySQL5.7
步骤如下: 1.获取镜像: docker pull mysql:5.7 2.创建挂载目录: mkdir /home/mydata/data mkdir /home/mydata/log mkdir /home/mydata/conf 3.先启动docker把配置文件拷贝出来: docker run -it --name temp mysql:5.7 /bi…...
-jar和 javaagent命令冲突吗?
当使用 -jar 命令运行 Java 应用程序时,Java 虚拟机 (JVM) 会忽略任何设置的 -javaagent 命令。这是因为 -jar 命令会覆盖其他命令行选项,包括 -javaagent。 这是因为 -jar 命令是用于运行打包为 JAR 文件的 Java 应用程序的快捷方式。它会忽略其他命令…...
LLC和MAC子层的应用
计算机局域网标准IEEE802 由于局域网只是一个计算机通信网,而且局域网不存在路由选择问题,因此它不需要网络层,而只有最低的两个层次。然而局域网的种类繁多,其媒体接入控制的方法也各不相同。 为了使局域网中的数据链路层不致过…...
【MySQL】之复合查询
【MySQL】之复合查询 基本查询多表查询笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from子句中使用子查询 合并查询小练习 基本查询 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J按照部门号升序而雇员的工资降序排序使用…...
Vue系列第五篇:Vue2(Element UI) + Go(gin框架) + nginx开发登录页面及其校验登录功能
本篇使用Vue2开发前端,Go语言开发服务端,使用nginx代理部署实现登录页面及其校验功能。 目录 1.部署结构 2.Vue2前端 2.1代码结构 2.1源码 3.Go后台服务 3.2代码结构 3.2 源码 3.3单测效果 4.nginx 5.运行效果 6.问题总结 1.部署结构 2.Vue2…...
u盘里的数据丢失怎么恢复 u盘数据丢失怎么恢复
在使用U盘的时候不知道大家有没有经历过数据丢失或者U盘提示格式化的情况呢?U盘使用久了就会遇到各种各样的问题,而关于U盘数据丢失,大家又知道多少呢?当数据丢失了,我们应该怎样恢复数据?这个问题困扰了很…...
Mysql-约束
约束 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据库中数据的正确、有效性和完整性。 分类: 约束描述关键字非空约束限制该字段的数据不能为nullNOT NULL唯一约束保证该字段的所有数据都是唯一…...
数据结构问答7
1. 图的定义和相关术语 答: 定义:图是由顶点集V和边集E组成,其中V为有限非空集。 相关术语:n个顶点,e条边,G=(V,E) ① 邻接点和端点:无向图中,若存在一条边(i, j),则称i,j为该边的端点,且它们互为邻接点;在有向图中,若存在一条边<i, j>,则称i,j分别为…...
[Spark] 大纲
1、Spark任务提交流程 2、SparkSQL执行流程 2.1 RBO,基于规则的优化 2.2 CBO,基于成本的优化 3、Spark性能调优 3.1 固定资源申请和动态资源分配 3.2 数据倾斜常见解决方法 3.3 小文件优化 4、Spark 3.0 4.1 动态分区裁剪(Dynamic Partition Pr…...
【NLP】使用 Keras 保存和加载深度学习模型
一、说明 训练深度学习模型是一个耗时的过程。您可以在训练期间和训练后保存模型进度。因此,您可以从上次中断的地方继续训练模型,并克服漫长的训练挑战。 在这篇博文中,我们将介绍如何保存模型并使用 Keras 逐步加载它。我们还将探索模型检查…...
视频标注是什么?和图像数据标注的区别?
视频数据标注是对视频剪辑进行标注的过程。进行标注后的视频数据将作为训练数据集用于训练深度学习和机器学习模型。这些预先训练的神经网络之后会被用于计算机视觉领域。 自动化视频标注对训练AI模型有哪些优势 与图像数据标注类似,视频标注是教计算机识别对象…...
【Android知识笔记】UI体系(一)
Activity的显示原理 setContentView 首先开发者Activity的onCreate方法中通常调用的setContentView会委托给Window的setContentView方法: 接下来看Window的创建过程: 可见Window的实现类是PhoneWindow,而PhoneWindow是在Activity创建过程中执行attach Context的时候创建的…...
SpringBoot 整合Docker Compose
Docker Compose是一种流行的技术,可以用来定义和管理你的应用程序所需的多个服务容器。通常在你的应用程序旁边创建一个 compose.yml 文件,它定义和配置服务容器。 使用 Docker Compose 的典型工作流程是运行 docker compose up,用它连接启动…...
SpringBoot整合Elasticsearch
SpringBoot整合Elasticsearch SpringBoot整合Elasticsearch有以下几种方式: 使用官方的Elasticsearch Java客户端进行集成 通过添加Elasticsearch Java客户端的依赖,可以直接在Spring Boot应用中使用原生的Elasticsearch API进行操作。参考文档 使用Sp…...
【R3F】0.9添加 shadow
开启使用shadow 在 canvas 设置属性shadows 在对应的 mesh 中设置 产生阴影castShadow和接收阴影receiveShadow 设置完成之后,即可实现阴影 ...<Canvas shadows > <mesh castShadow ><boxGeometry /><meshStandardMaterial color="mediumpurple&qu…...
【JavaEE初阶】HTTP请求的构造及HTTPS
文章目录 1.HTTP请求的构造1.1 from表单请求构造1.2 ajax构造HTTP请求1.3 Postman的使用 2. HTTPS2.1 什么是HTTPS?2.2 HTTPS中的加密机制(SSL/TLS)2.2.1 HTTP的安全问题2.2.2 对称加密2.2.3 非对称加密2.2.3 中间人问题2.2.5 证书 1.HTTP请求的构造 常见的构造HTTP 请求的方…...
探索和实践:基于Python的TD-PSOLA语音处理算法应用与优化
今天我将和大家分享一个非常有趣且具有挑战性的主题:TD-PSOLA语音处理算法在Python中的应用。作为一种在语音合成和变换中广泛使用的技术,TD-PSOLA (Time-Domain Pitch-Synchronous Overlap-Add) 提供了一种改变语音音高和时间长度而不产生显著失真的有效方法。在本篇博客中,…...
ClusterFuzz终极内存泄漏检测指南:LSAN与UBSAN的完整配置教程
ClusterFuzz终极内存泄漏检测指南:LSAN与UBSAN的完整配置教程 【免费下载链接】clusterfuzz Scalable fuzzing infrastructure. 项目地址: https://gitcode.com/gh_mirrors/cl/clusterfuzz ClusterFuzz是一款强大的可扩展模糊测试基础设施,能够帮…...
Qwen3.5-2B企业降本案例:用2B模型替代8B,GPU成本降低57%实录
Qwen3.5-2B企业降本案例:用2B模型替代8B,GPU成本降低57%实录 1. 轻量化模型带来的成本革命 在AI应用大规模落地的今天,模型部署成本已成为企业最关注的痛点之一。我们团队近期完成了一个典型案例:用Qwen3.5-2B模型成功替代原有8…...
【书生·浦语】internlm2-chat-1.8b效果展示:中文诗歌创作+格律校验双能力
【书生浦语】internlm2-chat-1.8b效果展示:中文诗歌创作格律校验双能力 当AI不仅能写诗,还能自己检查格律——这才是真正的"诗人助手" 1. 模型简介:小而精的诗歌创作专家 InternLM2-Chat-1.8B虽然只有18亿参数,但在中文…...
告别混乱!用Python+shutil一键整理UCF101数据集(附完整代码)
告别混乱!用Pythonshutil一键整理UCF101数据集(附完整代码) 刚接触行为识别的研究者,十有八九会在UCF101这类经典数据集的预处理环节卡壳——下载的压缩包解压后,视频文件散落在101个子目录中,而官方提供的…...
nuScenes 3D标注数据深度解析:从Box字段到可视化,理解自动驾驶感知的基石
nuScenes 3D标注数据深度解析:从Box字段到可视化,理解自动驾驶感知的基石 自动驾驶技术的快速发展离不开高质量数据集的支撑,而nuScenes作为业界公认的标杆级数据集,其丰富的3D标注信息为感知算法研发提供了坚实基础。本文将带您深…...
GD32与STM32替换实战:硬件差异与移植要点
1. GD32与STM32替换背景解析在当前的全球芯片供应环境下,许多工程师不得不面对从STM32转向国产替代方案的选择。作为国内领先的MCU厂商,兆易创新(GigaDevice)的GD32系列因其与STM32的高度兼容性,成为最受欢迎的替代方案之一。我曾在三个量产项…...
游戏盾导致 Unity/UE 引擎崩溃的主要原因排查?
做游戏上线的都知道,游戏盾是必装的——毕竟要防外挂、防攻击,不然刚上线就被搞崩,损失太大。但最近帮几个同行排查问题,发现好多项目接入游戏盾后,Unity和UE引擎动不动就崩,要么内存飙到爆,安卓…...
MPC轨迹跟踪:基于运动学、动力学CarsimSimulink联仿
(MPC)轨迹跟踪,基于运动学、动力学carsim&simulink联仿方向打死油门踩到底,轮胎和地面摩擦的青烟还没散尽,手里的MPC控制器已经算好了未来三秒的轨迹——这大概就是模型预测控制在轨迹跟踪中最性感的瞬间。今天咱们…...
太空垃圾清理算法:近地轨道debug生死时速
当测试思维遭遇太空危机作为软件测试从业者,我们习惯于在虚拟的数字世界中寻找漏洞、调试代码、确保系统稳定运行。我们面对的是逻辑错误、内存泄漏、并发冲突,最严重的后果或许是服务中断或数据丢失。然而,请想象这样一个场景:你…...
终极指南:如何免费解锁Cursor Pro功能,彻底解决API限制问题
终极指南:如何免费解锁Cursor Pro功能,彻底解决API限制问题 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve …...
