制作

Q1:如果场景中有大量物体,请问如何利用相机拾取获取不同范围内的物体?

题主可以采用Physics.SphereCastAll函数来获取,类似下面这个场景:

在SphereCastAll这个API的参数中,第二radius可以控制获取半径,我们分别设置5和10的效果是这样的:
radius=5:

radius=10:

该问题来自UWA问答社区,感谢Andrew提供了回答,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/59b60249167ed31465945c2d


内存管理

Q2:将一个Unity 4.7.2的项目升级到Unity 5.5.3。打成安卓包,发现APK文件比之前大了200MB。然后分别对4.7.2打出来的APK包和5.5.3打出来的包分别进行解包,发现音频文件个数一样,但所占大小多了200MB左右,平均每个文件都大了几百KB。Unity 4.7.2的解包为Mp3格式,Unity 5.5.3的解包为Wav格式。

于是我在Unity 4.7.2和Unity 5.5.3下,分别新建一个空工程,将单独一个音频文件(ogg格式)放入Resources文件下,即两个Unity版本的空工程里只有一个Resources文件夹,文件夹里只有一个相同的Ogg格式音频文件,打成安卓包。使用解包工具解包,发现Unity 4.7.2的音频文件转成了mp3格式,大小几十kb;Unity 5.5.3的音频文件转成Wav格式,大小200多KB。

请问这种问题怎么解决?针对音频,Unity 4.x和Unity 5.x在打包过程中,作了那些修改?

引用Unity 5.0的release note:https://unity3d.com/unity/whats-new/unity-5.0

“Rewritten Audio asset pipeline and AudioClip backend.”"Much improved audio formats in terms of memory and CPU usage.** The Format property no longer refers to a specific platform-specific file format, but to a encoding method** (Uncompressed, Compressed, ADPCM)."

可以看到,在Unity 5.x中,不同平台的音频不再与特定的文件格式关联,而是与文件编码关联。文件格式不等同于音频编码,虽然同是Wav格式的文件,但其有不同的编码方法(PCM,ADPCM,Vorbis,Wav也可以用mp3编码),编码方法会影响到Apk的大小。

选定编码方式后降低quality和sample rate也会降低apk大小。

该问题来自UWA 社区,感谢Saber提供了回答,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/59b76e7ac66541837c1fd911


制作

Q3:如下图,蓝色部分为Unity视图,绿色为Android图片,我现在需要把Unity蓝色区域透视或者去除,iOS上已经透视成功,但Android一直失败,Unity版本为5.5.2,大家有什么建议呢?

我在安卓平台上实现了下,基本思路是:
1)使用TextureView代替SurfaceView;
2)TextureView需要setOpaque(false)来透明;
3)Camera的Clear Flags需要使用Solid Color,Background 为 #00000000 必须是黑色,不然和安卓视图颜色混合有问题;
4)由于Unity在安卓上额外做了一步操作,会把Alpha强制改成1后输出,这里需要改libunity.so的二进制文件来临时绕过,后面Unity2017.2可选了,详见https://forum.unity3d.com/threads/big-performance-issue-with-unity5-on-android.338847

Demo工程放在Github上:https://github.com/littlesome/UnityTransparent

该问题来自UWA问答社区,感谢 littlesome提供了回答,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/59a92dcaaa04563e0d0d7bd8


制作

Q4:scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, true); 这个函数创建之后一直尝试更改对应的滑动条宽度均告失败,请问如何更改呢?

我写了个简单的例子:

GUIStyle gs = GUI.skin.verticalScrollbar;
GUIStyle gs1 = GUI.skin.verticalScrollbarThumb;gs.fixedWidth = 30;
gs1.fixedWidth = 30;
......
pos = GUILayout.BeginScrollView(pos);
......
GUILayout.EndScrollView();
......
gs.fixedWidth = 0;
gs1.fixedWidth = 0;

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


内存管理

Q5:我在Editor下测试, 前一帧Mono还是67.2MB,下一帧突然自己掉到了51.5MB。然而并没有gc.collect()调用,这Mono是为什么减少?因为有不明原因的减少,所以担心也有不明原因的增多。

如果题主是在Editor测的,这个Mono的回落就正常了。Editor本身(渲染窗口,处理交互事件等)就会造成内存分配,同时也会触发GC。

但默认情况下,Editor本身的开销在Profiler里是看不到的,除非题主点击一下“Profile Editor”。 点击之后,就可以看到Editor本身函数的耗时和GC的触发了。例如下图:

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

