【步兵 经验篇】游戏常用的三个处理

【步兵 经验篇】游戏常用的三个处理 By EOS.

网上都能搜到的东西,汇总一下,几个简单的处理就能大大提升游戏体验。
接下来我们从简到繁~

横屏翻转

我做过的手游游戏基本都是横屏模式,所以我也以横屏为例,方法很简单。

在 AndroidManifest.xml 中

android:screenOrientation="userLandscape"

基本上所有的游戏都有了,别因为这个属性而脱了队。


禁用自动熄屏

在这个挂机越来越常见时代,盯着盯着屏幕就后台了,岂不很不爽?
另外此功能还能减掉不少隐藏bug=、=,岂有不加之理~

public class AppActivity extends Cocos2dxActivity {

    PowerManager.WakeLock mWakeLock;

    @Override
    public Cocos2dxGLSurfaceView onCreateView() {
        Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);

        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        mWakeLock =fpm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,"GAME_NO_LOCK");
        mWakeLock.acquire();

        return glSurfaceView;
    }

     @Override
     protected void onPause() {
        super.onPause();
        if(mWakeLock != null)
        {
            mWakeLock.release();
            mWakeLock = null;
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if(mWakeLock != null) {
            mWakeLock.release();
            mWakeLock = null;
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if(mWakeLock == null) {
            PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
            mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "GAME_NO_LOCK");
            mWakeLock.acquire();
        }
    }
}

另外都和熄瓶有关系,这里顺带说一个之前出过的bug:

对android:configChanges属性,一般认为有以下几点:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges=”orientation|keyboardHidden|ScreenSize”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

如以上描述,如果设置android:configChanges不包含”orientation|keyboardHidden|ScreenSize”,再游戏灭屏时,
会瞬间调用横屏切竖屏模式,所以会“重新调用各个生命周期”,此操作会可能引起的问题:
1. 直接熄屏后,会出现背景音乐直接播放。
2. 切竖屏时会执行两次, 造成游戏tgkill崩溃。


沉浸导航栏

谷歌在安卓4.4之后提出了一个Immersive Full-Screen Mode的概念(官方介绍链接)

精简出来的代码需要修改的地方如下:

public class AppActivity extends Cocos2dxActivity {

    private Cocos2dxGLSurfaceView glSurfaceView;

    @Override
    public Cocos2dxGLSurfaceView onCreateView() {

        glSurfaceView = super.onCreateView();
        this.hideSystemUI();

        return glSurfaceView;
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus)
    {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus)
        {
            this.hideSystemUI();
        }
    }

    private void hideSystemUI()
    {
        glSurfaceView.setSystemUiVisibility(
                Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_LAYOUT_STABLE 
                | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
                | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_FULLSCREEN 
                | Cocos2dxGLSurfaceView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
}

总结

成功的游戏都会在考虑着细节,失败的游戏还在不停的加功能,细节决定成败,古人诚不欺我。
玩法固然重要,但如果细节体验不到位,是留不住人的。近期在做细节调优略有感触,优化过后,
体验真的大不一样,流畅度整体上升,一个自然的过渡总会令人感觉舒服。就这么多~

See Again~
之前
真爱无价,欢迎打赏~
赞赏码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值