Unity 性能优化之UI和模型优化(九)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激!

文章目录

  • 前言
  • 一、选择UI
  • 二、UGUI的优化
    • 1.Raycast Target
    • 2.UI控件的重叠
    • 3.TextMeshPro
  • 二、模型优化
    • 1.Model选项卡
      • Mesh Compression
      • Read/Write Enabled
      • 设置Optimize Game Objects可以优化模型
      • Normals和Blend Shape Normals
    • 2.Rig选项卡
      • Animation Type
      • Skin Weights
    • 3.Animation选项卡
      • Import Animation
    • 4.Materials选项卡
    • 5.Optimize Mesh Data
  • 总结


前言

UI和模型的一些优化。unity本身支持多种UI:IMGUI、UIElement、UGUI、NGUI、FairyGUI等

一、选择UI

一般选择使用UGUI就好,也就是unity默认使用的UI。
IMGUI:仅用于Editor扩展,或运行时Debug
UIElement:可用于发布运行时和Editor

UGUI:渲染原理:根据Hierarchy的顺序来排序,越下面渲染在越顶层。Canvas与NGUI的UIPanel类似,每个Canvas将优化合并为1个Mesh或多个SubMesh;

推荐:FairyGUI也是很好的选择,但是有学习成本(新手也能1天学会基本使用,更多的是熟悉习惯花时间)
渲染原理:没有采取Mesh合并的策略,而是基于类似于Unity的Dynamic Batching技术,对DrawCall进行优化。它在不改变显示效果的前提下,尽可能的把相同材质的物体调整到连续的RenderingOrder值上,以促使它们能够被Unity DynamicBatching优化;

二、UGUI的优化

1.Raycast Target

一个UGUI的控件不需要进行射线检测(也就是不需要鼠标等交互),则可以取消勾选Raycast Target

2.UI控件的重叠

尽量避免UI控件的重叠。如果多个UI有重叠的部分,则会稍微增加一些额外的计算和渲染的开销。虽然这部分开销通常是非常小的,但我们最好也尽量避免这种情况。

3.TextMeshPro

UI的文字使用TextMeshPro比使用Text的性能更好,还可以制作图文混排:链接: unity 图文混排 TextMeshPro
区别:中文需要,制作字体集。

二、模型优化

根据项目情况也可以和建模师商量,减少顶点数,骨骼等等。
模型导入Unity后,可以选中这个模型,在Inspector窗口设置它的属性。模型的一些优化可能会使动画出现问题

1.Model选项卡

在这里插入图片描述

Mesh Compression

在Model选项卡,启用Mesh Compression可以压缩模型,压缩程度越高,模型精度越低,但是模型也会节省一些空间。
在这里插入图片描述

Read/Write Enabled

和图片一样,如果该模型不需要用代码来读写,则可以取消勾选Read/Write Enabled。

设置Optimize Game Objects可以优化模型

选择Everything即可。
在这里插入图片描述

Normals和Blend Shape Normals

如果该模型不需要使用法线,则可以把Normals设置为None。
如果该模型不需要用混合变形法线,则可以把Blend Shape Normals设置为None。
如果该模型不需要使用切线,则可以把Tangents设置为None。
如果该模型不需要用光照UV贴图,则可以取消勾选Swap UVs和Generate Lightmap UVs
在这里插入图片描述

2.Rig选项卡

在这里插入图片描述

Animation Type

对于Rig选项卡,Animation Type如果选择Generic Rig会比Humanoid Rig性能更好,但是一般使用Humanoid Rig是为了对人型的角色进行动画重定向,所以要根据自己的情况来选择。
如果模型不需要使用动画,例如一些完全不会动的石头等物体,则可以将Animation Type选择为None。

Skin Weights

Skin Weights默认是4,对于一些不重要的动画对象,本变量可以设置为1,这样可以节省计算量。
建议勾选Optimize Bones,这样会自动剔除没有蒙皮顶点的骨骼。
勾选Optimize Game Object可以提高角色动画的性能,但是在某些情况下可能会导致角色动画出现问题,是否勾选要看动画效果而定。
如果角色模型是可以换装的,则在导入该模型后不要勾选这个选项,而可以在游戏运行时,该角色换装后,通过AnimatorUtility.OptimizeTransformHierarchy来勾选这个选项。

3.Animation选项卡

Import Animation

