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技术(十)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IIoT:数据融合在工业物联网中的应用——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断发展,工业物联网(IIoT)已经逐渐渗透到各个行业,为企业的生产和管理带来了前所未有的便利。 然而,与此同时,海量的数据也为企业带来了挑战。如何将这些…

图片8位, 16位,24位,32位原理,以及如何进行补位互转

写在前面:之前一直没有这个概念,以为像素就是十六进制如 #FFFFFF,或者rgb(255,255,255) 即可实现颜色定义,理解相当肤浅,接触到一个物联网项目,写底层的童鞋让我把16位如 0*FFFF转为24位去显示在浏览器&…

如何使用SkyWalking收集分析分布式系统的追踪数据

Apache SkyWalking 是一个开源的观测性工具,用于收集、分析和展示分布式系统的追踪数据。SkyWalking 支持多种语言的追踪,包括但不限于 Java、.NET、Node.js 等。以下是使用 SkyWalking 工具实现数据采集的详细步骤: 1. 下载和安装 SkyWalkin…

MCU做死循环时,到底应该用for(;;) 还是wihile(1)

MCU做死循环时 for while stm32中老工程师用forfor while背景for版本while版本正方观点:哪有好的编译器:反方观点:这种代码过时了工程师实地测试:和编译器和优化有关 建议还是用for参考 stm32中老工程师用for /* Start scheduler …

MS2107 宏晶微 音视频采集芯片 提供开发资料

1. 基本介绍 MS2107 是一款视频和音频采集芯片,内部集成 USB2.0 控制器和数据收发模块、视频 ADC模块、音频 ADC 模块和音视频处理模块。MS2107可以将 CVBS、S-Video 和音频信号通过 USB接口传送到 PC、智能手机和平板电脑上预览或采集。MS2107 输出支持 YUV422 和 MJPEG 两种…

css: hover 划过显示/隐藏 div 样式

1. 图例: 划过用display: block;和 display: none; 显示div和隐藏div div: <div class="sectorBox"> <div v-for="(item, index) in sectorList" :key="index" class="sill"> <div class="si…

三维点云处理-聚类(下)

接着前一部分数据聚类方法的介绍&#xff0c;由于K-means和GMM方法都是基于欧式距离信息处理的&#xff0c;两者分别以圆形和椭圆形来作为数据的聚类分割方式&#xff0c;这种情况下会导致环形图和月牙图数据分割不准确&#xff0c;因此进一步的介绍一种谱聚类方法&#xff0c;…

Elastic 通过 AI 驱动的安全分析改变 SIEM 游戏

作者&#xff1a;Santosh Krishnan, Jennifer Ellard 借助由搜索 AI 提供支持的新攻击发现功能&#xff0c;优先考虑攻击&#xff0c;而不是警报。 传统的安全信息与事件管理系统&#xff08;SIEM&#xff09;在很大程度上依赖屏幕背后的人类才能取得成功。警报、仪表盘、威胁…

Python高级编程-DJango2

Python高级编程-DJango2 没有清醒的头脑&#xff0c;再快的脚步也会走歪&#xff1b;没有谨慎的步伐&#xff0c;再平的道路也会跌倒。 目录 Python高级编程-DJango2 1.显示基本网页 2.输入框的形式&#xff1a; 1&#xff09;文本输入框 2&#xff09;单选框 3&#xff…

我用 GitHub 9.8k 的 Go 语言 2D 游戏引擎写了个游戏

前言 hi&#xff0c;大家好&#xff0c;这里是白泽。今天给大家分享一个 GitHub &#x1f31f;9.8k 的 Go 语言 2D 游戏引擎。 https://github.com/hajimehoshi/ebiten 引擎的贡献者依旧在积极维护&#xff0c;是一个兼具学习 & 娱乐的项目&#xff01; 为此我也用这个…

数据结构-线性表-应用题-2.2-11

1)算法的基本设计思想&#xff1a; 分别求两个升序序列的中位数a,b 若ab&#xff0c;则a或b即为所求中位数 若a<b&#xff0c;则舍弃A中较小的一半&#xff08;中位数偏小&#xff0c;往后面找&#xff09;&#xff0c;同时舍弃序列B中较大的一半&#xff0c;两次舍弃长度…

meshlab: pymeshlab保存物体的横截面(compute planar section)

一、关于环境 请参考&#xff1a;pymeshlab遍历文件夹中模型、缩放并导出指定格式-CSDN博客 二、关于代码 本文所给出代码仅为参考&#xff0c;禁止转载和引用&#xff0c;仅供个人学习。 # pymeshlab需要导入&#xff0c;其一般被命名为ml import pymeshlab as ml# 本案例所…

C++ | Leetcode C++题解之第74题搜索二维矩阵

题目&#xff1a; 题解&#xff1a; class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m matrix.size(), n matrix[0].size();int low 0, high m * n - 1;while (low < high) {int mid (high - low) / 2 l…

YOLOv8的训练、验证、预测及导出[目标检测实践篇]

这一部分内容主要介绍如何使用YOLOv8训练自己的数据集&#xff0c;并进行验证、预测及导出&#xff0c;采用代码和指令的两种方式&#xff0c;参考自官方文档&#xff1a;Detect - Ultralytics YOLOv8 Docs。实践篇不需要关注原理&#xff0c;只需要把流程跑通就行&#xff0c;…

白色或类白色的粉末/固体,DOTA-Ala-Ala-Tyr-COOH,是一种具有特定氨基酸序列的多肽,具有良好的稳定性和溶解性

一、试剂信息 英文名&#xff1a;DOTA-Ala-Ala-Tyr-COOH&#xff0c;DOTA-AAY-OHCAS号&#xff1a;N/A分子式&#xff1a;C31H47N7O12分子量&#xff1a;709.74结构式&#xff1a; 纯度标准&#xff1a;≥95%包装规格&#xff1a;1g&#xff0c;5g&#xff0c;10g&#xff08…

Selenium——获取元素和操纵元素的方法

1、获取元素的方法 1、通过id获取 element wd.find_element(By.ID,"id")2、通过classname获取 elements wd.find_elements_by_class_name("plant") for element in elements:print(element.text)3、通过tagname获取元素 elements wd.find_elements_…

SpringBoot2 仿B站高性能前端+后端项目(wanjie)

SpringBoot2 仿B站高性能前端后端项目(完结) Spring Boot 2 仿B站高性能前端后端项目&#xff1a;打造高效、稳定、可扩展的应用 在当今的互联网时期&#xff0c;网站的性能、稳定性和可扩展性成为了权衡一个项目胜利与否的关键要素。本文将引见如何运用 Spring Boot 2 构建一…

AIGC-3D数字人技术:高效助推各行业数字化水平升级

从“互联网”到“人工智能”&#xff0c;数字员工作为一种全新的交互形式&#xff0c;对企业有着重要的作用&#xff0c;企业、品牌通过数字人的AI语音交互、AI播报等核心功能&#xff0c;可以有效推动企业提升数字水平。 作为3D、AI虚拟数字人技术服务商及方案提供商&#xff…

鸿蒙内核源码分析(工作模式篇) | CPU的七种工作模式

本篇说清楚CPU的工作模式 工作模式(Working mode) 也叫操作模式&#xff08;Operating mode&#xff09;又叫处理器模式&#xff08;Processor mode&#xff09;&#xff0c;是 CPU 运行的重要参数&#xff0c;决定着处理器的工作方式&#xff0c;比如如何裁决特权级别和报告异…

【IP:Internet Protocol,子网(Subnets),IPv6:动机,层次编址:路由聚集(rout aggregation)】

文章目录 IP&#xff1a;Internet Protocol互联网的的网络层IP分片和重组&#xff08;Fragmentation & Reassembly&#xff09;IP编址&#xff1a;引论子网&#xff08;Subnets&#xff09;特殊IP地址IP 编址: CIDR子网掩码&#xff08;Subnet mask&#xff09;转发表和转发…