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

Unity_UI_NGUI_UI组件

Unity_UI_NGUI

一、UI_NGUI_UI组件

1.Root组件(UIRoot)

UIRoot 组件是 NGUI UI 系统的根节点,负责整个 UI 的分辨率适配和缩放。它有三种主要的适配模式:

1. Flexible(灵活模式)
  • UI 以像素为基础,100 像素的物体无论在多少分辨率上都是 100 像素。
  • 这意味着 100 像素在分辨率低的屏幕上可能显示正常,但在高分辨率上会显得很小。
  • 适用场景:适用于可以手动拖窗口改变分辨率的设备,比如 PC 端。
  • 主要参数:
    • Minimum Height:屏幕高小于该值时,开始按比例缩放。
    • Maximum Height:屏幕高大于该值时,开始按比例缩放。
    • Shrink Portrait UI:竖屏时,按宽度来适配。
    • Adjust by DPI:使用 DPI 做适配计算,建议勾选。
2. Constrained(约束模式)
  • 屏幕按尺寸比例来适配,不管实际屏幕有多大,NGUI 都会通过合适的缩放来适配屏幕。
  • 这样在高分辨率上显示的 UI 就会被放大保持原有大小,但可能会模糊,好处是各设备看到的 UI 和屏幕比例是一样的。
  • 适用场景:适用于移动设备。因为移动设备都是全屏应用,不会频繁改变分辨率,只需适配不同分辨率的设备。
  • 横屏建议勾选高 fit,竖屏建议勾选宽 fit,一般可以比较好地进行分辨率适应。
  • 主要参数:
    • Content Width:按照该宽度值适配屏幕,制作资源时的默认分辨率宽。
    • Content Height:按照该高度值适配屏幕,制作资源时的默认分辨率高。
    • 勾选 Width:屏幕比例变化时,按宽度来适配(宽度始终不变)。
    • 勾选 Height:屏幕比例变化时,按高度来适配(高度始终不变)。
    • 两个都勾选:不会被裁剪,但有黑边。当适配宽高比大于实际宽高比时,按宽度适配,反之按高度适配。
    • 如果两个都不勾选:始终保证 UI 填充满屏幕,但可能会被裁剪。
  • 注意事项:背景图一定要考虑极限宽高比,极限宽高比突出,最大宽高比如 19.9:9。
3. Constrained On Mobiles(移动端约束模式)
  • 上两种模式的综合体。
  • 在 PC 和 Mac 等桌面设备上用 Flexible 模式,在移动设备上用 Constrained 模式。
  • 适用场景:适用于多平台发布的游戏和应用。
补充说明 像素与分辨率

在UI开发中,理解像素(Pixel)、分辨率(Resolution)、DPI(每英寸像素数)等概念非常重要,这些直接影响UI的显示效果和适配策略。

  • 像素(Pixel):屏幕上最小的显示单元。UI元素的大小通常以像素为单位进行设计和布局。
  • 分辨率(Resolution):指屏幕水平方向和垂直方向的像素数量,例如1920×1080。分辨率越高,屏幕显示的内容越细腻。
  • DPI(Dots Per Inch)/PPI(Pixels Per Inch):每英寸所包含的像素点数。DPI越高,单位面积内像素越多,显示越精细。
  • UI适配:指UI在不同分辨率、不同屏幕尺寸、不同DPI设备上都能保持良好显示和交互体验的能力。
常见误区
  • 高分辨率=大显示面积? 实际上,高分辨率只代表像素多,显示面积还取决于屏幕物理尺寸和DPI。
  • 像素大小=物理大小? 不同DPI下,同样像素数的UI元素在不同设备上物理大小可能完全不同。
  • UI设计稿直接等于最终显示? 需要结合分辨率和适配策略,UIRoot等组件会根据实际设备进行缩放和调整。
UI适配建议
  • 设计UI时要考虑主流分辨率和极端宽高比,避免UI在某些设备上过大或过小。
  • 合理使用NGUI的Flexible、Constrained等模式,结合DPI和分辨率进行适配。
  • 背景图等大面积元素建议按最大宽高比设计,避免拉伸或裁剪。

2.Panel组件(UIPanel)

UIPanel(面板)是NGUI中用于管理UI渲染顺序和裁剪的核心组件。其主要参数说明如下:

主要参数说明
  • Alpha

    • 控制所有子UI元素的透明度。
  • Depth

    • 控制该Panel的层级。层级高的Panel渲染时会把层级低的先渲染的遮挡住。
  • Clipping(裁剪)

    • 控制Panel的内容显示范围,有四种模式:
      • None:不处理,正常显示。
      • Texture Mask:根据图片信息进行遮罩(如人物头像)。
      • Soft Clip:自定义范围裁剪(如拖动框)。
      • Constrain But Dont Clip:约束但不裁剪,不裁剪画面,只限制响应范围。
  • Sorting Layer(排序层)

    • 控制该Panel所在的渲染层级,决定UI的显示顺序。