如果模型不需要使用动画,则可以取消勾选Import Animation。
对于Animation选项卡,设置Anim.Compression可以调整动画的压缩方式:
Off表示不压缩动画,这样动画文件可能会占用较大的空间,但是在运行时不会有任何信息损失
Keyframe Reduction表示使用关键帧算法来压缩动画,这样会显著减小动画文件的大小,同时保持相对较高的动画质量
Optimal表示会尽可能高地压缩网格,但是这样也会导致压缩时间增加。

4.Materials选项卡

如果使用Untiy的默认材质,则可以把Material Creation Mode设置为None(不推荐)。
一般使用下图:
在这里插入图片描述

5.Optimize Mesh Data

Edit——Project Settings——Player——勾选Optimize Mesh Data(勾选可能会导致动画出现问题)
这样一来,Unity会在构建的时候中对网格数据进行优化处理,以达到提高游戏性能的效果。
但是这样往往会修改网格,我们勾选之后应该要进行测试,确保没有问题,再确

总结

好记性不如烂笔头!
上一章:链接: Unity 性能优化之图片优化(八)
下一章:链接: Unity 性能优化之LOD技术(十)

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

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

相关文章

【python数据分析基础】—pandas透视表和交叉表

目录 前言一、pivot_table 透视表二、crosstab 交叉表三、实际应用 前言 透视表是excel和其他数据分析软件中一种常见的数据汇总工具。它是根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。 一、pivot_table 透视表 pivot_tabl…

【MySQL】MySQL基本知识点

目录 1.SQL分类: 2.DDL-数据库操作 3.DDL-表操作-创建 4.DDL-表操作-查询 5.DDL-表操作-数据类型 6.DDL-表操作-修改 1.SQL分类: 2.DDL-数据库操作 3.DDL-表操作-创建 注意:里面的符号全部要切换为英文状态 4.DDL-表操作-查询 5.DDL…

车路云一体化简介

车路云一体化 车路云一体化融合控制系统( System of Coordinated Control by Vehicle-Road-Cloud Integration,SCCVRCI),是利用新一代信息与通信技术, 将人、车、路、云的物理层、信息层、应用层连为一体,…

Linux网络编程(三)IO复用二 poll系统调用

二、poll系统调用 2.1、API poll系统调用和select类似&#xff0c;也是在指定时间内轮询一定数量的文件描述符&#xff0c;以测试其中是否有就绪者。 #include <poll.h>int poll(struct pollfd* fds, nfds_t nfds, int timeout);fds参数是一个pollfd结构类型的数组&am…

切实有效的提高VMWARE游戏性能-各版本通杀 vm17pro

这里的游戏性能&#xff0c;当然了&#xff0c;特别指出的是3D性能&#xff0c;毕竟现在2D也很少了。 因为平时没啥事&#xff0c;所以&#xff0c;无聊就跟朋友挂挂游戏&#xff0c;没事写点代码折腾下。所以&#xff0c;免不了跟VMWARE搭上边。走了很多的弯路&#xff0c;中…

使用动态种子的DGA:DNS流量中的意外行为

Akamai研究人员最近在域名系统&#xff08;DNS&#xff09;流量数据中观察到&#xff1a;使用动态种子的域名生成算法&#xff08;Domain Generation Algorithm&#xff0c;DGA&#xff09;的实际行为&#xff0c;与对算法进行逆向工程推测的预期行为之间存在一些差异。也就是说…

Android 系统启动流程源码分析

一、Init进程启动 是一个由内核启动的用户级进程。内核自行启动之后&#xff0c;就通过启动一个用户级程序init的方式&#xff0c;完成引导进程。 启动的代码init.c中的main函数执行过程&#xff1a;system\core\init.c中&#xff1a; 主要下面两个重要的过程&#xff1a; 1…

批量将GOID转成GO term名并添加BP,MF,CC分类信息

基因本体论&#xff08;Gene Ontology&#xff0c;GO&#xff0c;https://www.geneontology.org&#xff09;是一个广泛应用于生物信息学领域的知识库&#xff0c;它提供了一套标准化的词汇和分类体系&#xff0c;用于描述基因功能、细胞组分和生物过程。GO旨在统一科研人员对基…

无人机+垂直起降:微型共轴双旋翼无人机技术详解

