有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
当玩家在移动设备上玩端游时,需要通过键盘映射或手柄映射操作云端游戏。为提高玩家的云游戏操控体验,云游戏提供动态可配置的虚拟按键布局的能力,同时也减少您在接入过程中的开发成本和后期维护成本。
注意
目前云游戏虚拟按键仅支持 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_*"