NGUI Label 自定义材质球无效

1)NGUI Label 自定义材质球无效

2)代码保存预制体出现图片丢失的问题

3)升级Unity版本,粒子系统触发的闪退问题

4)场景打包AssetBundle过大


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

UWA 问答社区:answer.uwa4d.com

UWA QQ群2:793972859(原群已满员)

NGUI

Q:想在NGUI下做一个字体溶解Shader,自定义的Shader材质球给Label不起作用,有没有大佬了解这块内容?


A:猜测题主是要在编辑器里面的材质球对象上调整_Threshold的数值,但在Game窗口发现文本没有发生变化。

本质原因是NGUI在对Label进行渲染的时候使用的并不是编辑器里面赋值的材质球,而是在NGUI进行合并DrawCall后动态创建的Material,所以我们需要对这个材质球进行材质球属性设置。

这里可以通过脚本来给实际渲染Label的材质球调整属性达到效果。以下分别是Threshold为0和Threshold为0.4的效果。

PS:这样处理的坏处是,和这个Label在同一个DrawCall的Label都会受到影响,所以需要将这些效果的Label的Depth做特殊处理,和其它的Label不放在同一个DrawCall中。

另外在NGUI的UI DrawCall脚本中,可以打开SHOW_HIDDEN_OBJECTS,这样在编辑器里面是可以看到生成具体的DrawCall对象,也就可以看到它们的材质球属性变化。

从下图可以看到具体的DrawCall,它的材质球名字会在前面加[NGUI]的字样,和编辑器里不是同一个材质球。

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

Script

Q:我在Unity 2021.3.x上想根据配置动态生成预制体。现在遇到的问题是,可以把图片动态读取上去,然后保存预制体了以后,图片就丢失了,应该是需要修改.prefab里的值 。

我使用SerializedObject模块.objectReferenceValue去修改m_Sprite不会生效,它是引用类型的,而值类型的都是可以修改的。有大佬知道怎么修改嘛?

A:用下面的代码,是可以在编辑器里改的,不太确定楼主是不是想要在编辑器里操作,还是在Runtime下操作,理论上Runtime时是没有预制体的概念的。在编辑器里面,选中预制体,然后点击Update Prefab Asset按钮即可。

预制体很简单:

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

ParticleSystem

Q:我们升级了版本到2018.4.36f1,但特效是5.6做的,重新激活特效属性后预制件发生了很多的改变。所以大概原因是高版本不兼容低版本的特效。

捕捉crash.dmp反馈异常“该线程尝试读写某个虚拟地址,而它对该地址不具有相应的访问权限”。没有其余的堆栈信息。

已知是特效子物体的某一个粒子导致了闪退,但不知其根本原因是粒子的哪一部分导致。

已知该闪退粒子使用了Emission,Shape,Limit Velocity over Lifetime,Color over Lifetime,Size over lifetime和Renderer。

Shader是共用的,所以我就没有怀疑Shader。

用Demo复现的方法,逐一排查发现只要重新激活Limit Velocity over Lifetime,特效就不会卡死。不能说重新激活,隐藏该属性打包->播特效Win端不卡死->重新激活该属性->播特效Win端不卡死。重新将该预制件回滚,打包->播特效Win端卡死。

A1:以前遇到过这两种粒子系统导致的闪退:

1. 粒子Renderer的Mesh的RW没勾选,导致闪退;

2. 粒子Renderer的Mesh没有清理干净,也可能会导致闪退,比如原来粒子Renderer的Rendermode为Mesh,并设置了自定义的Mesh,然后美术修改Rendermode为billBoard,这时候原Mesh的引用关系还在,某个挺早的Unity版本可能会导致闪退。

如果不是这两个问题,那就要用Demo逐一排查。

感谢范世青@UWA问答社区提供了回答

A2:升级之后,所有Prefab用AssetDatabase.ForceReserializeAssets重新序列化一下。

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

AssetBundle

Q:有一个场景,里面有很多物件设置为Static,Unity在打场景AssetBundle的时候会自动将各个物件的Mesh合并成一个大的,导致该场景的Assetbundle(只包含.scene文件)达到10多MB,大家有什么解决方案吗?

A1:首先应该知道为什么场景这么大,有没有优化空间,可以用AssetStudioGUI看下Assetbundle里的资源,把能精简的精简掉。

如果确实无法精简,包体还是太大,可以把场景关联的资源提取出来,动态加载入场景,场景过大容易产生加载卡顿,动态加载可以自己控制加载吞吐量,在优化上也比较好把控。这也是最建议的一种方式。

感谢廖武兴@UWA问答社区提供了回答

A2:可以关掉静态合批,而用手动静态合批,耗时不长,一个比较复杂的场景700ms,普通场景正常200ms左右。

只不过在合并的时候会有一个内存峰值需要注意,还有手动Mesh的RW需要开启:

StaticBatchingUtility.Combine(item.GoList, _inst.gameObject);

mesh.UploadMeshData(true);

Resources.UnloadUnusedAssets();

感谢范世青@UWA问答社区提供了回答

A3:对于一个场景来说,纯Mesh应该到不了10多MB,这个里面估计应该包含了所有引用到的贴图,可以通过调整对应平台的贴图压缩格式来进行简化。

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

A4:如果用了GPU Instancing或者SRP Batching,就没有必要设置为Static Batching。

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

封面图来源于网络


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

官网:www.uwa4d.com

官方技术博客:blog.uwa4d.com

官方问答社区:answer.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859(原群已满员)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,270评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,489评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,630评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,906评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,928评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,718评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,442评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,345评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,802评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,984评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,117评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,810评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,462评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,011评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,139评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,377评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,060评论 2 355

推荐阅读更多精彩内容