我目前正在 Android 中启动游戏引擎,首先涉足该平台并具备基础知识,但是我不确定在使用 SurfaceView 绘制图形时实现分辨率独立性的最佳方法。
寻找关于如何保持游戏/精灵等在屏幕上独立的指针,显然每帧缩放所有精灵或存储不同分辨率的许多变化是不有效的
我目前正在 Android 中启动游戏引擎,首先涉足该平台并具备基础知识,但是我不确定在使用 SurfaceView 绘制图形时实现分辨率独立性的最佳方法。
寻找关于如何保持游戏/精灵等在屏幕上独立的指针,显然每帧缩放所有精灵或存储不同分辨率的许多变化是不有效的
您只需在加载精灵时缩放它们。我猜你是从资源中将它们作为位图加载的,对吧?如果是这种情况,那么您只需要这样做:
BitmapFactory.Options options = new BitmapFactory.Options();
options.outHeight = spriteHeight * scale;
options.outWidth = spriteWidth * scale;
Bitmap sprite = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.sprite, options)
其中 scale 是基于屏幕大小的变化。
有两种简单的方法:
第一的:
在创建 Surface 视图时,它调用:
onSizeChanged (int w, int h, int oldw, int oldh)
创建一些全局变量 x & y 所以如果你用以下方法覆盖它:
onSizeChanged(int w, int h, int oldw, int oldh){
this.w=w;
this.h=h;
}
然后在任何绘图或游戏计算中,您都可以使用窗口 w 和 h。
第二:
在绘图和游戏计算中调用 getWidth() 和 getHeight()。
祝你游戏好运!