Advanced Options(渲染相关高级选项)
  • Render Q(渲染队列):渲染顺序。

  • Sort Order(排序):同层内的排序。

  • Normals:是否需要灯光着色器。

  • UV2:是否用于自定义着色器效果。

  • Shadow Mode:元素组件拖动时提升。

  • Cull:元素组件拖动时剔出。

  • Visible:检查元素组件是否离开屏幕。

  • Padding:边界内容。

  • Offset:抵消偏移位置。

  • Static:检查子元素是否会移动。

  • Panel Tool:是否显示面板工具。

  • Anchors(锚点设置)

    • 用于分辨率自适应设置大小。

Panel组件总结与注意事项
  • 1. 没有Panel父对象,UI控件看不到。
    • 所有UI控件必须作为某个Panel的子对象,否则不会被渲染。
  • 2. Panel一般用于管理面板,控制层级。
    • Panel主要用于管理UI面板的渲染顺序和分组,便于UI的分层和遮挡控制。
  • 3. 一个UI界面可以有多个Panel,一般一个Panel管理一个面板。
    • 复杂界面可按功能或层级拆分为多个Panel,提升管理和适配灵活性。

3.EventSystem(UICamera)

EventSystem(事件系统)是 Unity UI 输入与交互的核心组件,负责管理鼠标、触摸、键盘等各种输入事件。其主要参数说明如下:

主要参数说明
  • Event Type(事件类型)

    • 决定脚本如何对鼠标和触屏事件进行响应。
    • UI 模式:处理事件的方式为相机组件的深度。
    • World 模式:按距离主摄像机的远近来进行响应排序。
    • 2D 和 3D 的区别:碰撞器是用 3D 碰撞器还是 2D 碰撞器。
  • Events go to

    • 事件通过刚体还是碰撞盒传递。
  • Process Events In

    • 事件是在 Update 中还是 LateUpdate 中处理(一般默认 Update)。
  • Event Mask

    • 指定哪些游戏对象层级会接收事件。
  • Debug

    • 开启后可调试模式,判断当前鼠标/事件交互的对象,可在 Scene 窗口看到信息。
  • Command Click

    • Mac 电脑上是否用 Command 按键模拟右键操作。
  • Allow Multi Touch

    • 是否支持多点触碰。
  • Auto Hide Cursor

    • 游戏有控制器或其他输入设备时,是否自动隐藏光标。
  • Sticky Tooltip

    • 是否使用 tooltip。
  • Long Press Tooltip

    • 是否长按出现提示。
  • Tooltip Delay

    • 停留多久出现 tip。
  • Raycast Range

    • 射线长度,一般不修改。
  • EventSources(接收的事件来源)

    • Mouse(鼠标)
    • Touch(触摸)
    • Keyboard(键盘)
    • Controller(控制器)
  • Thresholds(行为阈值)

    • 调整鼠标事件的点击、拖拽、轻拍等行为的判定阈值:
      • Mouse Drag(鼠标拖拽)
      • Mouse Click(鼠标点击)
      • Touch Drag(触摸拖拽)
      • Touch Tap(触摸点击)
  • Axes and keys(热键关系)

    • 一般不修改。

EventSystem 总结与注意事项
  • EventSystem 非常重要,没有它无法监听玩家输入。
  • 创建 UI 时 2D UI 和 3D UI 的主要区别是摄像机模式不同。
  • EventSystem 的 2D 和 3D 主要是采用 2D 碰撞器还是 3D 碰撞器,不能直接改变摄像机模式来切换。

http://www.lryc.cn/news/574590.html

相关文章:

  • 对人工智能的厌倦感是真实存在的,而且它给品牌带来的损失远不止是参与度的下降
  • 【Linux网络编程】多路转接I/O(一)select,poll
  • 51c嵌入式~电路~合集8
  • 一、永磁同步电机矢量控制——电机数学模型
  • 第十节 新特性与趋势-CSS层叠规则升级
  • AI智能化高效办公:WPS AI全场景深度应用指南
  • 设计模式系列(09):结构型模式 - 适配器模式
  • ffmpeg环境配置
  • HTTP响应头Content-Disposition解析
  • 【MV】编排8:基于时间线数据多层分段避免过度拟合特定歌曲
  • Verilog基础:编译指令`default_nettype
  • Windows搭建opencv cuda开发环境并验证是否成功
  • VO,DTO,BO,PO,DO
  • 7.5.3_2处理冲突的方法-开放定址法
  • Redis 分布式锁原理与实战-学习篇
  • 快速搭建系统原型,UI界面,有哪些高效的AI工具和方法
  • PLA/PHA生物降解化妆品包装材料的稳定性与货架期契合性研究
  • 3D人物建模与WebGL渲染实战
  • bmc TrueSight 监控 Oracle 11g 配置
  • Selenium 4.0 + AI:重构自动化测试的智能革命
  • 【大模型问题】ms-swift微调时,显存持续增长原因分析与解决方案
  • Python Bug 修复案例分析:编码问题导致程序出现bug 两种修复方法
  • FSMC控制LCD(TFTLCD:Z350IT002)显示案例
  • CUDA NCU Occupancy学习笔记
  • 触觉智能RK3506核心板/开发板-开源鸿蒙+星闪分享(上)
  • Web Worker 通信封装与实战应用详解
  • .NET Core充血模型
  • go语言 *和
  • 配置自己的NTP 服务器做时间同步
  • HTML炫酷烟花