最顶级的Unity团队都在使用的技巧!!!

作为该系列的第二篇文章,今天将给大家分享一下,Unity最资深的团队是如何设置物理、UI和音频的。希望可以帮助大家最大限度的使用Unity引擎。

第一篇给大家介绍了如何提高资源、项目配置和图形的性能,感兴趣的朋友千万不要错过了。

文章链接如下:

顶级工程师教你移动端游戏性能优化!Unity官方教程!

一、物理

在移动设备上,Unity内置的物理系统比较吃性能。下面的一些技巧可以帮助你优化在移动设备上的表现能力。

1、优化设置

在PlayerSettings中,选中PCM(prebake collision meshes)。同时编辑Physics设置,简化Layer Collision Matrix。

图片

启用 Prebake Collision Meshes

2、启用Reuse Collision Callbacks

图片

修改物理项目设置以进一步提高性能。

同时,需注意Profiler中的物理模块性能是否有问题。

3、简化碰撞体

可以使用原始碰撞体或者是网格碰撞体来替代更为复杂的网络碰撞体。

图片

使用原始或简化网格来表示碰撞体。

4、使用物理方法移动刚体

使用MovePosition或者AddForce来移动Rigidbody对象。如果直接转化组件可能会导致重新计算物理时间,特别是在复杂的场景中,会吃更多的计算机性能。

5、修改固定的时间间隔

因为在Project Settings中默认的Fixed Timestep是50hz(0.02)。这时候可以根据目标的帧率进行改动(比如,把60FPS设置0.06)。

如果Unity每帧都要多次使用Fixed Update,很可能会拉高你的CPU频率,从而造成一些性能问题。

这时候可以对帧率下降时的物理计算和FixedUpdate事件所使用的时间进行适当限制,减少计算机性能波动时的帧率影响。

图片

6、通过Physics Debugger实现可视化

使用Physics Debug窗口帮助故障检查有问题的碰撞体或者其他情况。

图片

二、用户UI界面

UGUI想必大家都不陌生,一般来说性能出问题,第一个就是查看它。所以,在我们日常使用的时候,一定要注意以下因素。

1、区分画布

根据UI元素的更新频率,区分这些元素。把静态的UI元素单独保留,将同时更新的动态元素保留在字画布上。一定要确保每个画布中的UI元素都有一样的材质。纹理和Z值。

2、禁用Raycast Target

在不需要使用Raycast Target的UI文本或者图像上禁用该功能。

图片

禁用 Raycast Target。

3、避免大量使用重叠元素

对大量的UI元素(如卡牌游戏中堆叠的卡牌)分层会造成过度绘制。自定义代码在运行时将分层元素合并到更少的元素和批次中。

4、使用多种分辨率和宽高比

现在移动手机的分辨率和屏幕大小各不相同,这时候可以创建不同的UI版本,按设备提供最佳体验。

设备模拟器:https://docs.unity3d.com/Manual/com.unity.device-simulator.html

图片

使用设备模拟器预览各种屏幕格式。

5、使用全屏 UI 时,隐藏其他内容

如果发暂停屏幕或者启动屏幕的时发现其他场景被遮住了,这时候可以禁用摄像机对3D场景的渲染。同时,禁用隐藏在顶层画布之后的所有背景画布元素。这时候可以考虑在全屏UI中降低Application.targetFrameRate。

6、音频

通常情况下音频不会造成性能瓶颈,但是也可以通过优化节省内存。

7、尽量使用单声道声音剪辑

如果要使用3D音频,可以启用Force To Mono,或者用单声道创作声音

8、压缩剪辑并降低压缩比特率

对大部分的声音使用Vorbis,对常用的短音(如枪声、脚步声)使用ADPCM。移动设备音效上限是22050Hz,降低设置一般来说影响很小。

图片

9、从内存中卸载静音的音频源 (AudioSources)

当使用静音时,直接取消AudioSource组件,直接从内存中卸载。