微型共轴双旋翼无人机技术是一种独特的无人机设计&#xff0c;它结合了垂直起降&#xff08;VTOL&#xff09;能力和微型无人机的灵活性。这种设计允许无人机在无需跑道的情况下垂直起降&#xff0c;并具备在空中悬停和执行各种飞行动作的能力。 适用于集群控制&#xff0c;荷载…

NXP i.MX8系列平台开发讲解 - 1.1 导读前言

专栏文章目录传送门&#xff1a;返回专栏目录 文章目录 目录 1. 本专辑介绍 2. 学习本专辑作用 3.关于作者 1. 本专辑介绍 本专辑将会介绍Linux 驱动开发&#xff0c;Android BSP 驱动涉及HAL层调试&#xff0c;适用于嵌入式软件开发人员&#xff0c;和有兴趣向该方向发展…

基于单片机的无线数据传输系统设计

摘要:基于单片机的无线数据传输系统的设计,实现了温度和湿度的自动采集、无线通讯和报警功能。该系统包括了LCD1602显示电路、DHT11温湿度采集电路等,完成了基于无线数据传输的方法来实现温湿度的采集。 关键词:温湿度检测;N RF 24 L 01;单片机 0 引言 随着科技水平的提高,…

五一 大项目

Docker 中的 Nginx 服务为什么要启用 HTTPS 一安装容器 1 安装docker-20.10.17 2 安装所需的依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 添加Docker官方仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos…

前端实现导入Excel进行数据展示、导出

需求 一个 excel 文档 需要对文档里面的数据进行筛选拆分重组 由于数据量巨大 后端又抽不出来手 于是使用纯前端解决方案 解决思路 前端导入excel 把 excel 的数据解析为 json 格式 对数据进行相应操作后 重新导出为新 excel 虽笨但有效 第一步 导入excel 该方案需引…

Promise魔鬼面试题

文章目录 题目解析难点分析分析输出step1step2step3step4step5step6 参考/致谢&#xff1a;渡一袁老师 题目 Promise.resolve().then(() > {console.log(0);return Promise.resolve(4);}).then((res) > {console.log(res);});Promise.resolve().then(() > {console.l…

spark sql 与scala混合开发实现数据入mongodb

目录 概述资源解决问题效果环境配置相关包关键代码 测试测试结果 概述 在此提供 spark sql 与scala混合开发实现数据入mongodb 相关思路 将部分重复性功能进行通用化(使用SQL与Scala混合开发模式)。 相关组件 hadoop 3.3.6 spark 3.4.2 kyuubi 1.8.0 基于上术组件开发 资源 …

uniapp video 层级覆盖

层级覆盖 cover-view组件 我这里做了个判断 监听全屏时隐藏按钮 根据项目需求自行更改

2024.5.6 关于 SpringCloud 的基本认知

目录 引言 微服务框架所包含的技术栈 微服务架构演变 单体架构 分布式架构 微服务架构 微服务技术对比 认识 SpringCloud SpringBoot 版本兼容关系 服务拆分和远程调用 服务拆分注意事项 远程调用 引言 微服务是一种框架风格&#xff0c;按照业务板块来划分应用代码…

微信小程序(Taro)获取经纬度并转化为具体城市

1、获取经纬度 申请权限&#xff0c;想要使用微信小程序获取经纬度的方法是要申请该方面的权限。 获取经纬度的方法有很多选择其中一个使用就好。 我使用的是Taro.getFuzzyLocation(&#xff09; 在app.config.js中需要添加设置 requiredPrivateInfos: ["getFuzzyLocat…

群晖上部署农场管理系统farmOS

什么是 farmOS &#xff1f; farmOS 是一个基于 Web 的应用程序&#xff0c;用于农场管理、规划和记录保存。它由志愿者社区开发&#xff0c;旨在为农民、开发人员和研究人员提供一个标准平台。 需要注意的是&#xff0c;群晖内核版本太低会遇到下面的错误&#xff0c;这个 AH0…

高实时、高可靠的微内核操作系统——鸿道Intewell

近年来&#xff0c;我国不断推进工业转型升级&#xff0c;力求实现从传统工业大国向现代工业强国的跨越。想要在新一轮科技革命中“超车”&#xff0c;需要从多个维度进行深度布局和全面发力。 ——科技创新是核心驱动力 积极推动工业结构的优化和升级&#xff0c;通过发展新…