UnityEngine.Object在失去引用后用什么方法销毁或回收

1)UnityEngine.Object在失去引用后用什么方法销毁或回收

2)关于纹理采样方式对带宽的影响原理的问题

3)微信小游戏缓存catalog.json文件的方案

4)微信小游戏的帧率设置用哪个更好


这是第438篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com

UWA QQ群:793972859

Memory

Q:UnityEngine.Object在失去引用后,是一定要调用Destroy进行销毁么?不会被GC自动回收么?

A:UnityEngine.Object是一种基类,题主的问题比较大。常见的有三种情况:

  1. C#的托管堆内存在失去引用后,会在GC后被自动回收;
  2. 从AssetBundle中被加载出来的资源,需要用AssetBundle.Unload(True)这类的API定向卸载,或在失去引用后被Resources.UnloadUnusedAssets标记并卸载;
  3. 还有一种动态创建的对象,如通过new、instantiate生成的资源,则需要手动Destroy,或在失去引用后被Resources.UnloadUnusedAssets标记并卸载。

针对以上问题,有经验的朋友欢迎转至社区交流:
answer.uwa4d.com/question/68...


GPU

Q1:想问下关于纹理采样的消耗这块,有没有一些相关的经验可以分享?

从Mali的文档上看,Cache Hit的情况下是1cycle采样1纹素,Cache Miss的情况下需要100-200cycle。

那么如果触发Cache Miss,是从当前采样UV位置的附近的2*2读取到Tex Cache上,还是直接读取L1大小的数据上去。比如Adreno有1KB的L1?

A:从Onchip到L1不是固定的2*2,也不是整个L1;根据GPU型号不同,有一个固定的每次取的大小,纹理压缩率越低、单个像素信息量越大,每次能取的像素数量就会更少,Cache Miss率就更高,此时就会往更远的L1、L2去取。

Q2:那是按1维去取n个像素,还是二维去取m*m个像素?想了解下怎么样摆放数据能Cache友好些。

A:应该是m*m。一般只要开启Mipmap,交由GPU自动选择合适的层级,就能使像素的采集过渡平滑友好,Cache Miss率较低了。此外就是尽量压缩纹理格式、避免使用各向异性这种大幅增加采样次数的做法,也能有效降低带宽。

针对以上问题,有经验的朋友欢迎转至社区交流:
answer.uwa4d.com/question/68...


Memory

Q:现在我们不能缓存catalog,每次需要临时下载还挺麻烦的。APP的Addressables热更的方案就是先去线上请求catalog.hash文件,然后判断本地的catalog文件是不是旧的,旧的就删除掉本地的catalog文件,然后下载新的。但是在微信小游戏会一直请求catalog,所以我们每次进入游戏都要下载catalog文件。请问微信小游戏该如何缓存catalog.json文件呢?

A:我的方案是自定义了catalog1000、settings1000文件,加上版本号,相当于是自己改了settings文件里面的catalog URL,然后改了catalog文件名,也改了Addressables的源码,取到版本号后去读取指定的settings文件,这样settings文件也可以缓存了。

我的方式是catalog和settings都自定义成了下面这样:

然后settings文件的这一句话改成了我指定的catalog1000:

json 复制代码
"m_InternalId":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/catalog1000.bundle"

再改了个Addressables的源码,Addressables在初始化的时候会去找settings文件:

然后就是走微信小游戏自己的规则了,即本地有就读取本地,本地没有下载缓存。catalog和settings都加了版本号,也不怕settings同名或cdn缓存问题。

针对以上问题,有经验的朋友欢迎转至社区交流:
answer.uwa4d.com/question/68...


Platform

Q:微信小游戏现在都是推荐用Unity的Application.targetFrameRate了吗?现在我们用的这个WX.SetPreferredFramesPersecond,会产生什么问题吗?没Unity那个性能好?

A:帧率设置可能失效。现在微信小程序已对Application.targetFrameRate做了较好的适配。

更推荐用这个:
github.com/wechat-mini...

针对以上问题,有经验的朋友欢迎转至社区交流:
answer.uwa4d.com/question/68...

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com

UWA社区:community.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859

相关推荐
前进的李工8 小时前
飞书企业知识库设计+后端高频八股
数据库·redis·后端·mysql·性能优化·飞书·rag
祥Sir的SRE笔记16 小时前
CPU 100% 不一定是故障:压测打满、业务饱和、突变打满的判断与排查
linux·面试·性能优化·dba·sre·故障定位·性能排查
Sayai16 小时前
Elasticsearch 日志写入链路调优实战:ingest pipeline 补时间戳、时区偏移修复与按值类型路由(附 translog 实测)
大数据·运维·elasticsearch·搜索引擎·性能优化
楚识科技17 小时前
内网环境 OCR 服务搭建:私有化部署的技术实现与性能优化
性能优化·ocr
利威尔xu19 小时前
万字详解 | Go 进阶(二)GC 三色标记:STW 从 10ms 压到 40μs,1 次 Full GC 让线上 P99 抖了 3 秒
开发语言·后端·性能优化·golang·高并发
wuyk55519 小时前
模块解耦实战:用 C 语言实现面向对象编程的三个层次
stm32·单片机·嵌入式硬件·性能优化·架构
Gauss松鼠会20 小时前
GaussDB 内存相关参数及故障诊断
运维·数据库·sql·oracle·性能优化·架构·gaussdb
九蝶科技21 小时前
金蝶云星空 BOS 插件性能优化:把 N+1 查询、事件重算和长事务干掉
性能优化
程序员清风21 小时前
大文件处理与性能优化:分块读取、类型优化与向量化
性能优化
汪海游龙2 天前
流式回复结尾的那一下闪:逐帧定位 Compose 聊天列表的三处布局跳动
android·性能优化·kotlin