以上所有教程均来自Unity官方,如有兴趣了解可以去Unity中文官网查看。

 ·END·

扫描二维码

⬇️

添加助教老师

⬇️

免费领取游戏策划4天训练营!

⬇️

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

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

相关文章

关于playbook中when条件过滤报The conditional check ‘result|failed‘ failed的问题

问题现象 在使用plabook中的when做过滤脚本如下: --- - hosts: realserversremote_user: roottasks:- name: Check if httpd service is runningcommand: systemctl status httpdregister: resultignore_errors: True- name: Handle failed service checkdebug:ms…

【运维】本地部署Gemma模型(图文)

工具简介 我们需要使用到两个工具,一个是Ollama,另一个是open-webui。 Ollama Ollama 是一个开源的大语言平台,基于 Transformers 和 PyTorch 架构,基于问答交互方式,提供大语言模型常用的功能,如代码生…

js 【详解】异步

为什么需要使用异步? 减少等待时间:异步编程允许程序在等待某些操作(如网络请求或文件读取)完成时继续执行其他任务,而不是空等,这样可以显著减少等待时间。提高响应速度:由于JavaScript是单线程…

【Web】浅聊Java反序列化之C3P0——URLClassLoader利用

目录 前言 C3P0介绍 回归本源——序列化的条件 利用链 利用链分析 入口——PoolBackedDataSourceBase#readObject 拨云见日——PoolBackedDataSourceBase#writeObject 综合分析 EXP 前言 这条链最让我眼前一亮的就是对Serializable接口的有无进行了一个玩&#xff0c…

Mybatis-plus连接多数据源操作(SQLServer、MySQL数据库)

Mybatis-plus连接多数据源操作&#xff08;SQLServer、MySQL数据库&#xff09; 一、依赖二、yml配置文件三、业务类四、测试 一、依赖 <!--mybatis多数据源--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spri…

采用 Amazon DocumentDB 和 Amazon Bedrock 上的 Claude 3 构建游戏行业产品推荐

前言 大语言模型&#xff08;LLM&#xff09;自面世以来即展示了其创新能力&#xff0c;但 LLM 面临着幻觉等挑战。如何通过整合外部数据库的知识&#xff0c;检索增强生成&#xff08;RAG&#xff09;已成为通用和可行的解决方案。这提高了模型的准确性和可信度&#xff0c;特…

Autosar教程-Mcal教程-GPT配置教程

3.3GPT配置、生成 3.3.1 GPT配置所需要的元素 GPT实际上就是硬件定时器,需要配置的元素有: 1)定时器时钟:定时器要工作需要使能它的时钟源 2)定时器分步:时钟源进到定时器后可以通过分频后再给到定时器 定时器模块选择:MCU有多个定时器模块,需要决定使用哪个定时器模块作…

21-Java观察者模式 ( Observer Pattern )

Java备忘录模式 摘要实现范例 观察者模式 ( Observer Pattern ) 常用于对象间存在一对多关系时&#xff0c;比如&#xff0c;当一个对象被修改时&#xff0c;需要自动通知它的依赖对象 观察者模式属于行为型模式 摘要 1. 意图 定义对象间的一种一对多的依赖关系&#xff…

给 spyter/all-spark-notebook 添加scala支持

spyter/all-spark-notebook默认没有安装scala notebook&#xff0c;需要手动添加。 你可以创建一个新的 Dockerfile&#xff0c;在其中添加你需要的配置和组件。以下是一个简单的例子&#xff1a; FROM jupyter/all-spark-notebook:x86_64-ubuntu-22.04 #冒号后可以是latest&a…

【漏洞复现】锐捷网络NBR700G 信息泄露

