Comments (8)
这也是为了保险起见,不排除有绕过引用计数而存在的实例
from absystem.
对,我们都是异步的,不建议同步,有时会很卡。
因为是依赖树的原因两种都支持的话容易引起加载混乱,要么全都同步要么全都异步,所以我放弃了同步。
from absystem.
主要是我们这边界面跳转是同步跳转的, 然后我想把背景图片都弄成ab, 然后跳转界面后立即加载背景图片, 我顺便想请教一下 , 你们项目里对于大背景图怎么处理的呢? 现在我发现由于大背景图片不适合打图集, 不打图集又在IOS下不能用于指定压缩格式, 因为不是2的幂次方, 然后大量的背景图片会造成IOS安装后的体积会变的很大, 根本原因是, 在IOS下如果图片不是2的幂次方话, 打包后图片在Unity里显示的图片体积会变成实际安装后占用磁盘空间的量.导致明明图片才几百K, 然后安装IPA后这个图片实际安装后占用磁盘的空间就会变成好几兆. 然后思来想去只能打AB来解决这个问题了. 但我这边由于界面都是同步跳转, 如果异步加载图片会有几帧图片显示不出来.只能同步加载.我目前也在你的代码基础上加了个简单的同步, 然后ab卸载就放在指定界面生命周期内卸载了. 还有我发现如果用Unload(false), 然后当使用ab创建资源对象的游戏对象销毁了, 并且调用Resources.UnloadUnusedAssets(). 并不会卸载ab创建的资源对象. 然后来回这么创建后, 我发现ab创建的资源对象存在了多分, 然后这样就造成内存泄露了. 不好意思, 请教的问题有点多.
from absystem.
1.我们项目还没涉及到你所说的大图片的问题,所以没研究过哦,我觉得尽量从设计上避免这种情况吧?
2.如果单是只加载一个图片AB的话,你可以自己处理一下,这个不涉及依赖情况,所以加载起来简单。
3.关于泄露问题情况比较复杂吧,最根本原因肯定是哪里对这个对象还有引用存在,profile检查一下引用关系。如果觉得是ABSystem的问题,欢迎提供一个例子工程我测测~
from absystem.
1.你们项目里大背景都是九宫格拉出来的吗?我们项目由于很多画面都是靠背景图表现内容的.
2.我目前就是在那个Manager里加了个Load同步的方法, 直接返回Assetbundle, 建议你把之前的Load名字方法改为LoadAsync更直观一些~
3.这个我也看了Profiler, 里面显示是有引用, 但是那些引用对象是图片他们自己, 比如一个Sprite, 它显示的就是自己的图片名字的一个对象在引用自己.
4.关于AssetBundleInfo类里面, 如果所有引用对象都被销毁, 为何不直接UnLoad(true)呢. Unload(false)只卸载ab, 但我上面就出现了ab创建出来的资源对象, 它所附着的对象被销毁了, 但是它自己并没有被销毁. 这个我搞个demo再试下, 如果确实是, 我会发给你看下.
from absystem.
对了还有一个问题是, 如果我想从一个ab加载一个Sprite, 目前的从ab获取资源的方式mainObject是不行的, 里面由于调用LoadAsset(name), 这个方法并不能准确的返回指定类型的对象, 如果把一个图片打包成AB后想要获取上面的Sprite对象,必须用LoadAsset<T>(name), T传入Sprite才可以. 希望您可以改善一下, 我自己的做法是在代码基础上加了个public T LoadAsset<T>() where T : Object方法,对应的Require也添加了个public T Require<T>(Object user) where T : Object方法.
from absystem.
1.大背景你指的是全屏UI? 是的,我们用九宫,或者是场景3D背景
2.看过一些文章Unload(true) 不建议用的,而且会有这种情况:AB被释放,但实例要存继续存在的, 如果没有引用关系,实例也是会被回收的
3.接口的建议可以考虑加进去,谢谢~
from absystem.
嗯,Unload(true)我也是在明确对象不存在才用的, 对于那些需要继续存在的实例当然是不能这么干, 但是 看您的代码是从ab创建资源对象是会增加引用计数, 然后持有者销毁的时候会减掉引用计数, 那么意味着当引用计数为空的时候不就是从该ab实例出来的对象都被销毁了, 此时应该可以判定回收全部的吧.直接unload(true), 这样也会减少Resources.UnloadUnusedAssets()的压力.
from absystem.
Related Issues (20)
- 在Unity Editor5.6.4下,切换到Android平台,材质Shader为Unlit/Texture时,通过AB加载模型显示紫色 HOT 2
- 那个用AB设置图片Package Tag打包图集出现冗余 HOT 1
- 关于AssetBundleDataReader的疑问 HOT 1
- 真机上 scrollview 内的材质丢失 HOT 2
- 唐哥,问个问题,增量打包是否有必要? HOT 2
- 关于资源自动卸载 HOT 4
- 关于打Bundle的粒度 HOT 1
- 关于unity内置资源冗余问题 HOT 1
- 资源没有变化的情况下,打包assetsBundle文件有变化 HOT 2
- 关于mainAsset导致的卡顿问题 HOT 2
- 某些情况场景里的某些共用资源被重复打到场景里 HOT 2
- ios真机测试第一次运行报错 HOT 1
- AssetBundleInfo中的depChildren有什么作用呢? HOT 2
- 请问下,这个不能手动指定哪些资源打成一个ab包的吗?
- 服务器下载要怎么做呢?
- LoadMetaHashIfNecessary 只在非unity5的版本中执行? 这个是什么意思 HOT 2
- 编译错误
- Scripting Backend设置成IL2CPP Android平台下加载报错
- 您好,请问AB加载场景的策略是什么?
- 例子 在unity5.4 在windows编译成demo 运行的时候并不能正确加载到被打包的资源
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from absystem.