1)Wwise的内存问题
​2)关于Planar Shadow的疑问
3)PPS的LDR纹理冗余
4)游戏第一次冷启动耗时长
5)Lua解析指令的虚拟机会占用内存吗


这是第268篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Audio

Q:关于Wwise的内存问题:
1. Wwise加载一个bank,内存增长主要在哪?在profiler上主要体现在哪个参数?
2. 加载bank之后,开始播放event,那么这个event声音是否有缓存?播放是否卡顿?

A:这个问题取决于你所使用的版本,以及你为资源设定的读取方式,还有你为资源采取的编解码。

版本方面自2019.2开始Wwise采取了动态内存管理,profiler显示的是不同用途的内存占用数据,而在这个大版本之前是需要设置固定大小的初始内存池的。

优化内存分配:
https://www.audiokinetic.com/zh/library/edge/?source=SDK&id=goingfurther_optimizingmempools.html

优化内存池:
优化内存池

你可以比较一下2019.1之后和2019.1的内存管理文档。

你的资源采取读入内存的方式读取,就会进入内存,如果是stream流读取那就会占用io,这些都可以在Wwise的profiler里看,并不是给你隐藏起来了。

https://www.audiokinetic.com/zh/courses/wwise101/?source=wwise101&id=streaming

卡顿取决于你是从内存读取还是流播放,两者可能都会受编解码的影响。通常如果是触发频率高、追求快速响应可以用PCM或者ADPCM来播放,然后Vorbis可能会因为CPU处理时间产生延迟。如果是流播放,则可以通过启用Zero Latency特性,增加prefetch来降低延迟,但这个方法主要是用来处理播放长文件时的延迟。太短的文件如果prefetch太长可能还导致其他报错,短的就通过编解码和采样率来做空间时间平衡就可以了,音质别太差就行。

感谢Icarus@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案


Addressable

Q:目前模型用到了Planar Shadow平面阴影,但是由于我们的模型是要投放到UI上,需要把阴影一起拍下来。但又不能把接收阴影的地板拍下来,求教如何让接收平面阴影的plane只显示阴影,其他地方为透明呢 ?
(相关Shader文件可戳原问答查看。)

A1:你并没有理解Planar Shadow的原理,它的阴影本质就是一个Mesh,不需要接收物体,直接删掉地板即可。

如果你的项目没显示出来阴影,那应该是其他方面的原因,跟地板无关。

感谢Jee@UWA问答社区提供了回答

A2:Shader中的_WorldPos表示模型的世界坐标、WorldPos表示ShadowPos吗?如果是这样,这里写的似乎有些问题。

可以参考下这个URP Planar Shadow: 【Unity Shader】平面阴影(Planar Shadow) - 知乎

Planar Shadow的实现一般就是在另一个Pass把顶点投到一个“平面”再画一遍,所以应该不会出现题主所描述的问题。

感谢羽飞@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案


Resources

Q:开了PPS之后纹理出现了冗余?LDR之类的资源,这些应该是PPS自己的资源。我们把PPS的资源都打到了一个包里,但还是有冗余。

A:以下是APK解压后的资源。

通常是因为被场景(此场景没有打包AssetBundle)引用和从AssetBundle加载导致的。上图中的LDR开头的纹理是用来做随机用的noise图。在URP中,通常是被RenderPipelineAsset中引用的PostProcessData引用导致的。

当GraphicsSettings中设置了RenderPipelineAsset,那么打包APK的时候,这个PostProcessData.asset是最终被打包进globalmanagers.assets中,没有打包进AssetBundle中的场景如果也引用了RenderPipelineAsset,最终引用的是globalmanagers.assets的RenderPipelineAsset实例,这样是不会冗余的。

但是如果在AssetBundle中也有打包RenderPipelineAsset,比如通过AssetBundle来动态更改RenderPipelineAsset,那么就会产生多份LDR_LLL这样的纹理了。

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案


Loading

Q:游戏第一次冷启动的耗时比较长,想分析一下具体的消耗在哪里?但是UWA的测试报告的数据是从进入游戏后开始的,不知道怎样才可以进行测试。

A1:大致归为3点:

  1. Resource文件夹下的文件建立索引,可以想办法改用AssetBundle;
  2. 预Shader解析,这个为了之后的流程性建议还是先预加载了,当然也可以用一些其他操作陆陆续续加载;
  3. 加载的第一个scene比较大,可以考虑搞个空的scene先加载上来,异步加载真正的第一个scene。

感谢萧小俊@UWA问答社区提供了回答

A2:可以看一下这个问答里的思路:游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案

感谢OCEAN@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案


Memory

Q:Lua解析指令的虚拟机会不会占用一部分内存?

