【学习笔记】Unity基础(七)【uGUI基础、利用render Texture实现小地图功能】

news2024/11/24 9:56:22

目录

    • 一 Canvas
      • 1.1 三种Render Space渲染空间 screen
      • 1.2 canvas scaler画布缩放器
      • 1.3sprite
      • 1.4 sprite packer
      • 1.5 unity目录
      • 1.6 RuleTile Tilemap
      • 1.7 sprite packer
      • 1.8 sorting layer
    • 二 rect transform
      • 2.1 pivot 中轴 中心点
      • 2.2 anchor 锚点
      • 2.3 uGUI源代码
    • 三 EventSystem
      • 3.1 event组件
      • 3.2 TextMeshPro
      • 3.3 Event Trigger事件触发的介绍与使用
      • 3.4 Event Trigger事件触发的介绍与使用——事件接口类型
    • 四 UI组件分类
      • 4.1 Image
        • 4.1.1sprite editor
        • 4.1.2 slice类型
        • 4.1.3 Tiled
        • 4.1.4 Filled
      • 4.2 raw Image
        • 4.2.1 render texture
        • 4.2.2 利用render Texture实现小地图功能
    • 五 总结

转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/130808689

本篇基本是大纲性质,参考价值不大,只有最后一小节“利用render Texture实现小地图功能”花了点时间,可以看看,不过也用到了上面的canvas、UI image等知识、以及input等脚本功能,也算一个小练手吧

倒是csdn一个插图小技巧运用得炉火纯青了:图片链接后加入# =50%x可以按百分比控制图片显示大小,注意等号前一定要空一格,还可以添加布局如#pic_center =40%x

