技术分享连载(九十三)

简介:

内存管理

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上挂一个组件,采用类似代码来过滤表情符号,不过还没测试过能够完全符号所有表情符号,虽然不能过滤到所有的表情符号,但也不会报错。

    public char ValidateInput(string text, int charIndex, char addedChar)
    {
    // Emoji表情
    if (char.GetUnicodeCategory(addedChar) == UnicodeCategory.Surrogate)
    {
    return ‘\0’;
    }
    }

感谢 rubbyzhang提供了以上回答。

UWA试下来在Unity 5.5.5p2上也重现了该问题。但在Unity 5.6.2上没有这个问题。升级确实可能会带来风险,所以建议一种方法是用正则来匹配,网上一般也都用的这个方法。
第二种是建议可以试一试的,就是对比下Unity 5.5.5p2和Unity 5.6.2的UGUI的代码改动(主要是InputField的),尝试自己对照着修修看,然后自行编译UnityEngine.UI.dll。

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。
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(默认开启)理论上就没问题。

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/5a45bc64fe338d132401a799


资源管理

Q5:关于加载资源的CreatefromMemory这个API,我看到UWA不推荐使用,因为其效率很低,但是我们需要做dll的更新,我们dll是用这个加载策略的,想问下有没有什么别的方法,大家都不用这个API吗?或者有没有什么特殊情况下可以用呢?如何使得这个API的耗时降到最低?求建议,感谢!

如果这个API仅是用来热更新代码的,那么使用它无可厚非,这个也确实是必要的,否则就是使用类似Lua的方式来进行代码热更。

UWA不推荐频繁地使用Create/LoadFromMemory这个API是指不推荐将其频繁地用在资源的加载上。如果是重要的配置文件或者dll代码,是完全可以使用这个API来进行加载的。






原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
9天前
|
消息中间件 Cloud Native 开发者
电子好书发您分享《阿里云云原生开源开发者沙龙北京站 PPT 合集 》
**阿里云开源沙龙PPT合集:北京站聚焦云原生技术** 探索云原生领域的深度与广度,[阿里云](https://developer.aliyun.com/ebook/8334/116563?spm=a2c6h.26392459.ebook-detail.5.da096cf6t38G15)分享了北京开发者沙龙的精彩内容,涵盖微服务、消息队列等主题,助力开发者洞悉行业趋势。![image](https://ucc.alicdn.com/pic/developer-ecology/cok6a6su42rzm_67b12f6cad6e4b2786859b3a668b3351.png)
15 3
|
7天前
|
Kubernetes Cloud Native 安全
电子好书发您分享《阿里云云原生开源开发者沙龙北京站 PPT 合集》
📚 阿里云开源开发者沙龙北京站精彩回顾!获取PPT合集,深入云原生安全与微服务实践:[北京站PPT](https://developer.aliyun.com/ebook/8334/116563?spm=a2c6h.26392459.ebook-detail.5.4dc56cf6htj2uT) 🚀 图文并茂探讨微服务安全与K8s监控解决方案。不容错过的云原生学习资源!👇
12 2
|
运维 前端开发 JavaScript
学习Serverless的水货与干货笔记分享 | 🏆 技术专题第七期征文
前段时间看了一些Serverless的文章,恰好最近又听了一门Serverless的应用实践课程,就把笔记拿出来和大家分享一下,如表述有误还请各位斧正
|
监控 前端开发 架构师
文初技术分享【转】
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。
420 1
|
机器学习/深度学习 人工智能 架构师
开发者社区精选直播合集(十)| 架构师成长之路
“我怎么知道自己适不适合做架构师”,“做架构师有什么潜在的坑”,“如何成为一个优秀的架构师”,如果你也存在类似的这些问题,就快来看大咖架构师们都是怎么成长起来的吧
开发者社区精选直播合集(十)| 架构师成长之路
|
机器学习/深度学习 人工智能 运维
开发者社区精选直播合集 | 架构师成长秘籍
架构师是一个十八般武艺都会的岗位,本专栏我们从思维方式、方法论,实践案例、大咖成长经验等角度整理视频合集,给你带来架构师成长营养餐,为你披荆斩棘、教你如何升级打怪,避开弯路成为一名优秀的架构师,快来看看收藏~
451 0
开发者社区精选直播合集 | 架构师成长秘籍
|
存储 Kubernetes Cloud Native
重磅合集 | 31 篇技术文章,带你从零入门 K8s (留言赠书)
由阿里云与 CNCF 共同开发的《CNCF x Alibaba 云原生技术公开课》(视频课程)第一期已更新完毕。本文整理了全部课程文章 31 篇,期待给正在学习 Kubernetes 的同学提供一些参考。
12814 0
重磅合集 | 31 篇技术文章,带你从零入门 K8s (留言赠书)
|
图形学 开发者 算法
|
图形学 Java 异构计算
|
Java 图形学 索引