目录:

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. centos安装easy_instal
  2. ZigBee On Windows Mobile--3.模拟器和实物调试
  3. 成功解决极其刁钻bug之SyntaxError: invalid character in identifier
  4. OpenCL memory object 之选择传输path
  5. ajax传json格式数据
  6. c语言程序员算法题库,100个超级经典地C语言算法,程序员必须练习.doc
  7. arch开机自动认证
  8. XML读写演示程序(2)
  9. 单片机c语言不能编译,用keil4编译C语言代码,编译通过,但是链接时无法产生.hex文件。...
  10. php和python-Python与PHP:有什么区别?
  11. Linux服务器时间设置命令
  12. JavaScript入门学习书籍的阶段选择
  13. 大整数算法[10] Comba乘法(实现)
  14. 2019电子设计大赛电磁曲射炮制作分享
  15. AI实现五子棋机器人(一)
  16. 如何用mac刷路由器
  17. 最新仿720云全景制作源码|krpano仿720云全景网站源码
  18. 汉思新材料:无人机控制板BGA芯片底部填充胶应用
  19. Python爬虫爬取纵横中文网小说
  20. 【STM32笔记】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全的问题)

热门文章

  1. 电影数据分析需求文档
  2. matlab上计算闭环极点,线性连续SISO系统极点配置算法的MATLAB实现
  3. 熬夜肝了这篇Spring Cloud Gateway的功能及综合使用
  4. tensorflow损失函数均方误差怎么计算
  5. 用自有工作站做服务器建网站,服务器搭建工作站
  6. 2022年下半年软件设计师上午真题及答案解析
  7. CDN通过openresty库实现ocsp stapling,有效提升客户端回源效率
  8. java mySQL名字分数排名_java做成绩排名表,如何实现同分同名次
  9. html5 表格向下,html中table固定头部表格tbody可上下左右滑动代码实例
  10. moviepy音视频剪辑基类VideoClip的write_videofile方法codec、bitrate、preset、audio_bitrate、audio_nbytes等参数的作用