目录:

1)Terrain方案比较
2)关于Batch.DrawInstanced的理解
3)粒子系统问题
4)如何定位Physics.Raycast的耗时
5)在Unity如何用代码安全地隐藏Spine角色的某一部分


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

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)


Terrian

Q:Unity中Terrain实现原理是什么?T4M有什么优势?在移动平台还有没有其它可行方案?

A:Unity Terrain的实现原理,这个问题有点大。不过题主可以理解为它是一种基于Heightmap的实现方式,并且会产生不同的LOD细节层,同时根据用户的不同编辑操作产生不同的地形片,进而在不同的距离时展现不同的细节。在以前,Unity Terrain最为诟病的还是用户编辑过多后会产生大量的Draw Call和Terrain Data,从而让其在移动设备上渲染也耗时、内存也大、加载也耗时等等,所以,其在目前移动项目中的使用上并不多。

但是,Unity引擎在2018.3以后大幅改进了Terrain系统,通过GPU Instancing来大幅加速了Terrain的渲染效率,同时也减少了Terrain Data数据,进而加快了加载效率。不过,具体效果如何,还需要题主根据自己的需求后续进行尝试了。在目前的移动项目中,使用该功能的项目还是很少的。

T4M的优势就是简单,开源,自己想怎么改就怎么改。

就目前的商业游戏而言,暂时还没有看到其它较为主流的地形制作方案,基本上都是基于T4M的做法。之前在GDC上,有看到World Creator工具,题主感兴趣可以自行尝试,下图是它的制作效果图。

后续也建议关注Procedual Terrain,随着游戏场景的大幅增加,该方法将在大尺度场景中得到进一步的应用。相关开源库戳此。

该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5d80d30ff6bfcf23aea6a7e9


Rendering

Q:我在UWA的性能报告中看到Batch.DrawInstanced的耗时比较高,请问这个表示什么意思,一般该怎么下手?

A:从图片中,我并没有看到你项目的Batch.DrawInstanced很高,相反,看上去还是很正常的。

Batch.DrawInstanced是GPU Instancing在CPU端的耗时,一般是为了节省Draw Call做的,所以大部分情况下,GPU Instancing的耗时都相对较低。但是,在一些特殊情况下,大量半透明物体的GPU Instancing渲染耗时可以会带来很高的耗时,这点我们在UWA DAY 2019的课程《Unity引擎渲染、UI、逻辑代码模块的量化分析和优化方法》中做了详细解释,建议题主有空去整体看一遍。

该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5d823fa491262623a9fc7609


Particle

Q:我的Unity版本是2017.4.25,项目开启了多线程渲染,目前发现了一个报错“Sub-emitters must be children of the system that spawns them”。比如:场景内有10个特效。

A:https://unity.cn/releases/lts/2017/2017.4.31f1
2017.4.31里也有一条类似的:
Shuriken: Fixed erroneous sub-emitter error message. (949522, 1164014)
你可以装个试试看能否解决你的问题。

感谢deviljz@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5d6f68acc494b506d2673ba3


Physics

Q:如何定位Physics.Raycast的耗时?我们代码中如果调用Physics.Raycast会体现在性能报告的物理模块中吗?还是需要手动打点才能得到具体数据,因为代码中调用Physics.Raycast的地方还是挺多的。

A:需要手动调用Raycast操作的,一般都建议研发团队还是直接通过打点来监控它的性能问题。

不止是Raycast,对于Rigidbody和Character Controller的API调用,我们都建议通过上述方式来进行监控和检查。

该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5d79c22d91262623a9fc7524


Animation

Q:假如有一个怪物手上拿了一把斧头,斧头的显示隐藏、位移或缩放都是受动画曲线控制的。如果我想用代码来随时隐藏它,该如何做?

我已经尝试过几种方式来实现局部隐藏:
1、获取斧头所在的Slot,修改Slot的A值为0。但是,这个值会受动画曲线控制,如果动画里有对这个A值key帧,则控制权又回到动画。
2、修改斧头的Bone的ScaleX和ScaleY为0。但遇到上面一样的问题,这两个值是受动画曲线控制的。而且,Bone是静态数据,修改静态数据感觉不太好,也不安全。
3、设置斧头Attachment为null。还是遇到上面类似的问题,这个Attachment有可能被其它接口调用后又变回去了。

还有另一种方法,暂时没有验证,运行时生成一个新的skin,这个新的skin里不加斧头的Attachment,然后需要显隐时就切换skin。但是频繁切换skin是否会有性能影响?或者是不是有更好的方式?

A:方法1 :有一种比较简单的做法,就是FBX导入动画后,把clip文件复制出来,然后把斧头对应动画上的scale曲线删掉,这样clip文件就不会影响斧头的clip,就可以在代码随意控制了。但是如果你勾选上Optimize Game Objects,那么如果你想处理斧头的动画曲线,就只能修改复制出来的clip文件,如果需要在运行时动态修改clip,就会比较麻烦。

