云游戏 虚拟按键

当玩家在移动设备上玩端游时,需要通过键盘映射或手柄映射操作云端游戏。为提高玩家的云游戏操控体验,云游戏提供动态可配置的虚拟按键布局的能力,同时也减少你在接入过程中的开发成本和后期维护成本。

相关产品
云游戏 产品页,含版本规格、价格与购买入口。

注意:目前云游戏虚拟按键仅支持 Android 端。

一、支持说明

类型 说明
库文件 tcgui-gamepad.aar 虚拟按键拓展库。
按键类型 键盘按键(78个单击按键)。鼠标按键(左、中、右、上滚、下滚)。十字摇杆键(WDSA、上右下左)。Xbox 手柄 A、B、X、Y、Select、Start、LB、RB、L3、R3 普通点击键。Xbox 手柄延时板机键:LT、RT。(点击时在短时间内连续发多次消息,按下时消息的力度随时间递增,松开后随时间递减。)Xbox 手柄左、右摇杆键。Xbox手柄十字方向键。
编辑功能 动态添加/删除按键。动态调整按键位置、大小。增加辅助线方便定位按键。点击类按键支持修改名称,最多显示6个字符。(UI 切图等资源暂不支持动态设置。)

二、GamepadManager

虚拟按键管理类(继承 RelativeLayout)。

·注册 OnEditListener 监听虚拟按键编辑事件的回调。

·注册 IInstructionListener 监听触发按钮事件的回调。

三、关键流程说明

1. 初始化。

mCustomGamePad = new GamepadManager(this);mCustomGamePad.setEditListener();mCustomGamePad.setInstructionListener();// 按键视图应放在游戏视频视图之上,否则可能导致按键无法正常使用addView(mCustomGamePad);

2. 读取配置文件。

String mCustomGamePadCfg;mCustomGamePadCfg = readConfigFile("default_gamepad.cfg");

注意:此处代码仅演示过程,具体文件的读写由业务侧来实现。

3. 显示虚拟按键或编辑虚拟按键。

// 显示虚拟按键mCustomGamePad.showGamepad(mCustomGamePadCfg);// 进入编辑模式mCustomGamePad.editGamepad(mCustomGamePadCfg);

4. 启用手柄类按键布局。

关键类 说明
gamepad.needConnected 使用布局前判断是否为手柄按键
SDK.sendGamePadConnected 使用虚拟手柄前需调用接口通知云端启用手柄
SDK.sendGamePadDisconnected 结束虚拟手柄后主动卸载云端手柄

if (enable) { mCustomGamePad.setVisibility(View.VISIBLE); mCustomGamePad.showGamepad(mCustomGamePadCfg); // 判断是否为手柄按键 if (mCustomGamePad.needConnected()) { mSDK.sendGamePadConnected(); }} else { mCustomGamePad.setVisibility(View.GONE); if (mCustomGamePad.needConnected()) { mSDK.sendGamePadDisconnected(); }}

5. 监听编辑事件的回调。

mCustomGamePad.setEditListener((isChanged, jsonCfg) -> { if (isChanged) { // 保存编辑后的配置文件 mCustomGamePadCfg = jsonCfg; }}

6. 监听按键点击触发的事件。

mCustomGamePad.setInstructionListener(instruction -> { if (mSDK != null) { // 通过云游戏SDK发送操作指令 mSDK.sendKmEvents(instruction); }});

7. 适配与虚拟鼠标共存。

// 设置点击事件的代理,将事件传递给鼠标视图public void setGamePadTouchDelegate(IGamepadTouchDelegate delegate) { mCustomGamePad.setGamePadTouchDelegate(delegate);}mControlView.setGamePadTouchDelegate((v, event) -> { mGameView.handleMotion(event); return true;});

四、配置文件

虚拟按键的配置信息以 JSON 格式保存为配置文件,由业务侧负责管理文件的保存与读取,以此来为不同的用户提供个性化虚拟按键配置。

五、忽略混淆

打包时请设置混淆规则:

·对 Java 代码不做混淆。

-keep class com.tencent.tcggamepad.**{*;}

·对资源文件不做混淆。

tools:keep="@drawable/tcg_*"

赞 (0)
上一篇 4天前
下一篇 4天前