1)如何在运行时优雅地Reset DOTS
2)用顶点着色器进行旋转的Shader放在Image上不能失常工作
3)FrameBuffer Fetch在确定反对的手机上显示全紫
4)Unity零碎中,Android端判断GamePad文件在不在


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

UWA社区主页:community.uwa4d.com
UWA QQ群:465082844

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,不晓得问题出在哪里?也尝试过进行缩放,依然存在相似的问题。

float4 flip_base(float4 vertex, float2 uv){float2 pos;float2 center = float2(0,0); // 这个中央能够通过 BaseEffect 通过CPU 计算后 uv1传入,这里简化了。// 尝试过的缩放 //vertex.xy *= _FlipProgress;//return vertex;float2 dt = (vertex.xy - center.xy) * 100;float len = sqrt(dot(dt, dt));float theta = -len * _FlipProgress * pi;float2x2 rot ={cos(theta), sin(theta),-sin(theta) ,cos(theta)};dt = mul(rot, dt);pos = dt + center;vertex.xy = pos;return vertex;}v2f vert(appdata v){v2f o;o.uv = v.uv;float4 vertex = flip_base(v.vertex, o.uv);o.vertex = UnityObjectToClipPos(vertex);return o;}

示例工程如下:
https://uwa-public.oss-cn-beijing.aliyuncs.com/answer/attachm...

针对以上问题,有教训的敌人欢送转至社区交换分享:
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问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官网技术博客:blog.uwa4d.com
官网问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官网技术QQ群:465082844