DearImGui不支持多点触摸是DearImGui的一个硬伤,最近刚好要处理这个问题。
但是知道写这个博客为止,还是没有完美的解决这个问题,写这个博客的目的只是为了表述一下自己的实现过程,以及最后不完美的解决方案。
DearImGui一直为PC实现的框架,让后端程序员能够专注于逻辑的书写,使用简单的逻辑就能实现界面。
但是PC和移动端有一个很大的区别就是输入模式的差别,在PC上,屏幕需要响应的就只有一个鼠标,但是在移动端上面,就牵扯到一个多点触摸屏幕的时候,多点触摸时候,相当于PC屏幕上有两个鼠标在同时的工作。
我需要在移动手机上实现的是左手在滑动摇杆的同时,右手需要进行点击不同的按钮进行NPC技能的响应,就和现在市面上的游戏一样,但是如果遥感和技能按钮都是用DearImGui来实现的话,两者是不能同时的响应的。
我最后的解决办法是:遥感使用DearImGui进行绘制以及响应,技能按钮使用的是Android原生的Java代码以及XML进行的绘制和响应。
中间我有试过SDL,SDL可以支持多点触控,也支持多平台,但是我在最后一步卡住了:
SDL需要创建一个自己的窗口,然后在窗口里面画一个按钮,我最初的想法是,使用SDL创建一个窗口,这个窗口里面就只有遥感按钮和技能按钮,然后将窗口的边全部隐藏,也就是设置成:没有描述的一个窗口,然后将窗口的背景设置为透明。这样玩家在屏幕上看见的就只有遥感和技能按钮,但是我只在SDL中找了一个设置全部透明度的方法,也就是使用了这个接口之后,不仅窗口会变透明,里面的所有组件也变的透明了,不能单独的将窗口的背景设置为透明。
我也尝试过:将窗口的RGBA颜色值设置成透明度为255(全透明)的方法,但是显示出来的是一个黑色的窗口。
PS:也许使用SDL去创建Android的GLSurfaceView,也就是将整个Android上的窗口都交给SDL去管理,是一种解决办法,但是我已经没有时间去试了。
为什么摇杆使用DearImGui但是技能按钮使用的是Java,是因为我想使各个平台(Android/iOS)代码尽量的少,而可以跨平台的DearImGui代码尽量的多。
我最后的解决方法有一个很大的弊端就是如果当前的工程需要在iOS中实现对应的功能话,就需要使用OC实现一个技能按钮的逻辑,和Android进行对应。这显然是有点拉胯的。
如果之后我可以找得到好的解决方案,或者DearImGui支持了在移动端的多点触控,这个解决办法就立马就会被去掉。
因为在Android中实现的技能按钮还有倒计时的显示,所以我是自定义了一个UI,不过网上也有类似的功能实现,我就不赘述了。
如果需要在Android中实现的技能按钮的自定义UI,可以留下邮箱。
如果有在移动端使用DearImGui,并且对于这个多点触摸有解决方案的大佬,可以留言告知我。共同交流,共同进步。
本文讲述了在Android上使用Dear ImGui遇到的多点触摸问题,由于Dear ImGui不支持多点触控,作者尝试了多种解决方案,包括使用SDL。最终采取的折衷方案是用Dear ImGui绘制摇杆,Android原生代码处理技能按钮。作者指出,这种做法在跨平台一致性方面存在挑战,期待更好的解决方案或Dear ImGui官方支持移动端多点触控。


被折叠的 条评论
为什么被折叠?



