如何在运行时优雅地Reset DOTS

1)如何在运行时优雅地Reset DOTS

2)用顶点着色器进行旋转的Shader放在Image上不能正常工作

3)FrameBuffer Fetch在确定支持的手机上显示全紫

4)Unity系统中,Android端判断GamePad文件在不在

这是第328篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。


Script

Q:DOTS环境为1.0.0 preview

需求:以“局”为单位的战斗,单机小游戏。

目前我需要在StartCombat时手动拉起所有的System,在EndCombat时手动Disable掉所有的System。这些System都在Default Inject World中,功能勉强能实现,但是觉得不够优雅。

由于DOTS项目非常稀少,而且基本上所有的例子都没有考虑过这个问题(他们都似乎是点击运行游戏就进入战斗,没有考虑到以“局”为单位),因此征求一下大家的优雅做法。

A:这个问题的发出说明对ECS体系的设计思路了解欠缺,在System中保存了的NativeContainer(也就是State,跟局有关的数据)才会需要手动ResetSystem。

真正的ECS设计思路应该是System中完全不包含任何State,不能图省事把以前的 XXXManager的设计思路拿过来:XXXManager设计思路指的是一个单例中有一个Map,还有N多方法来增删改查这个Map。

因此一个纯方法集的System不仅不需要Reset,甚至可以动态Reload代码段,我们只需要摧毁所有的Entity CMP即可完成Reset。

感谢题主刘泰言@UWA问答社区提供了回答

Rendering

Q:整体思路就是想在UI中实现图片的可控旋转,但是发现Shader放在Image上时,一旦发生移动就完全乱了。已尝试开启了DisableBatching,不知道问题出在哪里?也尝试过进行缩放,仍然存在类似的问题。

示例工程如下:

https://uwa-public.oss-cn-beijing.aliyuncs.com/answer/attachment/public/113133/1677233402885.unitypackage

针对以上问题,有经验的朋友欢迎转至社区交流分享:

https://answer.uwa4d.com/question/63f88f1b063854059914deb8

Rendering

Q:FrameBuffer Fetch在确定支持的手机上显示全紫,不管是Color Fetch还是Depth Fetch。请问我这个DepthFetch实现是不是有什么漏写的东西?

针对以上问题,有经验的朋友欢迎转至社区交流分享:

https://answer.uwa4d.com/question/640bbb060638540599253529

Android

Q:Android端Google Play如何判断GamePad存在不存在大家有啥好方法吗?海外GamePad也可能存在多个位置吧,比如外部内存卡中?

A:要在Android设备上检查GamePad是否存在,可以使用Android系统提供的API来检查设备中连接的所有输入设备,并查找是否有GamePad输入设备。

这个方法只能检测连接到设备的硬件GamePad设备。对于海外GamePad,如果文件存储在设备上,则需要使用文件系统API进行检查,否则需要依赖硬件API检查连接的GamePad设备。同时,这个代码片段需要在AndroidManifest.xml文件中添加权限声明才能在外部存储设备中进行搜索。

感谢清风亦枫@UWA问答社区提供了回答

封面图来源于网络


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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容