Unity3D :运行时 UI 的性能注意事项

这篇具有很好参考价值的文章主要介绍了Unity3D :运行时 UI 的性能注意事项。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity3D :运行时 UI 的性能注意事项,ui

推荐:将 NSDT场景编辑器 加入你的3D工具链
3D工具集: NSDT简石数字孪生

运行时 UI 的性能注意事项

本页介绍如何提高运行时的性能用户界面
.

优化数据存储

您可以使用 usageHints 来设置元素在运行时的使用方式,以便相应地优化数据存储。例如:

visualElement.usageHints = UsageHints.DynamicTransform;

下表通过示例描述了要用于哪些元素的属性:

具有以下元素 使用这个
频繁更改其位置或转换 UsageHints.DynamicTransform 如果更改 、 或元素,请在该元素上设置 UsageHints.DynamicTransform。style.leftstyle.topstyle.position
许多经常更改位置或转换的子元素DynamicTransform UsageHints.GroupTransform 在 ShaderGraph 中,每个节点都使用 ,在视图容器上设置 UsageHints.GroupTransform。DynamicTransform
正在设置动画的内置样式颜色 UsageHints.DynamicColor 如果更改元素的 、 或任何边框颜色(如 ),请在该元素上设置 UsageHints.DynamicColor。style.backgroundColorstyle.unityBackgroundImageTintColorstyle.borderLeftColor

考虑设备功能

一些安卓设备和WebGL
无法部分修补索引缓冲区。如果您的受众使用此类设备,或者如果您以 WebGL 为目标,UI 工具包呈现仍然有效,但性能可能会降低。为避免性能下降,请勿同时对太多元素进行动画处理,并在设备上进行配置文件。

避免网格镶嵌

构建的计算成本很高网孔
曲面细分视觉元素
.每当元素的大小(宽度/高度)发生变化时,其几何图形都会重新构建,这可能是动画或频繁调整大小的问题。

一般来说,变换和纹理在灵活性和重用方面并不是好的选择。但是,在制作动画时,为了获得更好的性能,请执行以下操作:

  • 使用变换而不是宽度或其他布局属性
  • 使用纹理或 2D精灵
    而不是圆角和边框

控制动态图集的纹理

要减少因纹理更改而中断的批次数并实现良好的性能,请使用图集将同时使用的纹理组合在一起。您可以使用以下任一方法实现此目的:

  • 使用精灵图集
    .使用此方法,您可以更好地控制精灵,但需要手动创建精灵图集。
  • 使用动态图集。UI 工具包会在视觉元素引用动态图集时自动向动态图集添加纹理或从中删除纹理。

验证动态图集中的纹理

使用动态图集将纹理组合在一起时,要限制绘制调用的次数,请确保纹理进入动态图集。若要验证,请使用帧调试器。帧调试器可帮助您观察纹理更改并推断批量中断。

以下示例验证动态图集是否包含运行时 UI 中的所有纹理。

Unity3D :运行时 UI 的性能注意事项,ui

示例动态图集窗口包含运行时 UI 中的所有纹理。

应用内置筛选器

动态图集纹理从指定的最小大小开始,并根据需要增长,水平或垂直加倍,直至指定的最大大小。您可以在面板设置资源中定义最小和最大图集大小。您还可以使用动态图集中的滤镜来决定是否向图集添加子纹理。

要启用或禁用滤镜,请在面板设置资源的检查器窗口中,从动态图集设置>活动滤镜下拉列表中选择选项。

使用自定义筛选器

您可以将自定义过滤器分配给 PanelSettings.dynamicAtlasSettings.customFilter 以在全局或每个纹理的基础上添加或放宽约束。

以下自定义筛选器示例绕过 Size 筛选器中的大纹理,同时使 Size 筛选器对其他纹理保持活动状态:

using UnityEngine;
using UnityEngine.UIElements;

class MyCustomFilter : MonoBehaviour
{
    public PanelSettings panelSettings;
    public Texture2D largeTexture;

    void OnEnable() { panelSettings.dynamicAtlasSettings.customFilter = Filter; }

    void OnDisable() { panelSettings.dynamicAtlasSettings.customFilter = null; }

    bool Filter(Texture2D texture, ref DynamicAtlasFilters filtersToApply)
    {
        if (texture == largeTexture)
        {
            // Disable the Size check for this one.
            filtersToApply &= ~DynamicAtlasFilters.Size;
        }
        return true;
    }
}

