主题
Skip to content
以下为一整个预加载场景的组件代码,包含了 1.1~1.3 的示例集合。具体有 6 个步骤,请依照 STEP 的顺序阅读
javascript
import { _decorator, Component, director, JsonAsset, Node, Toggle } from "cc";
import MainLoad from "./resources/SDKResources/MainLoad/scripts/MainLoad";
const { ccclass, property } = _decorator;
@ccclass("DEMO_PreloadScene")
export class DEMO_PreloadScene extends Component {
@property(MainLoad)
private SDKComp: MainLoad = null;
@property(Node)
private startGameNode: Node = null;
@property(Node)
private aapGroup: Node = null;
@property(Toggle)
private aapCheckBox: Toggle = null;
@property(JsonAsset)
private gameCfgJson: JsonAsset = null;
/**
* FAQ
* 本工程仅供示例, 请放入获取的SDK包并调整参数打包运行. 部分功能(ex. 广告支付)需与对接人员开通才可调试
* 1. MainLoad预制件必须挂载于预加载场景根节点下, 且位于节点树的最下层
* 2. 请根据产品的适龄,更改UnderageLimitBtn的Age属性
* 3. 微信隐私同意后,一旦SDK上报给渠道, 后续每次进入都将是同意状态, 就算后面上报渠道拒绝了也是(一经同意, 清数据前永久生效)
* 所以建议启动时读取到同意状态后,对勾选框做冻结或隐藏
* 4. 请在最后关头再使用changeStatus通知SDK用户状态, 切勿在用户勾选框时反复上报
*/
onLoad() {
// (如有)进行游戏的一些前置加载操作。请勿在SDK初始化完成前调用任何SDK方法, 或展示初MainLoad外的预制件
console.log("游戏前置加载完成, 开始载入SDK");
// STEP1: 加载SDK
this.SDKComp.loadSDK({
noSubpack: false, // 建议将SDK分包使用. 如果未分包则设noSubpack为true
name: "SDKlibs", // SDK分包名称, 仅在noSubpack为false配置
suCallback: () => {
console.log("业务层 - SDK代码加载成功");
+
// STEP2: 初始化SDK
GameHelper.init({
ticket: `XXXXXXXXXXXXXX`, // 解密秘钥, 从ticket.txt中获取
gameConfig: this.gameCfgJson.json, // 配置信息文件, 自行从JSON中读取对象传给SDK
appVer: "1.01", // 游戏版本号, 从CP对接同事获取
packageName: "com.test.weixin", // 包名,从CP对接同事获取
statName: "hello", // 统计名称,从CP对接同事获取。如没有则不传
debugMode: true, // 打开SDK调试模式, 可看到SDK内部打印。上线前必须关闭!
serverData: false, // 是否启用服务器游戏数据保存。有需求打开前请与对接同事联系
saveServDataKeys: ["XXXXX", "XXXX"], // 服务器游戏数据保存KEY。有需求打开前请与对接同事联系
// 分享信息配置,需要配置main属性和玩法key对应的分享信息
shareInfo: {
main: "XXX",
XXX: {
title: "分享文案",
imageUrl: "远程分享图片地址",
},
},
callback: () => {
// STEP3: 初始化隐私
GameHelper.AAP.startProcess((_isAgree) => {
console.log("SDK确认当前用户的隐私状态为: ", _isAgree);
// STEP4: 该步骤后,SDK初始化完成, 可展示所有启动页的元素(合规元素等)
// 需要根据从SDK获取到的隐私状态,对合规元素以及其他元素等进行逻辑控制
// 以下对勾选框的控制仅供参考, 请于CP对接同事确认方案
if (_isAgree) {
console.log("显示所有隐私元素, 选择框为冻结状态");
this.aapCheckBox.interactable = false;
this.aapCheckBox.isChecked = true;
this.startGameNode.active = true;
this.aapGroup.active = true;
} else {
console.log("显示所有隐私元素, 选择框为可选状态");
this.aapCheckBox.interactable = true;
this.aapCheckBox.isChecked = false;
this.startGameNode.active = true;
this.aapGroup.active = true;
}
// STEP5: 必须上报隐私元素展示给SDK
GameHelper.AAP.changeStatus(GameHelper.AAP.Status.SHOW);
console.log("执行其他业务逻辑");
});
},
});
},
failCallback: () => {
console.log("业务层 - SDK分包加载fail回调执行");
},
});
}
public startGame() {
// STEP6: 必须上报隐私的最终状态给SDK
if (this.aapCheckBox.isChecked) {
// 这里是《最后关头》执行的代码, 才允许执行AAP的改变同意/拒绝状态。《不能》在勾选或取消勾选时上报
console.log("最终上报用户隐私状态: ", this.aapCheckBox.isChecked);
GameHelper.AAP.changeStatus(GameHelper.AAP.Status.AGREE);
} else {
// 例子1:不允许未勾选状态下点击进入游戏
return;
// 例子2:进行弹窗挽留
// return console.log("进行提示等操作, 告诉用户必须要勾选才可进入游戏");
// 例子3:退出游戏
// GameHelper.AAP.changeStatus(GameHelper.AAP.Status.DISAGREE);
// GameHelper.CCComFun.exitGame();
}
// 执行业务其他最后关头的代码
console.log("执行其他最后关头的代码");
director.loadScene("DEMO_Home");
}
/** 自行绑定该方法到隐私政策按钮 */
public aapOpenPrivacy() {
console.log("触发展示隐私政策");
GameHelper.AAP.openLawItems(0);
}
/** 自行绑定该方法到用户协议按钮 */
public aapOpenXieyi() {
console.log("触发展示用户协议");
GameHelper.AAP.openLawItems(1);
}
}
点我快速对接


