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

[Unity]-[UI]-[Prefab] 关于UGUI UI Prefab的制作技巧

从上到下,从外到里,多用空物体套壳

这个意思就是说在使用ugui时制作prefab时,要遵循“从上到下,从外到里,多用空物体套壳”的原则,好处就是后面好修改,并且可以复用不同的prefab子模块。且在布局中不会出错,

锚点

关于ugui中 Recttransform的锚点是一个很重要的东西,涉及到屏幕适配的问题。Inspector中的Anchor
Image实例

四个方向的锚点

四个方向的锚点是指三角形的那个标志,他可以指一个点,也可以分开在4个方向,它是物体对于父物体的相对锚点信息。可以通过修改Anchor这个api去修改。
在这里插入图片描述

//api举例GetComponentInChildren<Image>().gameObject.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, 0);GetComponentInChildren<Image>().gameObject.GetComponent<RectTransform>().anchoredPosition3D = new Vector3(0,0, 0);GetComponentInChildren<Image>().gameObject.GetComponent<RectTransform>().anchorMax = new Vector2(0, 0);GetComponentInChildren<Image>().gameObject.GetComponent<RectTransform>().anchorMin = new Vector2(0, 0);GetComponentInChildren<Image>().gameObject.GetComponent<RectTransform>().SetAnchor(0, 0, 0, 0,true);

轴心

Pivot
以左下角为(0,0),辅佐锚点进行相对位置的确认。
pivot

//api举例GetComponentInChildren<Image>().gameObject.GetComponent<RectTransform>().pivot = new Vector2(0, 0);GetComponentInChildren<Image>().gameObject.GetComponent<RectTransform>().SetPivot(0, 0, true);

拉伸

基础的transform三件套:position.rotation.scale,这些另外开文章说。

这里说说锚点与轴心的配合使用。

通俗来说,锚点是对于父物体的锚定位置点,轴心是本物体的锚定位置点。

所以,如果父物体或者适配分辨率改变,那么物体的位置就会由锚点到轴心的距离来做判定。
本物体的形状改变由轴心确定。比如矩形拉伸,如果轴心在左侧,就会向右拉伸,轴心在中间,向两边拉伸,轴心在右侧,向左边拉伸。

精灵图的切与拉

九宫格拉图

在Unity中,精灵图的九宫格(Nine-Slice Scaling)是一种用于处理UI元素在拉伸时保持边缘和角落不变形的技术。以下是关于精灵图九宫格的解释以及使用方法的详细介绍:

一、九宫格解释

https://blog.csdn.net/qq_30144243/article/details/136902393

九宫格技术将一张图片分为9个部分,其中:

  • 四个角落(1、3、7、9)在拉伸时不会受到任何影响,保持原样。
  • 四个边缘(2、4、6、8)会根据拉伸方向进行变形,其中2和8位置将进行水平拉伸,4和6位置会进行垂直拉伸。
  • 中心部分(5)在水平和垂直方向上都会进行拉伸。

这种处理方式使得UI元素在拉伸时能够保持其原有的形状和风格,特别是边缘和角落部分不会变形。

二、九宫格使用

在Unity中,使用九宫格技术通常涉及以下步骤:

  1. 选择精灵图

    • 在Unity的Project面板中,选择需要进行九宫格处理的精灵图。
  2. 打开Sprite Editor

    • 在Inspector面板中,点击Sprite Editor按钮,进入精灵图编辑界面。
  3. 设置九宫格

    • 在Sprite Editor中,找到Border参数,这个参数用于设置九宫格的边框大小。
    • 通过调整Border的四个参数(左、右、上、下),可以定义九宫格的切割方式。
    • 设置完成后,点击Apply按钮应用更改。
  4. 选择Sprite Type

    • 在Sprite Editor中,找到Sprite Type选项,并选择Sliced(切片模式),这就是九宫格的应用模式。
    • 默认情况下,Sprite Type可能是Simple(简单模式),它表示正常的拉伸,不会应用九宫格效果。
  5. 使用九宫格精灵图

    • 设置完成后,可以将九宫格精灵图拖放到场景中的UI元素上,或者用于其他需要拉伸的场合。
    • 当UI元素被拉伸时,它会根据九宫格的设置保持边缘和角落不变形。

三、注意事项

  • 在设置九宫格时,要确保边框大小适中,以避免在拉伸时出现不期望的变形效果。
  • 如果精灵图包含复杂的形状或图案,可能需要更仔细地调整九宫格的边框大小,以获得最佳的拉伸效果。
  • 在使用九宫格精灵图时,要注意其尺寸和分辨率,以确保在游戏或应用中呈现出清晰的图像。

总之,九宫格技术是一种非常有用的UI处理技术,它可以帮助开发者在拉伸UI元素时保持其原有的形状和风格。通过合理设置九宫格的边框大小和类型,可以轻松地实现各种复杂的UI布局和效果。

切图