0x01 产品简介 锐捷网络NBR700G路由器是锐捷网络股份有限公司的一款无线路由设备。 0x02 漏洞概述 锐捷网络NBR700G路由器存在信息漏洞。未授权的攻击者可以通过该漏洞获取敏感信息。 0x03 测绘语句 fofa&#xff1a;body"系统负荷过高&#xff0c;导致网络拥塞&…

Mint_21.3 drawing-area和goocanvas的FB笔记(六)

FreeBASIC gfx 基本 graphics 绘图 一、旧故事 DOS时代PC技术将各类硬插卡限制在 640K到1MB的空间范围内&#xff0c;BIOS负责在相关位置写读测试卡的存在&#xff0c;那时期的Color Video在0xB800&#xff0c;Monochrome Video在0xB000&#xff0c;这是显卡的内存地址&#…

iOS17.4获取UDID安装mobileconfig描述文件失败 提示“安全延迟进行中”问题 | 失窃设备保护

iOS17.4这两天已经正式发布&#xff0c; 在iOS 17.4版本中新增了一个名为"失窃设备保护"的功能&#xff0c;并提供了一个"需要安全延迟"的选项。 iOS17.4获取UDID安装mobileconfig描述文件失败 提示“安全延迟进行中”问题 | 失窃设备保护 当用户选择启用…

美洲狮优化算法(Puma Optimizar Algorithm ,POA)求解机器人栅格地图最短路径规划(提供MATLAB代码)

一、美洲狮优化算法 美洲狮优化算法&#xff08;Puma Optimizar Algorithm &#xff0c;POA&#xff09;由Benyamin Abdollahzadeh等人于2024年提出&#xff0c;其灵感来自美洲狮的智慧和生活。在该算法中&#xff0c;在探索和开发的每个阶段都提出了独特而强大的机制&#xf…

【LeetCode: 212. 单词搜索 II - dfs】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

华为OD机试C卷“跳步-数组”Java解答

描述 示例 算法思路1 不断移动数组将元素删去&#xff08;并未彻底删除&#xff0c;而是将数字元素前移实现“伪删除”&#xff09;这样删除元素的位置就呈现一定规律&#xff0c;详细见下图&#xff08;潦草的画&#xff09; 答案1 import java.util.*;public class Main {…

【MySql学习之路】window环境下MySql安装和安装过程中出现的问题

environment:windows software:mysql 本文主要分享mysql关系型数据库在干净的环境下,第一次安装以及在安装过程中出现的常见问题和解决方法。目前官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的。很多人下了zip格式的解压发现没有setup.exe,面对一堆文件无从…

最全NVIDIA Jetson开发板参数配置和购买指南

NVIDIA开发的GPU不仅在电脑显卡领域占据大量份额&#xff0c;在嵌入式NVIDIA的Jeston系列开发板也近乎是领先的存在&#xff0c;特别是NVIDIA Jeston系列开发板在算力和成本的平衡上都要优于其他厂家&#xff0c;性价比很高&#xff0c;设备体积小。本博文旨在给采购NVIDIA Jes…

【LeetCode每日一题】299. 猜数字游戏

文章目录 [299. 猜数字游戏](https://leetcode.cn/problems/bulls-and-cows/)思路&#xff1a;代码&#xff1a; 299. 猜数字游戏 思路&#xff1a; 遍历两个字符串 secret 和 guess&#xff0c;若字符既在相同位置上又相等&#xff0c;则位置和数字都正确&#xff0c;对应的 …

宝塔一键迁移报错创建失败问题完美解决

很多站长朋友在使用宝塔面板迁移的时候总是出错&#xff0c;如图&#xff1a; 遇到这样的问题不要慌&#xff0c;我们已经完美处理&#xff0c;详细解决教程&#xff1a;宝塔一键迁移报错问题完美解决教程

微信小程序跳转到其他小程序

有两种方式&#xff0c;如下&#xff1a; 一、appid跳转 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//不配的话默认是首页//develop开发版&#xff1b;trial体验版&#xff1b;release正式版envVersion: release, success(res) {// 打开成功…