Q1:我们用的是Unity 5.5.2,下图是红米2上测试的加载8个特效资源,峰值是46MB,然后就下落到22.6MB,这个内存波动是什么引起的,是因为Rendering Batches吗?

按照题主提供的例子,UWA进行了测试,在Unity 5.5.2版本中的Android真机上确实复现出了这个问题。 加载4个粒子特效,红米2设备上,加载前内存:加载时内存:![]()
技术分享连载(九十三) 加载后内存,确实出现了Unity内存快速升高而又回落的“抖动”现象:![]()
技术分享连载(九十三) 对此,我们又在Unity 5.6.2版本上进行了真机测试,同样是红米2: 加载前内存:![]()
技术分享连载(九十三) ![]()
技术分享连载(九十三) 加载后内存,虽然内存同样存在小幅抖动,但其抖动范围已经明显降低。![]()
技术分享连载(九十三) 因此,建议研发团队尝试控制同一帧中Resources.Load的加载次数或者升级到更高Unity版本。![]()
技术分享连载(九十三)
该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/5a40eaa2b319bedd3bec6d90
UGUI
Q2:我们使用UGUI的Input Field,在手机上面如果用户输入系统自带的emoji表情,会导致一些问题,导致Input Field输入框显示异常,比如会出现一个问号的字符一直没法删除之类的,请问有什么办法可以过滤掉玩家输入的emoji表情?或者把emoji表情匹配成其他的字符?我现在是用正则来匹配emoji表情的unicode编码,但这样还是会出现覆盖不全的情况。
我们现在的处理方案,在inputfield上挂一个组件,采用类似代码来过滤表情符号,不过还没测试过能够完全符号所有表情符号,虽然不能过滤到所有的表情符号,但也不会报错。
UWA试下来在Unity 5.5.5p2上也重现了该问题。但在Unity 5.6.2上没有这个问题。升级确实可能会带来风险,所以建议一种方法是用正则来匹配,网上一般也都用的这个方法。 第二种是建议可以试一试的,就是对比下Unity 5.5.5p2和Unity 5.6.2的UGUI的代码改动(主要是InputField的),尝试自己对照着修修看,然后自行编译UnityEngine.UI.dll。
https://answer.uwa4d.com/question/5a4448e47a38eea813706571
Q3:Unity 4.x Animator 能否在编辑器下进行采样呢?比方说一个技能动作30帧,想知道每一帧下模型各个节点的坐标旋转缩放,该怎么办呢?
1)可以在Animation窗口中直接看。2)利用API: AnimationUtility.GetAllCurves 或 (AnimationUtility.GetEditorCurve)获取各节点的各属性AnimationCurve,然后取各AnimationCurve.keys中各(keyframe的value)。![]()
技术分享连载(九十三)
之前UWA Blog里有两篇博客涉及到动画采样,GPU Skinning和动画文件降低精度,里面都有涉及采样部分的代码,建议题主可以去看看。
该问题来自UWA问答社区,感谢招文勇提供了回答,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/5a44ff2c997cacca2128b1e1
Q4:不同项目的AssetBundle能够相互读取吗?有什么加密方式吗?不同的Unity版本对AssetBundle的兼容性如何?
1)AssetBundle是可以互相读取的,只要Unity版本是对应的。 2)加密是跟一般的文件加密一样,但需要通过LoadFromMemory来进行加载,具体的方法网上有很多,建议题主可以Google一下。 3)在Unity 5.x版本中,高版本的项目是支持读取低版本的AssetBundle的,只要AssetBundle上开启TypeTree(默认开启)理论上就没问题。
https://answer.uwa4d.com/question/5a45bc64fe338d132401a799
Q5:关于加载资源的CreatefromMemory这个API,我看到UWA不推荐使用,因为其效率很低,但是我们需要做dll的更新,我们dll是用这个加载策略的,想问下有没有什么别的方法,大家都不用这个API吗?或者有没有什么特殊情况下可以用呢?如何使得这个API的耗时降到最低?求建议,感谢!
如果这个API仅是用来热更新代码的,那么使用它无可厚非,这个也确实是必要的,否则就是使用类似Lua的方式来进行代码热更。 UWA不推荐频繁地使用Create/LoadFromMemory这个API是指不推荐将其频繁地用在资源的加载上。如果是重要的配置文件或者dll代码,是完全可以使用这个API来进行加载的。
原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。