技术分享连载(七十九)相关推荐

  1. 技术分享连载(十八)

    图形渲染 Q1:我看到Unity 5.3.5版本中恢复了对粒子系统的合批功能,但是我尝试下来并没有达到这个效果.是粒子系统合批有什么要求吗,实例化会不会对粒子系统的合批造成影响呢? 经过我们验证,Un ...

  2. DockOne微信分享(六十九):微服务选型之Modern Node.js

    本文讲的是DockOne微信分享(六十九):微服务选型之Modern Node.js[编者的话]目前Node.js的发展非常快,大家可能还停留在:Node.js性能很好,Node.js里都是回调,写起 ...

  3. JavaScript学习(七十九)—值传递和地址传递

    JavaScript学习(七十九)-值传递和地址传递 一.值传递 二.地址传递

  4. WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

    原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...

  5. 【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式

    [genius_platform软件平台开发]第七十九讲:Linux系统中可执行程序后台运行的几种方式 1. 问题描述 2. & 符号 3. nohup指令 4. ctrl + z.jobs. ...

  6. UWA 技术分享连载 转载

    技术分享连载1 Q1:Texture占用内存总是双倍,这个是我们自己的问题,还是Unity引擎的机制? Q2:我现在发现两个因素直接影响Overhead,一个是Shader的复杂度,一个是空Updat ...

  7. osgEarth的Rex引擎原理分析(七十九)如何加载百度、高德、谷歌、微软的在线地图

    目标:(七十八)中的问题155 瓦片生成后,就是一堆图片.怎么对这堆图片进行编号,是目前主流互联网地图商分歧最大的地方.总结起来分为四个流派: 谷歌XYZ:Z表示缩放层级,Z=zoom:XY的原点在左 ...

  8. 数据库管理-第七十九期 儿童节惊魂(20230601)

    数据库管理 2023-06-01 第七十九期 儿童节惊魂 1 主板挂了? 2 时间同步 3 数据库参数 4 ACFS 5 两个错误 总结 第七十九期 儿童节惊魂 6月第一天,又是儿童节,加上客户现场来 ...

  9. ★【世龙最爱之作】☆【丑丫头变身美女校花,不恋情的人懊恼,可是有了爱情之后更烦恼】第七十九章★

    丑丫头变身美女校花第七十九章 全部烧烤大餐,终极仍是以快活满意的主旋律,在一个半小时之后完善的停止了.合法大家都整理筹备散场的时候. 沈芳突然道:"要不,大家去唱歌吧?" 吴以默立 ...

  10. 小说里的编程 【连载之十九】元宇宙里月亮弯弯

    第十九章 医术是如何的高明 且说,牵凫氏抱着勾叫回来了,进入基地时,是科学家班资给她开的门. 班资着急地问道,这是怎么回事?看来伤得很重呀,是否需要马上充电? 牵凫氏亲了一下勾叫,把它慢慢放了下来.一 ...

最新文章

  1. linux查找nginx目录,Linux下查看nginx安装目录
  2. vue在微信里面的兼容问题_微信H5页面兼容性问题分析及解决方法
  3. 设计模式 原型模式_创新设计模式:原型模式
  4. element 表格宽度自适应_Java 设置Word中的表格自适应的3种方式
  5. 安卓平板usb变显示器_RJ45与USB信号接入工业显示器有何不同?
  6. java maxheap_Java底层PriorityQueue 优先队列——基于MaxHeap最大堆
  7. Typename和Class在声明模板时的区别
  8. mysql ibd frm文件_Mariadb,Mysql如何根据.frm和.ibd文件来恢复数据和表结构
  9. c盘不能新建文件的解决办法
  10. 计算机毕业生学士服,特殊毕业季,这些“别人家的高校”为毕业生送上定制版学士服...
  11. html可视区高度,你真的懂js获取可视区宽高吗
  12. linux安装音乐软件教程,Ubuntu 下安装深度音乐播放器
  13. 一个由2020年1月7日 京东出现的重大 Bug 漏洞引起的思考...
  14. Juniper防火墙常用命令
  15. tp810c桥接_TP-Link双无线路由器开启WDS桥接设置步骤
  16. SAP BW4基础入门篇
  17. 使用JAVA调用热敏打印机接口实现打印功能
  18. my ReadBook_baozhuangxue / baozhuanggailun / 273154301
  19. 计算机课堂听课情况记录表模板,教师听课评课情况记录表范例及模板.doc
  20. 使用伪类来实现类似微信群聊的头像样式

热门文章

  1. PAT 1072. 开学寄语(20)-PAT乙级真题
  2. 在网页设计中,引导页是所有页面中的重中之重,引导浏览者很快进入各栏目页面,是一个网站的灵魂所在。
  3. java小例子mysql_Java 访问MySQL的小例子
  4. python web实战视频教程_Python Web开发实战【中级班】
  5. 判断 Map 中是否包含指定的 key 和 value
  6. oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
  7. 第二十九课、主窗口中的状态栏------------------狄泰软件学院
  8. [CLR via C#]4. 类型基础及类型、对象、栈和堆运行时的相互联系
  9. C++ typename 的双重含义
  10. 行为型设计模式(5)—— 策略模式(Strategy Pattern)