![在这里插入图片描述](https://img-blog.csdnimg.cn/1cc73da871fc40e38e457f184306afc6.png#pic_left =40%x)

全文主要参考:

  • 官方手册 Unity UI
  • 【客学院】Unity3D入门教学 + 附c#编程基础

一 Canvas

在这里插入图片描述

1.1 三种Render Space渲染空间 screen

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

1.2 canvas scaler画布缩放器

画布缩放器组件用于控制画布中 UI 元素的整体缩放和像素密度。此缩放会影响画布下的所有内容,包括字体大小和图像边框。
参见官网手册

1.3sprite

sprite editor
在这里插入图片描述

sprite mode:single,multiple(做图形组合,逐帧动画)
在这里插入图片描述
在这里插入图片描述

1.4 sprite packer

packing tag

1.5 unity目录

package、asset

参考:
官方手册 Unity 的 Package Manager
浅谈Assets——Unity资源映射

1.6 RuleTile Tilemap

  • 报错:2d Game Kit The type ‘RuleTile’ exists in both Assembly-CSharp, and Unity.2D.Tilemap.Extras
    还是通过改类名完成的 参考Unity 导入项目报错

1.7 sprite packer


Sprite Packer 已弃用
请注意 Sprite Packer 在 Unity 2020.1 和更新版本中已弃用,并且将不再作为精灵打包模式的可用选项。现有已使用 Sprite Packer 的项目仍然可以继续使用它,但是在 2020.1 以后创建的任何新项目在打包纹理时将默认使用 Sprite Atlas 系统。
官方手册

右键project>asset>2d>sprite atlas
在这里插入图片描述
在这里插入图片描述

sprite atlas使用目的就是减少draw call调用,提高运行效率
以后还会使用动态加载sprite,用到project assets 中resource目录?(结合prefeb?)

packing tag不知道怎么用

1.8 sorting layer

在这里插入图片描述
这几个layer区别是啥
在这里插入图片描述
注意canvas 的render mode:overlay直接覆盖,它本身也有sort order但是是独立的分层方式。

Order in Layer顾名思义,就是Sorting Layer的内部排序,这样配合Sorting Layer就是两级的排序,可以解决大部分情况的渲染顺序需求。
小结: 渲染排序级别:Camera的Depth > Canvas的Sorting Layer > Canvas的Order in Layer
Unity中SortingLayer、Order in Layer和RenderQueue的讲解

二 rect transform

参考官方手册:矩形变换

2.1 pivot 中轴 中心点

在这里插入图片描述
在这里插入图片描述
注意Rect transform和transform的区别,只有在canvas上的image
在这里插入图片描述

2.2 anchor 锚点

快捷键:
ctrl+anchor 平移四个anchor
shift+anchor 等比例缩放对象
ctrl+shift+anchor 平移对象和anchor
在这里插入图片描述

2.3 uGUI源代码

uGUI源代码github

三 EventSystem

官方APIEventSystem
2019有这个api,2021不知道放哪个位置了。
官方手册

在eventSystem中,inspector底部有这个信息框,显示鼠标等事件
在这里插入图片描述

3.1 event组件

  • Event System事件系统管理器
  • Standalone Input Module标准接收器
  • Touch Input Module触屏接收器
  • Event Trigger事件触发器
  • Graphic Ray caster界面组件的射线检测
  • Physic/ Physic2 D Raycaster场景物体的射线检测

3.2 TextMeshPro

在这里插入图片描述

3.3 Event Trigger事件触发的介绍与使用

在这里插入图片描述
!!!!学习C#的委托和事件机制
在这里插入图片描述

3.4 Event Trigger事件触发的介绍与使用——事件接口类型

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

四 UI组件分类

可交互组件(继承Selectable类)和可视组件
在这里插入图片描述
在这里插入图片描述

4.1 Image

图像 (Image)

前提:sprite需要将导入的图片Type改为Sprite类型才能被UI使用
在这里插入图片描述
UI-Image有四种类型
在这里插入图片描述

  • Simple 原始图片
  • Sliced 切割图片
  • Tiled 平铺图片
  • Filled 填充图片

其中:
preserve aspect:外观保护,等比缩放
set Native Size:

4.1.1sprite editor

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

4.1.2 slice类型

进入sprite editor拖动绿条纹,改变border边框大小
在这里插入图片描述
可以看到sliced类型,拉伸时边框不会变形,这种类型图片拉伸效果就比simple的好看

参考 Image.Type.Sliced

请添加图片描述
fill center :是否显示中间的切片

4.1.3 Tiled

显示切开的 Sprite,并将其可调大小的部分平铺而非拉伸。

平铺图像的行为方式与 Sliced 图像相似,区别在于将图像的可调大小部分重复而非拉伸。对于拉伸时外观不理想的精细 UI 图形,此功能很有用。

4.1.4 Filled

填充图像将显示 Sprite 的一部分,RectTransform 的其余部分保持透明。
例如,可将其用来显示圆形或线形状态信息,如技能cd、血条和进度条等。
在这里插入图片描述

详细内容还是参考其他博客或官方手册吧,这里只是简单过一下
Unity技巧 #5 – 圖像 Image
官方手册 9 切片精灵

4.2 raw Image

raw Image控件向用户显示非交互式图像。此图像可用于装饰或图标之类的用途,还可以从脚本更改图像以便反映其他控件的更改。该控件类似于图像 (Image) 控件,但为动画化图像和准确填充控件矩形提供了更多选项。但是,图像控件要求其纹理为精灵,而原始图像可以接受任何纹理。

用途:

  1. 网络加载图片(动态加载)
  2. 播放视频或者动态图(两种特殊纹理:Render Texture、Movie Texture)

4.2.1 render texture

渲染纹理是一种 Unity 在运行时创建和更新的纹理。要使用渲染纹理,请使用 Assets > Create > Render Texture 创建一个新的渲染纹理,并将其分配给 Camera 组件中的 Target Texture。然后,即可像使用常规纹理一样在材质中使用渲染纹理。

官方手册 渲染纹理

4.2.2 利用render Texture实现小地图功能

目标:实现小地图追踪人物移动,按M键切换小地图高度

使用的是官方第三人称demo,参照下面的参考链接创建顶部摄像头、创建Render Texture并绑定到这个摄像头的target Texture,再用UI raw Image展现这个Render Texture,即可实现。

我在这基础上,添加了摄像机跟随和按“M”键切换顶部摄像机高度的功能,详细参见下面代码。
请添加图片描述

public class MiniMap : MonoBehaviour
{
    public GameObject gameObject; //这个gameObject绑定到机器人

    // Update is called once per frame
    void Update()
    {
        var position = gameObject.transform.position;
        float newHeight= this.transform.position.y;
        if (Input.GetKeyDown(KeyCode.M))
        {
            newHeight = this.transform.position.y > 15 ? 10f : 30f;
        }
        
        this.transform.position = new Vector3(position.x, newHeight,
            position.z);
    }
    
}

参考: 教你3个步骤实现Unity小地图(知识点:RenderTexture、Mask、shader)

五 总结

初步过了下uGUI,先前小地图也曾提过多次,这次花了点时间实现了下,还是有成就感的。
接下来进入动画、纹理、特效、镜头等学习。

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

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

相关文章

【paddlecls】多机多卡-linux

1. 安装docker(引擎): (https://docs.docker.com/engine/install/ubuntu/) Install Docker Engine on Ubuntu To get started with Docker Engine on Ubuntu, make sure you meet the prerequisites, and then follo…

助力工业物联网,工业大数据之工业大数据之油站维度设计【十四】

文章目录 01:油站维度设计02:油站维度构建 01:油站维度设计 目标:掌握油站维度的需求与设计 路径 step1:需求step2:设计 实施 需求:构建油站维度表,得到油站id、油站名称、油站所属…

北美机器人市场迎来销售放缓,未来路在何方?

原创 | 文 BFT机器人 引言 Introduction 北美机器人销售在2022年创下了历史记录,但在2023年第一季度放缓。据推进自动化协会(A3)提供的数据显示,2023年第一季度,北美公司仅订购了9,168台机器人,较2022年同…

C++进阶 —— map

目录 一,map介绍 类pair 函数模板make_pair 二,map使用 一,map介绍 map是关联容器,按照特定的次序存储元素(由键key和值value组合而成的);键key通常用于排序及唯一标识元素,而值…

不愧是华为出来的大佬,实在是太强了.....

前段时间公司缺人,也面了许多测试,一开始瞄准的就是中级水准,当然也没指望能来大牛,提供的薪资在15-20k这个范围,来面试的人有很多,但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

Pillow(PIL)入门教程(非常详细)以及python实现jpg,png、ico、bmp格式互转大全

概述 Pillow库的特点: python3安装pillow: ​Pillow是什么 Pillow创建Image对象: jpg,png: jpg与png格式互转代码: 概述 Pillow 库(有时也称 PIL 库) 是 Python 图像处理的基础库&#xf…

计划学习网络安全,需要学习哪些知识,应该怎么学习?

虽然现在的网络安全大都是指渗透测试,但是并不代表只有渗透测试这一个方向,除此之外还有二进制逆向这个方向。以下会对这两个方向分别对您进行详解。 渗透测试方向 1、学习编程语言 (1)网站如何搭建的?HTML、CSS、J…

SpingBoot+LayUI 实现酒店管理系统编写

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

晚上12点接到面试邀约电话,待业一个月的我却拒绝了....

前言 一位测试朋友最近一直在找工作,前两天刚拒绝了一个面试。那天晚上12点多,他接到一个HR的面试电话,让他第二天早上10点去公司面试。朋友和HR聊了两句,了解到这位HR经常加班,于是果断拒绝了这个面试。 我还为他可惜…

AHB-to-APB Bridge——06testbench、env、base_test、scb

框架: testbench: HCLK_PCLK_RATIO:随机定义hclk pclk比率;各个接口clk、rst连接;生成满足相应比率的pclk;与DUT的连接;将vif set到agt中去;agt在set到底层 关于rest_if&#xff…

如何保证三个线程按顺序执行?不会我教你

👨‍🎓作者:bug菌 ✏️博客:CSDN、掘金、infoQ、51CTO等 🎉简介:CSDN|阿里云|华为云|51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12…

仪表板展示 | DataEase看世界:数据呈现世界油价变化

背景介绍 最近几个月,全球能源市场一直处于动荡不安的状态,与石油相关的新闻也非常频繁。2023年2月10日,面对西方多轮限价举措,俄罗斯副总理亚历山大诺瓦克宣布,俄罗斯将在3月把每日原油产量下调50万桶。目前&#xf…

FOFA-攻防挑战

记录一下中途短暂的辉煌时刻 辉煌一刻谁都有,别拿一刻当永久 在昨天初尝战果之后,今天又习惯性的打开 https://vulfocus.cn/ 发现今天还有挑战赛,按捺不住躁动的心,又开始了学习。今天主要拿下的是这四个镜像,同时我也会对我了解…

前端SKU一站式解决方案 - Geek-SKU

因为业务需要且市场上的UI框架与插件市场内没有简易的用法并且不够全面萌生便了自己写一个SKU组件的想法,于是Geek-SKU便应运而生。 现在的SKU组件已支持vue、uniapp,支持带图SKU、主题色设置、自动选择低价SKU、自动展示价格区间等,让您更便…

浏览器自动填充但是数据为空的问题

问题背景 公司项目中登录页为了方便,需要允许浏览器自动填充账号密码。这个在很多项目都很常见,但是测试中出现了这样一个问题:视觉上已经自动填充账号密码, 但是当点击密码的小眼睛或者点击登录时,会清空掉填充的数据…

火爆全网,性能测试-全链路压测实战总结,从需求到实战...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 流程导图 梳理阶段…

SpringBoot+Vue 的家政服务管理平台+数据库(附源码)

文章目录 1. 背景2.主要技术3. 可行性分析4.系统设计5系统的详细设计与实现5.1前台模块设计5.2后台功能模块 源码下载地址 1. 背景 本系统主要是设计出家政服务管理平台,基于B/S构架,后台数据库采用了Mysql,可以使数据的查询和存储变得更加有…

Linux函数库管理

文章目录 Linux函数库管理动态与静态函数库静态函数库动态函数库 ldconfig与 /etc/ld.so.confldconfig使用案例 程序的动态函数库解析:lddldd使用案例 校验软件的正确性常见的校验软件有哪些?使用案例 Linux函数库管理 在 Linux 操作系统中,…

【算法竞赛进阶指南】141.周期 题解 KMP 最小循环节

题目描述 一个字符串的前缀是从第一个字符开始的连续若干个字符,例如 abaab 共有 5 5 5 个前缀,分别是 a,ab,aba,abaa,abaab。 我们希望知道一个 N N N 位字符串 S S S 的前缀是否具有循环节。 换言之…

7.Ansible Modules介绍

什么是Ansible Modules? Ansible模块根据其功能分为不同的组,每个模块提供了一些功能,可以直接使用。 模块官方文档: https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html 系统模块是要在系统级别执行的操作,例如修改系统上的用户…