由3D建模学习工作室整理翻译,转载请注明出处!文章来源地址https://www.toymoban.com/news/detail-524607.html

到了这里,关于Unity3D :运行时 UI 的性能注意事项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity3D热更新】Unity3D 零成本、高性能的C#的热更新框架:HybridCLR

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 相信只要做过热更新的小伙伴,都被热更新搞过心态吧。 我有一个小伙伴,本来是面向

    2024年01月16日
    浏览(49)
  • Unity3D 性能杀手Overdraw详解

    Unity3D是一款强大的游戏开发引擎,但在使用过程中,我们需要注意一些可能会影响游戏性能的因素。其中之一就是Overdraw(过度绘制),它可以成为性能杀手。本文将详细解释Overdraw的概念、原因以及如何通过代码实现来减少Overdraw对游戏性能的影响。 对惹,这里有一 个游戏

    2024年02月02日
    浏览(37)
  • 【Unity3D】UI Toolkit元素

    1 前言         UI Toolkit简介 中介绍了 UI Builder、样式属性、UQuery、Debugger,UI Toolkit容器 中介绍了 VisualElement、ScrollView、ListView、GroupBox 等容器,UI Toolkit样式选择器 中介绍了简单选择器、复杂选择器、伪类选择器等样式选择器,本文将介绍 UI Toolkit 中的元素,主要包含

    2024年02月09日
    浏览(52)
  • 【Unity3D】UI Toolkit容器

    1 前言         UI Toolkit简介 中介绍了 UI Builder、样式属性、UQuery、Debugger,UI Toolkit元素 中介绍了 Label、Button、TextField、Toggle、Radio Button、Slider、Progress Bar、Dropdown、Foldout 等元素,UI Toolkit样式选择器 中介绍了简单选择器、复杂选择器、伪类选择器等样式选择器,本文将

    2024年02月09日
    浏览(54)
  • 【Unity3D】UI Toolkit简介

            UI Toolkit 是一种基于 Web 技术的 GUI 框架,是为了解决 UGUI 效率问题而设计的新一代 UI 系统(UGUI 的介绍详见→UGUI概述)。与 UGUI 不同,UI Toolkit 没有采用 GameObject 的方式,而是参考了 Web 技术的 XML 和 CSS 方案。这意味着它只保存变化的数据,而不是整个界面状态,

    2024年02月10日
    浏览(59)
  • Unity3D:提升场景画面品质&平衡性能优化

    在日常开发中,提升场景画面品质的同时平衡性能优化一直是很重要且头疼的一部分,尤其是当场景类型不同及效果需求不一样时。 所以怎么同时提升场景画面品质和平衡性能优化呢,下面介绍一些适用度高且实用性好的设置。 介绍之前先说一下结论:怎么样才能说的上是

    2024年02月08日
    浏览(55)
  • 【Unity3D日常BUG】Unity3D打包WEBGL平台运行出现无法解析gzip、构建压缩等问题

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 在Unity3D中打包WEBGL运行出现这样的错误: 具体分析: 1、无法解析xxx.gz文件 2、启用了构建压缩,但是

    2024年02月07日
    浏览(56)
  • 使用Unity生成UI预制体 (Unity3D)

    在Unity中,预制体(Prefab)是一种非常有用的工具,用于生成可重复使用的UI元素。预制体使得UI的创建和管理变得更加简单和高效。在本文中,我们将详细介绍如何使用Unity生成UI预制体,并提供相应的源代码示例。 步骤1:创建UI元素 首先,我们需要创建UI元素,例如按钮、

    2024年02月05日
    浏览(58)
  • 【Unity3D】实现UI点击事件穿透

              注意:EventSystem.current.RaycastAll获取到的对象列表是能够接受事件的,假如你的按钮Button自己身上没有Image,而是Button的子物体有,那么你就要给这个子物体也加上标签Tag才能响应到。 如果ExecuteEvents.Execute不管用,可以试试ExecuteEvents.ExecuteHierarchy

    2024年02月04日
    浏览(49)
  • Unity3D:内置着色器的用途和性能

    推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 Unity 中的着色器是通过__材质__来使用的,材质本质上结合了着色器代码与纹理等参数。此处提供了关于着色器/材质关系的深入说明。 当选择材质本身或选择一个使用材质的__游戏对象__时,材质属性将显

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包