草庐IT

Unity---一些UI基础知识复盘(持续更新)

内耗冠军要自救 2023-04-05 原文

Pivot 和 Archor

Pivot(轴心)

UI元素中那个中心的蓝色圆圈圈

当前Image的轴心点所在位置, 是UI物体旋转的轴心,当尝试旋转UI预制体时,会绕着这个轴点旋转

Archor(锚点)

在Image上由四个三角形组成的像风车一样的图标

  1. 当四个风车在一起时,面板中属性为Pos X 、Pos Y、Width、Height
  2. 当四个风车全部分开时,面板中属性为Left /Pos X、PosY/ Top 、Right、Bottom。

锚点是用来描述子物体对于父物体之间的位置关系的, 简单说来就是

使用需要注意的几个小点

  1. 当四个风车在一起时,Image不会随窗口改变而放大缩小;
  2. 当四个风车两两一起,左右两边分开的时候,Image不会随着父节点的高变化而变化,而只会随着宽的大小变化;
  3. 当四个风车两两一起,上下两边分开的时候,Image不会随着父节点的宽变化而变化,而只会随着高的大小变化;
  4. 当四个风车全分开的时候,父节点物体大小的改变总是会影响到这个Image

不同分辨率下的UI自适应的问题

分三步:

  1. 根据项目情况设置UI预制体的位置并确定好锚点
  2. 找到Canvas物体下的Canvas Scaler组件,设置UI Scale Mode为Scale with Screen Size
  3. 找Match的滑动条,左端为Width,右端为Height,拖动滑动条来做到想要的效果。

画布的Render Mode

Unity的画布渲染有三种方式

  • Screen Space - Overlay
  • Screen Space - Camera
  • World Space

Screen Space - Overlay

该方式会使永远会输出UI画面到屏幕上,且UI画面永远在物体前面,即时我们没有在层级面板中设置摄像头,也会设置UI画面

使用场景:人物主血/蓝条,人物的头像,游戏主功能按钮

Screen Scape - Camera

该方式会使输出屏幕中的3D物体和UI画面做空间上的混合,这种混合取决于面板下的Plane Distance参数

注意:这个方式下画布仍然会跟着摄像机运动,即画布永远会渲染UI界面

Plane Distance参数使用解释:

可以理解为Canvas距离摄像机的设置距离

  • Camera模式下,Canvas的Rect Transform被禁止调整,Canvas的Z值 = 摄像机(主)+ Plane Distance
  • 3D物体:当物体Transform的值在Canvas的范围之中,如果Z值 >= Canvas.RectTransfrom.z, 物体会被渲染在UI的后面, 反之,物体被渲染在UI的前面。
  • UI物体:取决于Inspector面板->Sprite Renderer组件->Additional Settings->Order in Layer值,该值大于Canvas下的Order in Layer,就会被渲染,否,则被覆盖

使用场景:没有想到,也许某些特殊项目有特殊需求(比如人物特殊对话面板?),希望各位读者指正

World Space

此模式将 UI 视为场景中的平面对象进行渲染。但是,与 Screen Space - Camera 模式不同,该平面不需要面对摄像机,可以根据喜好任意定向。
画布的大小可以使用矩形变换来设置,但画布在屏幕上的大小将取决于摄像机的视角和距离。其他场景对象可以位于画布后面、穿透画布或位于画布前面。

此模式下,3D物体渲染优先级根Camera状态下一致,UI物体有变。

UI物体:

  1. 渲染优先级仍然受 Sorting Layer和 Order in Layer影响,当物体的Sorting Layer与画布相同时,Order in Layer小于画布的会被覆盖,否则,在画布之前
  2. UI物体优先级此时也遵守3D物体的Z值规则(详情见 Camera下的 Plane Distance使用参数)

使用场景:场景中非主角角色的血条,名字,徽章等。


emmm, 先总结这么多,如果碰到新问题会持续更新的

有关Unity---一些UI基础知识复盘(持续更新)的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  3. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  4. ruby-on-rails - 如何生成传递一些自定义参数的 `link_to` URL? - 2

    我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些

  5. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  6. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  7. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  8. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  9. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  10. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

随机推荐