A:几K还是有的,但应该很小的,主要还是对象占用的。虚拟机占用的内存主要是堆栈的空间,虚拟机还是得解释代码,执行API之类的,还是要点空间的,但应该是很少的。

感谢OCEAN@UWA问答社区提供了回答,欢迎大家转至社区交流:
游戏第一次冷启动耗时长 -- UWA问答:帮助开发者找到更好的答案

20210918
更多精彩问题等你回答~

  1. Vulkan API的性能及兼容性
  2. Unity TMP字体方案如何选择
  3. 如何实现AAB包的增量更新

封面图来源于:URP Iridescence Example
URP中的虹彩着色器示例。


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)

Wwise的内存问题相关推荐

  1. 用 Wwise 和 Unity 制作 DLC 使用 Wwise 文件包(File Package)

    用 Wwise 和 Unity 制作 DLC 使用 Wwise 文件包(File Package) https://www.audiokinetic.com/zh/library/edge/?sour ...

  2. Unity移动端游戏性能优化简谱之 常见游戏内存控制

    <Unity移动端游戏性能优化简谱>从Unity移动端游戏优化的一些基础讨论出发,例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题,并展示了如何使用UWA的性能 ...

  3. Unity内存与资源管理

    内存管理是程序开发的核心问题,而资源的使用又与内存息息相关,因此本章想要梳理整个开发流程中Unity对于内存与资源的管理方式. 一.内存基础 1.1 基础概念 内存是暂时存放CPU中的运算数据,与硬盘 ...

  4. Wwise 快速上手指南: 程序员篇(v2016.1)

    Wwise 快速上手指南: 程序员篇(v2016.1) https://gameinstitute.qq.com/community/detail/107700 Wwise 快速上手指南: 程序员篇 ...

  5. 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二

    AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound  ...

  6. 使用Unity5开发手游,使用FMOD或wwise音频插件而不是自带的声音系统有哪些好处?

    使用Unity5开发手游,使用FMOD或wwise音频插件而不是自带的声音系统有哪些好处? https://www.zhihu.com/question/61882604 碰巧对Unity里的声音脚本 ...

  7. 音频中间件的7大功能 您无法抗拒的wwise好课程

    原文标题:Dear Devs, 7 Reasons why your Game may need Audio Middleware 开发者们,您需要音频中间件的7个理由 市场上有几种音频中间件程序. ...

  8. 声音引擎Wwise与Criware的区别

    1)声音引擎Wwise与Criware的区别 ​2)Unity加载场景闪退问题 3)Animation Transition方案 4)高通GPU Adreno650手机的纹理显示异常问题 5)Live ...

  9. Wwise音频解决方案概述

    Wwise编辑器 音频设计师在Wwise编辑器(具体使用请参考:Wwise Help)中完成声音的集成和设置,并通过UE4和unity的Wwise插件,将制作好地资源导入到游戏编辑器中 Wwise编辑 ...

最新文章

  1. python过滤敏感词
  2. 图中长度为k的路径的计数
  3. C++设计模式--适配器模式
  4. boost::statechart模块实现终止测试
  5. PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknown to”的解决办法
  6. 解析word template返回使用的webservice WSDL和Operation
  7. 事物Spring boot @Transactional
  8. 独家下载 |《领军行业大数据及AI实战》解锁九大行业领军企业云上大数据及AI实战
  9. php yii开发工具,开源PHP开发框架Yii教程
  10. ios 数字键盘左下角添加按钮_ios数字键盘添加完成按钮
  11. HTML相对路径相对目录--上级目录及下级目录的写法
  12. Linus 怒批 GitHub:制造了毫无用处的垃圾合并信息!
  13. 【Python】日志关键字分析工具
  14. Fractions to Decimals_usaco2.4.5_暴力
  15. 网络准入认证系统方案评估
  16. 【踩坑记录】priority_queue 第三个模板参数和sort 的第三个形参的区别;仿函数、自定义排序函数、lambda 函数分别传入;传入类型和对象的区别;
  17. RT-Thread源码-__rt_ffs函数剖析
  18. MOSFET的误启动发生机制-3
  19. wiki服务器网页地址,搭建个人wiki站点
  20. 2013年全球重要黑客大会一览

热门文章

  1. python为什么会抹去零_顾客要求抹去零头怎么办
  2. 异步编程与响应式框架
  3. 开发者福利丨容联云通讯、LeanCloud 官方集成云账户红包SDK
  4. FLP、CAP和BASE
  5. Linux系统编程——多任务的同步与互斥
  6. Gitee新建仓库及上传代码
  7. 北大肖甄《区块链技术与应用》
  8. Tesseract与tess4j验证码识别
  9. JDBC Connection Fails With SEVERE: IO Error: Connection Reset By Peer解决方法
  10. 机器学习算法_明确解释:4种机器学习算法