首先說下選用的版本,是Github上Android版OpenGLES版本。說下理由,由於LGame引擎開發跨越時間長,且只有作者一人在做,所以版本間的改動很大,舊版有很多不足和bug處,所以不考慮。然後就是Github上Android的Canvas版,我本想用這個的,因爲簡單,但是實際用效率太差,在手機上fps只有10左右,只好放棄,改用最新的OpenGLES版。
一:LGame引擎啓動配置
據作者說只要在AndroidManifest里加上:
android:configChanges="orientation|keyboardHidden"
即可由引擎自由切換橫豎屏,但我實際測試,如果不強制橫屏則會報錯,所以加上了
android:screenOrientation="landscape"
索性遊戲一般只有橫屏或豎屏,橫豎屏切換的初學者基本不用考慮。
LGame是引擎的啓動類,繼承自Activity,用戶需要繼承LGame來使用該引擎。如下:
public class MainActivity extends LGame {
@Override
public void onMain() {
LTexture.ALL_LINEAR = true;
LSetting setting = new LSetting();
setting.width = 800; //設定屏幕畫面的寬高
setting.height = 600;
setting.fps = 60;
setting.landscape = true; //橫屏
setting.showFPS = true; //顯示FPS
register(setting, MyScreen.class); //註冊設定,啓動MyScreen
}
@Override
public void onGameResumed() {
}
@Override
public void onGamePaused() {
}
}
Screen可以理解爲遊戲的畫面,不同畫面間可以切換。遊戲繪製與邏輯一般在這裏完成。我們的MyScreen可以繼承Screen。
三:Sprite
Sprite爲精靈,寬泛的理解,可以是各類人物,物品等需要在遊戲裏展現的。
public class MyScreen extends Screen {
private Sprite gy; //人物
LTimer timer = new LTimer(LSystem.SECOND); //初始化一個一秒的定時器
public MyScreen(){
gy = new Sprite("assets/guanyu.png", 100, 100, 32, 32); //初始化精靈,參數分別爲圖片路徑,座標及裁剪的寬高
gy.setRunning(true);
add(gy); //加入到Screen中
}
@Override
public void draw(GLEx g) {
gy.createUI(g); //繪製
}
@Override
public void alter(LTimerContext timer) {
if (this.timer.action(timer.getTimeSinceLastUpdate())) { //一秒更新一次精靈狀態
gy.update(150);
}
}
@Override
public void touchDown(LTouch e) {
gy.move_right(); //向右移動一次
}
@Override
public void touchUp(LTouch e) {
// TODO Auto-generated method stub
}
@Override
public void touchMove(LTouch e) {
// TODO Auto-generated method stub
}
@Override
public void touchDrag(LTouch e) {
// TODO Auto-generated method stub
}
}
效果:
右側是使用的素材。