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://xiahunao.cn/news/3017875.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

为什么你的企业需要微信小程序?制作微信小程序有什么好处?

什么是小程序? WeChat小程序作为更大的WeChat生态系统中的子应用程序。它们就像更小、更基本的应用程序,在更大的应用程序(WeChat)中运行。这些程序为用户提供了额外的高级功能,以便在使用WeChat服务时加以利用。根据…

(三十六)第 6 章 树和二叉树(二叉树的顺序存储表示实现)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ?…

在Ubuntu上安装docker

一、安装docker 更新系统包列表&#xff1a; sudo apt-get update安装必要的依赖软件包&#xff0c;使apt可以通过HTTPS使用repository。 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加Docker的阿里云GPG密钥&#xff1a;…

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

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

Layer创建流程

在SurfaceFlinger中&#xff0c;Layer表示一个显示图层&#xff0c;是surfaceflinger合成过程中最重要的基本单元&#xff0c;它提供了一系列属性定义了如何参与合成并与其他Layer交互&#xff0c;包括&#xff1a; 位置&#xff1a;定义Layer出现在屏幕上的位置&#xff0c;包…

【busybox记录】【shell指令】paste

目录 内容来源&#xff1a; 【GUN】【paste】指令介绍 【busybox】【paste】指令介绍 【linux】【paste】指令介绍 使用示例&#xff1a; 合并文件的行 - 默认输出&#xff08;默认是行合并&#xff09; 合并文件的行 - 一个文件占一行 合并文件的行 - 使用指定的间隔符…

Matlab图像中加入脉冲噪声、高斯噪声并用均值滤波、中值滤波进行滤波处理

一、脉冲噪声和高斯噪声简介 脉冲噪声和高斯噪声是两种常见的信号干扰类型&#xff0c;它们的特性和影响各不相同&#xff1a; 脉冲噪声&#xff08;Impulse Noise&#xff09;&#xff1a; 在图像中&#xff0c;脉冲噪声表现为随机出现的亮点或暗点&#xff0c;这些噪声点通常…

2024年第九届数维杯数学建模B题思路分享

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

shell脚本编写-测试同一网段内主机是否在线

除了可以使用ansible自动化运维工具判断主机是否在线以外&#xff0c;还可以通过编写Shell脚本来实现。 1、编写脚本 #! /bin/bash #测试192.168.81.0/24网段中哪些主机处于开机状态&#xff0c;哪些主机处于关机状态# #方法一&#xff1a;使用for循环判断 # for i in {1..25…

全国各地区劳动力流动、外出务工劳动力数、总劳动力数(2006-2021年)

01、数据简介 劳动力流动是指劳动力在不同地区、行业、职业、岗位之间的流动。它是劳动力市场运行的重要特征&#xff0c;也是实现劳动力资源优化配置的必要条件。劳动力流动可以促进劳动力资源的优化配置&#xff0c;提高劳动生产率和经济效益。据名称&#xff1a;全国各地区…

【busybox记录】【shell指令】cut

目录 内容来源&#xff1a; 【GUN】【cut】指令介绍 【busybox】【cut】指令介绍 【linux】【cut】指令介绍 使用示例&#xff1a; 关于参数的特殊说明&#xff1a; 打印行中选定部分 - 输出每行的第n-m个字节 打印行中选定部分 - 输出每行的第n-m个字符 打印行中选定…

关于c++ 中 string s { ‘a‘ , ‘b‘ , ‘c‘ , ‘d‘ } 的方式的构造过程

&#xff08;1&#xff09;这样的构造方式不常见&#xff0c;但也确实 STL 库提供了这样的构造函数 &#xff08;2&#xff09;以反汇编分析这行代码 &#xff08;3&#xff09;谢谢阅读

【优选算法】—Leetcode—11—— 盛最多水的容器

1.题目 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#…

Unity 性能优化之LOD技术(十)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 LOD技术效果一、LOD技术是什么&#xff1f;二、LODGroup组件介绍三、LODGroup组件使用步骤添加组件添加模型 四、Project Settings中与LOD组件相关参数总结 L…

爱普生MCU系列语音芯片S1C31D41

随着科技的发展和产品的集成化&#xff0c;语音芯片已经逐渐替代了多种语音设备应用在各场合。语音芯片主要特性是功耗低&#xff0c;抗干扰能力强&#xff0c;外围器件少&#xff0c;控制简单&#xff0c;语音保存时间久(某些语音芯片可以保存内容100年)&#xff0c;掉电不丢失…

【CTF Web】攻防世界 GFSJ0478 cookie Writeup(HTTP协议+信息收集+Cookie)

cookie X老师告诉小宁他在cookie里放了些东西&#xff0c;小宁疑惑地想&#xff1a;‘这是夹心饼干的意思吗&#xff1f;’ 解法 按 F12&#xff0c;点击网络。 刷新页面。查看请求头中的 Cookie。 look-herecookie.php访问&#xff1a; http://61.147.171.105:53668/cookie.…

python网络爬虫学习——编写一个网络爬虫

参考资料&#xff1a;用Python写网络爬虫&#xff08;第2版&#xff09; 1、编写一个函数 &#xff08;1&#xff09;用于下载网页&#xff0c;且当下载网页发生错误时能及时报错。 # 导入库 import urllib.request from urllib.error import URLError,HTTPError,ContentTooS…

google地图js,添加标记,以及infowindow信息弹窗

&#xff08;谷歌地图版本V3&#xff09; var contentString "<div classdevinfo><P>设备ID: BJ-20240507</p> <P>设备状态: 正常</p> <P>通讯信号: 89% </p> <P>设备位置: 中国</p> <P>剂量率: 988</p&…

Go语言系统学习笔记(一):基础篇

1. 写在前面 公司的新业务开发需要用到go语言&#xff0c;虽然之前没接触过这门语言&#xff0c;但在大模型的帮助下&#xff0c;边看项目边写代码也能进行go的项目开发&#xff0c;不过&#xff0c;写了一段时间代码之后&#xff0c;总感觉对go语言本身&#xff0c;我的知识体…

项目经理【过程】概念

系列文章目录 【引论一】项目管理的意义 【引论二】项目管理的逻辑 【环境】概述 【环境】原则 【环境】任务 【环境】绩效 【人】概述 【人】原则 【人】任务 【人】绩效 【过程】概念 一、过程是什么 1.1 项目管理五大过程组 1.2 五大过程组之间的相互作用 1.3 项目阶段VS过…