0

我正在开发一个 OpenGL Android 游戏,我现在正在处理用户输入。

我有两个主要的想法来实现它。我认为他们两个工作得很好,但我不知道哪个“更好”(在性能/速度方面)。

基础是在屏幕周围的某些特定位置上,在 Opengl 中绘制了几个“按钮”(例如四个箭头键、操作按钮……)。这些按钮在游戏过程中不会改变位置。

第一个想法

我的第一个实现是创建一个包含对每个按钮的引用的二维矩阵。就像是:

InputObject matrix = new InputObject[Width_of_screen][Height_of_screen]

在加载阶段,每个按钮都会在矩阵中插入它们出现的每个像素的引用。

因此,每次用户触摸屏幕时,我都可以直接在矩阵上查看他单击了哪个按钮(使用e.getX()e.getY())。

优点: “快速”知道要调用哪个按钮。

缺点:(在普通屏幕上)800*480 ~ 300K 引用,其中 80% 是null(但内存堆已经占用)

第二个想法

我的第二个计划是制作一个ArrayList输入对象并询问每个输入对象是否属于他们。就像是:

for(InputObject ob : TheArrayList){
    if (ob.for_him(e.getX(),e.getY())){
        ob.do_it();
        break; //They cannot overlap
    }
}

优点:占用的堆空间更少(根本没有null引用......)

缺点:必须检测每个对象是否为自己,因此他们需要对for_him方法进行比较。占用更多 CPU 时间。

综上所述,对于 Android 手机(和其他智能手机)来说,哪一个可能是最好的主意,因为没有太多的处理器时间用于用户输入。

如果有第三种也是最好的方法,我很想知道它。

提前致谢。

4

0 回答 0