方法2:让美术把斧头单独导出,代码挂载到挂点,独立处理。

感谢简单就好@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5d6931f080d96a06d776ddb1


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

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)

Terrain方案比较相关推荐

  1. 【Unity】ISO模式下地形Terrian细节丢失/镜头拉远就没细节了

    在ISO(正交)模式下会出现这种状况. 方案1:分辨率选项中,Low Resolution Aspect Radios去掉勾选,如下图: 方案2:另外,分辨率对地形的细节展示程度也有影响.越高越接近编 ...

  2. python画图配色_python matplotlib包图像配色方案分享

    可选的配色方案: Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_ ...

  3. [论文解读]Bayesian Generalized Kernel Inference for Terrain Traversability Mapping

    title={Bayesian Generalized Kernel Inference for Terrain Traversability Mapping}, author={Shan, Tixi ...

  4. 基于GIS技术的公路路线方案决策支持系统开发初探

    作者:唐 勇 朱爱民 摘 要:本文结合公路规划.设计.建设实际,针对现行公路路线CAD系统尚不足以解决公路可行性研究.路线方案选定这类多目标空间决策问题的现状,论述了引入地理信息系统的有关理论.方法和 ...

  5. 移动端草海的渲染方案(一)

    塞尔达草海的模仿 塞尔达的草海 让人印象深刻,忍不住又要背诵台词: 我想起那天下午夕阳下的奔跑,那是我逝去的青春. 好了,现在回来. 如果尝试用unity内置的地形草来还原上图效果,我们会发现有点力不 ...

  6. 无缝大世界之无缝连接Terrain转mesh

    目录 Terrain转Mesh介绍 2.实现方案 3.技术原理 (1)Terrain转Mesh (2)减面生成多层LOD Terrain转Mesh介绍 Unity传统的Terrain面数是非常恐怖的存 ...

  7. python配色方案_python matplotlib包图像配色方案

    可选的配色方案: Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_ ...

  8. 动态加载烘培贴图与Terrain转mesh

    前言 unity加载烘培贴图是需要加载场景才可以使用,但如果项目只使用一个场景或者有许多关卡地形时,明显通过加载场景来达到更换烘培贴图的这种做法是不妥当的.而terrain地形在有些安卓机上的支持并不 ...

  9. Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理)

    快速导航(持续更新中-) Cesium源码解析一(terrain文件的加载.解析与渲染全过程梳理) Cesium源码解析二(metadataAvailability的含义) Cesium源码解析三(m ...

最新文章

  1. 教你在Python中实现潜在语义分析(附代码)
  2. iOS开发UI 篇—CAlayer层的属性
  3. 推荐一些不错的开源免费易上手的web前端框架
  4. 最小二乘算法MATLAB代码实现
  5. python系统监控_python psutil系统监控详解
  6. python列表元素替换的数据结构_Python基础学习数据结构(第2讲:列表;第2讲:列表创建、添加元素、插入元素、替换元素、删除元素、其他常用方法和列表派生),第二,主讲,追加,推导,式...
  7. 疼恨皇明热水器的无耻!
  8. hdu1285 拓扑排序(裸)
  9. ubuntu登陆死循环(全是搜狗拼音的锅!!!!!!!!!!!)
  10. 企业个人所得税网上申报系统_增值税、企业所得税、个人所得税申报难点梳理...
  11. 软考高级项目管理师都考哪些内容?详解
  12. #NAME?_#NAME?
  13. CSDN有哪些值得学习的专栏?
  14. 拥有奇瑞QQ冰淇淋·桃欢喜才懂的幸福
  15. storm多个bolt之间多对一或一对多下发
  16. CSS counter计数器(content目录序号自动递增)详解
  17. 黑*头条_第12章_ 热点文章处理
  18. ZROI Day2 测试总结
  19. 大带宽服务器是什么?大带宽服务器网络卡顿是什么原因?
  20. 使用二维数组,实现五子棋功能

热门文章

  1. 数据库服务器安装mysql数据库_My SQL数据库的安装与配置
  2. [JetBrains注册] 利用教育邮箱注册JetBrains产品(pycharm、idea等)的方法
  3. C语言获取所有盘符和盘符类型
  4. 前端MVC/MVP/MVVM示例
  5. visio中公式太小_齿轮泵的进出口方向和口径是如何确定的,泵的进出口径公式...
  6. 基于Springboot+Mybatis实现个人理财系统
  7. android 为什么java文件下载_java – Android:如何在android下载文件?
  8. Android 7.0+配置Burpsuite证书
  9. 【web-攻击应用程序框架】(12.1)分层架构:攻击与保障
  10. java 中文繁简体转换工具 opencc4j 使用介绍 1.8.0