当前位置: 首页 > news >正文

unity TEngine学习记录3

上一篇讲了怎么使用te框架,本篇主要学习的是UI,一个游戏百分之70%都是UI的展示效果,现在让我们继续打开te官网找到UI部分继续学习。

ui创建以及加载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们根据文档首先打开命名规则界面,大家第一次看就知道这个是干啥的,你想使用此框架的UI部分就要根据规则命名,例如我创建了一个text,那么根据命名规则就为 m_tmp+xxx,最终命名就是m_tmp测试文字
在这里插入图片描述
在这里插入图片描述
我们继续往下学习,这一步让我们创建预制体进行动态加载,首先随便创建一些ui,然后创建一个脚本,这个脚本名称必须要和UI父级名称一致
在这里插入图片描述
在这里插入图片描述
然后选中父级物体右键选中第二个,显示成功后,双击打开创建的脚本 进行粘贴

在这里插入图片描述

在这里插入图片描述
粘贴后我们的得到了这样的脚本内容,我们加入打印方法,此方法是框架内自带log,也可以使用debug。
在这里插入图片描述
下一步让我们加载这个ui,首先打开GameApp脚本,根据官方文档提升,选中编辑器模式,输入神秘代码,
在这里插入图片描述

在这里插入图片描述
运行后发现 哎怎么回事 咋会报错,,根据报错显示缺少了canvas,那我们尝试在预制体上加入,保存后继续尝试运行。
在这里插入图片描述
在这里插入图片描述
这个时候发现已经加载成功,然后点击按钮,测试按钮是否能够使用,点击后发现没反应呀,什么情况,看了一下打印台也没有报错呀,让我们找找为啥,首先我们遇到这种情况就要先去看官方文档,如果没有写,再去看看demo里面的ui。
在这里插入图片描述
看了一下官方文档没写,那就去查看一些demo的ui,发现demo示例的上面有一个是我们缺少的组件,那我们就给他加上再试一下,加上之后就发现可以点击了
在这里插入图片描述
在这里插入图片描述
点击后打印出来结果,没用问题,证明ui加载也全部完成可以使用拉,那我们继续测试关闭方法,
在按钮功能上新增关闭方法,然后在点击测试成功,发现已经被销毁成功,那么ui的基础显示出现就完成了。

在这里插入图片描述
有的同学就要问了,这个脚本功能太少了呀,我想使用一些UI生命周期函数怎么办,例如出现执行,销毁执行,被创建的时候,被刷新的时候等等…
让我们打开脚本看一下我们继承的这个父类,按下f12进入父类中。
在这里插入图片描述
在这个父类脚本里发现了几个虚方法,有关闭的,显示的隐藏的,那么我们就可以继承父类的方法重写一下,在里面加入自己的代码,生命周期内部的循环就让框架来完成。回到我们的脚本来看看有多少个可以重写的方法,输入神秘代码 override 发现里面好多个选项,让我们把他的方法全部列出来

在这里插入图片描述
在把鼠标放到方法上的时候会显示这个方法的作用,那就让我们打印一下 看看这些方法的执行顺序
在这里插入图片描述
根据代码执行结果在调用显示UI的时候执行顺序为
在这里插入图片描述
在调用关闭时执行执行了被销毁的方法,
在这里插入图片描述
但是我有个疑问,为什么Close 没有被触发 而是调用OnDestroy,改为HideUI这个方法也没有执行,而是执行OnSetVisible方法,也就是隐藏出现的时候调用一次然后执行OnDestroy。
在这里插入图片描述
我们根据调用去看他的父级,在这个父级中他是直接调用了一下UIBase删除方法OnDestroy,然后直接删除了调用者
在这里插入图片描述
在这里插入图片描述
而HideUI方法也是直接就跳转到了close,那close就直接走了OnDestroy,因为属性被修改了所以也执行了OnSetVisible方法
在这里插入图片描述
最后我们得出的结论是调用关闭方法时,想要在关闭的时候执行某些代码,要写在
OnDestroy中,群里问了这个问题,小博君大佬回复。但是为什么那两个方法没使用,我没有深究 ,对于我们小白来说能用就行了 管他呢 有的用就行。
在这里插入图片描述
在这里插入图片描述
自此UI部分就学习完啦,可以让我们开始制作直接的UI界面咯,在这我要吐槽一下 我看群里大佬好像有一键生成脚本的小功能,et6没有自己手动创建脚本多了会有点累,哈哈哈 原谅我是小白想省事点,也没有大佬写一个。

http://www.xdnf.cn/news/12511.html

相关文章:

  • 精准计量+AI管控——安科瑞助力高校水电管理数字化转型
  • C#插件与可扩展性
  • 闲来无事,用HTML+CSS+JS打造一个84键机械键盘模拟器
  • 优化自旋锁的实现
  • pdfjs库使用3
  • Linux内核机制——内存管理
  • C++ 迭代器失效详解:如何避免 vector 操作中的陷阱
  • 数控铣床自动上下料机械手控制装置设计
  • IDEA 2025.1更新-AI助手试用和第三方模型集成方案
  • C++类和对象上
  • 00.IDEA 插件推荐清单(2025)
  • Jenkins 简易使用记录
  • 从零到一:管理系统设计新手如何快速上手?
  • MATLAB 控制系统设计与仿真 - 37
  • package.json 里面出现 workspace:*,关于工作区的解释
  • 极狐GitLab 账号限制有哪些?
  • 使用MetaGPT 创建智能体(2)多智能体
  • 抽象类和接口的区别
  • 基于X86/RK/全志+FPGA+AI工业一体机在电力接地系统中的应用方案
  • 【人力资源管理系统】C#实现
  • 国产品牌芯洲科技100V降压芯片系列
  • vscode 红色波浪线问题
  • YOLOv8 Bug 及解决方案汇总 【2024.1.24更新】【环境安装】【训练 断点续训】OMPError / KeyError
  • 深度学习3.1 线性回归
  • vcpkg缓存问题研究
  • volatile 和 memory barrier 的组合用法
  • xml+html 概述
  • React 事件处理基础
  • 简单好用的在线工具
  • Webpack基础