在Unity中切割精灵图(Sprite)是2D游戏开发中的一个常见任务,以下是一些关键的技巧和方法:

一、准备工作

  1. 导入图片:将需要切割的图片导入到Unity项目中。
  2. 设置图片类型:在Inspector面板中,将图片的Texture Type设置为Sprite (2D and UI)。
  3. 修改Sprite Mode:将Sprite Mode更改为Multiple,这样才能在Sprite Editor中进行切割操作。

二、切割方式

Unity提供了多种切割方式,可以根据具体需求选择最适合的方法。

  1. 自动切割(Automatic)

    • 适用于图片中包含多个规则排列或大小相近的精灵图。
    • 在Sprite Editor中,选择Slice模式,然后选择Automatic。
    • 系统会根据图片的像素点自动识别并切割出单个精灵图。
    • 可以根据需要调整切割后的精灵图的大小和位置。
  2. 手动切割

    • 适用于图片中包含不规则排列或大小不同的精灵图。
    • 在Sprite Editor中,选择Slice模式,然后选择Grid或其他手动切割方式。
    • 手动设置每个精灵图的大小和位置,可以使用鼠标拖拽网格线进行调整。
    • 切割完成后,点击Apply按钮应用切割结果。
  3. 按像素大小切割(Cell Size)

    • 根据自定义的像素点大小来切割图片。
    • 在Sprite Editor中,设置Cell Size的横竖像素点数,然后点击Slice进行切割。
    • 适用于图片中精灵图排列整齐且大小相同的情况。
  4. 按行列数切割(Cell Count)

    • 根据自定义的行数和列数来切割图片。
    • 在Sprite Editor中,设置Cell Count的行数和列数,然后点击Slice进行切割。
    • 适用于图片中精灵图数量固定且排列整齐的情况。

三、切割后处理

  1. 保存切割结果:切割完成后,点击Apply按钮应用切割结果。Unity会自动将切割后的精灵图保存为多个子精灵。
  2. 优化性能:切割后的精灵图可以减少Batches和SetPass calls的值,从而降低游戏运行时的性能损耗。在切割时,尽量保持精灵图的大小和排列规则,以便更好地优化性能。
  3. 使用切割后的精灵图:在Project面板中可以找到切割后的精灵图,将它们拖放到场景中的相应位置或使用在动画、UI等元素中。

四、注意事项

  1. 备份原始图片:在进行切割操作之前,建议备份原始图片以防意外丢失。
  2. 选择合适的切割方式:根据图片中精灵图的排列和大小选择合适的切割方式,以获得最佳的切割效果。
  3. 调整切割参数:在切割过程中,可以根据需要调整切割参数(如像素大小、行列数等)以获得更精确的切割结果。

总之,在Unity中切割精灵图需要一定的技巧和经验。通过选择合适的切割方式、调整切割参数以及优化性能等步骤,可以高效地切割出满足需求的精灵图并为后续的游戏开发做好准备。

相关文章:

  • 数据结构——顺序表(C语言实现)
  • 论文阅读:2024 arxiv AI Safety in Generative AI Large Language Models: A Survey
  • Odoo:免费开源的轧制品行业管理软件
  • Python 项目文档编写全攻略:从入门到自动化维护
  • PLM系统如何支持利益相关者分析?沟通矩阵设计
  • .NET Core 服务实现监控可观测性最佳实践
  • C#/.NET/.NET Core拾遗补漏合集(25年4月更新)
  • 在国产麒麟Kylin Linux Advanced Server V10中使用QT5开发环境并支持中文输入
  • HarmonyOs学习 环境配置后 实验1:创建项目Hello World
  • 第八篇:系统分析师第三遍——3、4章
  • UE5编辑器静止状态下(非 Play 模式)睫毛和眼睛的渲染是正常的,而在 Play 模式下出现模糊
  • 回顾与动机 - 为什么我们需要 Transformer
  • Attention 机制核心 - Transformer 的基石
  • 如何用Brower Use WebUI实现网页数据智能抓取与分析?
  • 在Ubuntu系统中安装和升级RabbitVCS
  • 基于X86/RK/全志+FPGA+AI工业一体机在电力接地系统中的应用方案
  • ubuntu系统上基于RKE2部署K8S及Rancher
  • 字符集、IO流(一)
  • HAL库通过FATFS和SDIO+DMA写入SD卡数据错误
  • MSTP+VRRP+DHCP(ENSP)
  • 观察|雀巢咖啡加码中国布局,如何借势云南咖啡打造新增长极?
  • 习近平圆满结束对柬埔寨国事访问
  • 广西吃了自然保护地划得过多的亏?自治区党委书记要求廓清模糊认识
  • 农文旅项目投资1700万后被告知是禁养区?南京浦口通报
  • 上海电网新能源发电功率首破400万千瓦,绿电交易规模跨越式增长
  • 警方通报一起交通事故:6人受伤,系司机启动车辆时操作不当