unity版本微信小游戏对接
大约 10 分钟小游戏业务
使用说明
两份sdk
- c#的sdk:提供给游戏研发游戏内调用,主要是为了让编译正常不报错(找平台获取)
- js的sdk:打包成微信小游戏后,主要是为了实现c#的sdk方法的逻辑,平台请求及微信api相关调用(找平台获取)
sdk文件目录介绍
c#的sdk目录及文件介绍(Assets.zip)
将sdk解压放入到项目下的Assets目录中
- Plugins
- JS.jslib(js方法接口定义,跟js的cmsdk.js的方法一一对应)
- Scripts
- CMBase.cs(研发sdk调用方法类)
- CMModel.cs(model类型,返回格式定义)
- CMSDKMangerHandler.cs(方法调用封装,主要是环境区分,c#编译环境跟打包完成后运营环境方法调用)
- Wxgame.cs(调用测试案例,根据实际情况进行调用)
js的sdk目录文件介绍(jssdk.zip)
- minigame(打包后微信小游戏的文件名一般都是这个)
- game.js(需要手动引入cmsdk.js)
- cmsdk.js(平台的sdk的入口启动文件)
- cmsdk
- conf.js
- config.js(配置文件,必须要配置)
- MD5Decrypt.js(md5加密类)
- module-helper.js(返回格式定义)
- platform.js(sdk的核心逻辑)
- sdkrequest.js(请求服务端封装)
- wx.js(微信接口封装)
js的sdk的配置文件config.js说明
export default class Config{
static appkey = '这里是appkey串';//appkey平台给到,决定了对接的游戏
static appSecret = '这里是密钥';//平台相关服务端接口请求加密密钥
static INIT_URL = '平台请求初始化接口';//平台请求初始化接口
static INITBAK_URL = '平台i请求初始化接口备用';//平台i请求初始化接口备用
static gameVersion = '1.0.2';//游戏版本,跟微信小游戏送审的版本保持一致即可
}
js的sdk引入说明在小程序包根目录下有一个game.js的文件,需要在文件内增加cmsdk.js的引入,很重要
import './weapp-adapter';
import './events';
import 'texture-config.js';
import unityNamespace from './unity-namespace';
import './webgl.wasm.framework.unityweb';
import './unity-sdk/index.js';
import './cmsdk.js';
1.初始化(必接)
1.1.介绍:
所有sdk的使用的前提都是先调用初始化接口才可以使用
1.2:调用例子
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class Wxgame : MonoBehaviour
{
void Start()
{
//初始化接口调用
CMBase.InitCMSDK(res=>{
//res接口请求的返回值具体参考如下返回介绍
Debug.Log("result:"+res.result);
Debug.Log("resultMsg:"+res.resultMsg);
Debug.Log("ishavesdk:"+res.isHaveSdk);
});
}
// Update is called once per frame
void Update()
{
}
}
1.3:返回值
- 成功:
{
result: "success",
resultMsg: "success",
isHaveSdk:true
}
- 失败:
{
result: "fail",
resultMsg: "fail",
isHaveSdk:fail
}
2.用户登录(必接)
2.1.介绍:
主要是用户登录微信后获取信息后并完成平台注册及登录相关操作
2.2:调用例子
//用户登录
CMBase.CMLoginSDK(()=>{
Debug.Log("=====CMLoginSDK,start====");
Debug.Log("result:"+CMBase.result);//success,fail
Debug.Log("用户uid:"+CMBase.CmUserId);
Debug.Log("用户登录校验串:"+CMBase.MzLoginSign);
Debug.Log("登录时间戳:"+CMBase.MzLoginTimestamp);
Debug.Log("用户注册的渠道号:"+CMBase.cmChid);
Debug.Log("是否游戏内充值按钮:"+CMBase.CmshowPay);//0显示,1:隐藏充值(关闭充值按钮)
Debug.Log("用户注册投放渠道类型:"+CMBase.Cmwtchan);//如byte:字节,gdt:广点通等
Debug.Log("用户query:"+CMBase.Cmquery);//用户进入小游戏query参数,默认没有为{}
Debug.Log("gameVersionStatus:" + CMBase.CmgameVersionStatus);//1:测试,2:审核中,3:已上线
string loginres = "获取用户的,cmUserId:" + CMBase.CmUserId + ",MzLoginSign:" + CMBase.MzLoginSign + ",MzLoginTimestamp:" + CMBase.MzLoginTimestamp + ",cmChid:" + CMBase.CmChid + ",regMedia:" + CMBase.CmregMedia + ",showPay:" + CMBase.CmshowPay + ",plat:" + CMBase.Cmplat + ",wtchan:" + CMBase.Cmwtchan + ",query:" + CMBase.Cmquery;
Debug.Log(loginres);
});
3.角色上报(必接)
3.1.介绍:
用户角色上报相关
3.2.参数说明
| 参数 | 类型 | 是否必填 | 说明d |
|---|---|---|---|
| roleId | string | yes | 角色ID |
| roleLv | number | no | 角色等级 |
| serverId | number | yes | 所在区服ID(无分区填1) |
| gUid | number | yes | 用户平台uid |
| serverName | string | no | 区服名称 |
| roleCreateTime | number | no | 角色创建时间戳 |
| roleName | string | no | 角色昵称 |
| type | number | no | 角色变更事件 1:创建角色;2:角色升级;3:进入游戏;4:昵称变更** |
3.3:调用例子
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class Wxgame : MonoBehaviour
{
void Start()
{
//角色上报
//roldId:角色id,roldName:角色名称,roleLv:角色等级,gUid:用户uid平台的uid,serverId:区服id,serverName:区服名称,roleCreateTime:角色创建时间时间戳字符串
//CMBase.CMGameData(string roldId, string roldName, string roleLv, string gUid, string serverId, string serverName, string roleCreateTime,string type);
CMBase.CMGameData("1002001","托尔斯泰","8","1387106","1002","正式服,","1707111484","2");
}
// Update is called once per frame
void Update()
{
}
}
4.分享
4.1.介绍:
用户微信好友分享,及朋友圈分享
4.2:调用例子
string query = "from=foshare";//默认传递如果需要指定传递按照from=test&a=3格式传递
CMBase.CMShareSDK(query);
5.客服
5.1.介绍:
调用接口打开客服
5.2:调用例子
CMBase.CMFriendSDK();
6.充值
6.1.介绍:
调用接口调起支付
6.2:调用例子
string psid = "1000";//区服ID
string amount = "6";//充值金额
string role_id = "1001001";//角色idid
string name = "我是商品名称";//商品名称
string rolename = "我是角色名称";//用户角色名称
string desc = "这是商品描述";//商品描述
string extra = "goods_id:3";//扩展参数,这个根据实际需要发货的情况定义
//组装时间日期
string orderno_app = "这里传递用户订单号32位字符串";//游戏订单号
CMBase.CMPaySDK(psid,amount,role_id,name,rolename,desc,orderno_app,extra,res=>{
Debug.Log("payClick_result:"+res.result);
Debug.Log("payClick_resultMsg:"+res.resultMsg);
});
7.用户微信相关信息获取
7.1.介绍:
调用该接口用于获取用户微信相关信息,如用户图像,用户昵称,用户城市地区等。
7.2.参数说明
| 参数 | 类型 | 是否必填 | 说明d |
|---|---|---|---|
| type | string | yes | 按钮类型,image代表使用图标作为背景,默认传递image |
| image | string | yes | 按钮背景图片的cdn地址或图片请求地址 |
| left | string | yes | 左上角横坐标 |
| top | string | yes | 左上角纵坐标 |
| width | string | yes | 宽度 |
| height | string | yes | 高度 |
7.3:调用例子
//生产订单的传递参数
string type = "image";//生成获取用户信息的按钮类型,image代表使用图标作为背景
string image = "https://iamges";//传对应的按钮图片地址,最好是cdn地址
string left = "55";//左上角横坐标
string top = "285";//左上角纵坐标
string width = "160";//宽度
string height = "40";//高度
CMBase.CMUserinfoSDK(type,image,left,top,width,height,res=>{
Debug.Log("userinfoClick_result:"+res.result);//sucess获取成功,fail获取失败
Debug.Log("userinfoClick_resultMsg:"+res.resultMsg);
Debug.Log("userinfoClick_avatarUrl:"+res.avatarUrl);//用户图像
Debug.Log("userinfoClick_nickName:"+res.nickName);//用户昵称
Debug.Log("userinfoClick_province:"+res.province);//所在省份
Debug.Log("userinfoClick_city:"+res.city);//所在城市
Debug.Log("userinfoClick_country:"+res.country);//用户所在国家
Debug.Log("userinfoClick_gender:"+res.gender);//用户性别,0:未知,1:男性,2:女性
});
8.用户信息按钮隐藏
8.1.介绍:
跟CMUserinfoSDK这个接口是结合使用的,该sdk用于隐藏获取用户信息按钮的sdk
8.2:调用例子
CMBase.CMUserHideSDK();
9.创建显示游戏圈按钮
9.1.介绍:
该接口用于创建游戏圈和显示游戏圈按钮
9.2.参数说明
| 参数 | 类型 | 是否必填 | 说明d |
|---|---|---|---|
| left | string | yes | 左上角横坐标 |
| top | string | yes | 左上角纵坐标 |
| width | string | yes | 宽度 |
| height | string | yes | 高度 |
9.3:调用例子
string left = "20";
string top = "50";
string width = "100";
string height = "45";
CMBase.CMShowclubSDK(left,top,width,height,res=>{
Debug.Log("showclubButtonClick_result:"+res.result);
Debug.Log("showclubButtonClick_resultMsg:"+res.resultMsg);
});
10.隐藏游戏圈按钮
10.1.介绍:
用于隐藏游戏圈按钮
10.2:调用例子
CMBase.CMHideclubSDK();
11.获取玩家游戏圈数据
11.1.介绍:
获取玩家在游戏圈对应的一些数据项的数据,游戏内结合数据来进行功能引导和道具发送相关
11.2types参数说明(这个是官方微信的参数保持一致)
| type取值 | 说明d |
|---|---|
| 1 | 加入该游戏圈时间 |
| 3 | 用户禁言状态,0:正常 1:禁言 |
| 4 | 当天(自然日)点赞贴子数 |
| 5 | 当天(自然日)评论贴子数 |
| 6 | 当天(自然日)发表贴子数 |
| 7 | 当天(自然日)发表视频贴子数 |
| 8 | 当天(自然日)赞官方贴子数 |
| 9 | 当天(自然日)评论官方贴子数 |
11.3:调用例子
string types = "1,3,4,5,6,7,8,9";//参数types的说明,如果想获取多个数据就逗号分割,默认可以参数demo传递
CMBase.CMClubdataSDK(types,res=>{
Debug.Log("clubdataButtonClick_result:"+res.result);
Debug.Log("clubdataButtonClick_resultMsg:"+res.resultMsg);
for (int i = 0; i < res.clubList.Length; i++)
{
Debug.Log("clubdataButtonClick_clubList," + i + ":" +res.clubList[i]);
}
});
12.激励视频广告接入
12.1.介绍:
用于隐藏游戏圈按钮
12.2ad_md_type参数说明(广告位埋点标识名称)
| 参数 | 类型 | 是否必填 | 说明d |
|---|---|---|---|
| ad_md_type | string | yes | 默认可以传递common就是默认,游戏根据实际情况传递 |
12.3:调用例子
string ad_md_type = "common";//这个参数根据游戏实际情况来定,就是广告位的埋点标识跟平台对应好即可
CMBase.CMVideoadSDK(ad_md_type,res=>{
Debug.Log("videoadButtonClick_result:"+res.result);//成功表示播放结束并完毕,失败表示未开完关闭
Debug.Log("videoadButtonClick_resultMsg:"+res.resultMsg);
});
13.游戏公告
13.1.介绍:
用于获取游戏内公告,公告内容平台后台控制
13.2:调用例子
CMBase.CMNewnoticeSDK(res=>{
Debug.Log("newnoticeButtonClick_result:"+res.result);
Debug.Log("newnoticeButtonClick_resultMsg:"+res.resultMsg);
Debug.Log("newnoticeButtonClick_noticelist:"+res.noticelist);//公告列表,是一个json字符串列表
Debug.Log("newnoticeButtonClick_open_tips:"+res.open_tips);//公告开关0:关闭不弹出,1:开启公告(默认公告发行是关闭状态)
});
13.3:返回值
- 成功:
{
"result": 0,
"resultMsg": "success",
"open_tips": 0,
"noticelist": [
{
"id": "16",
"gid": "100",
"title": "标题一",
"content": "<p><br></p><p> 是一款西方魔幻动作类RPG游戏,在这款游戏中,玩家将扮演一名初入龙域大陆的人类战士,与神圣的远古巨龙们共同抵御强大的邪恶势力,人类勇士们在危机四伏的环境中一点点历练成长,最终成为抵御邪恶实力的重要力量。</p><p>开服时间:2023年4月11日9点<br>服务器名:25区-龙域战歌<br>测试类型:不删档测试</p><p><br></p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>",
"menu_name": "菜单名称一",
"content_img_url": "",
"update_time": "2023-04-11 09:42:33"
},
{
"id": "15",
"gid": "100",
"title": "标题二",
"content": "<p> </p><p>亲爱的勇士:</p><p> 为向您提供更为丰富的游戏内容,《龙域世界》 全服将于2023年4月6日10:30—11:30进行停服更新,届时请大家提前做好下线准备,以免造成不必要的损失。服务器开启时间将根据更新进度提前或延迟,由此给大家带来的不便,敬请谅解!</p><p>更新区服:1区-14区<br>\n\n更新时间:2023年4月6日10:30—11:30</p><p>更新内容:</p><p>1、优化息屏,优化后手机将不息屏;<br>\n\n2、优化选服页,选服页默认玩家上次登录的区服;<br>\n\n3、增加断线重连功能;<br>\n\n4、优化游戏资源,游戏更流畅;<br>\n\n5、新增寻宝玩法,每日充值,打怪掉落也可获得寻宝钥匙;<br>\n\n6、新增大陆屠龙,开启屠龙任务之后可进入第四大陆;<br>\n\n7、新增装备铭文玩法,可以第四大陆npc处参与玩法;<br>\n\n8、新增第四大陆地图数量;<br>\n\n9、新增龙之特戒,幸运戒指将合并至龙之特戒内;<br>\n\n10、新增死亡后引导弹窗;<br>\n\n11、装备图标及名称更新;<br>\n\n12、新增部分玩法公告提醒;<br>\n\n13、优化资源找回,更新后找回内容将和实际活动活动内容一致;<br>\n\n14、龙池夺宝地图替换;<br>\n\n15、推荐打宝地图机制优化,将按照当前转生等级可进入的地图推荐;<br>\n\n16、神秘商店暂时关闭;<br>\n\n17、远古遗迹第五层暂时关闭;<br>\n\n18、修复部分已知bug;<br>\n\n19、优化部分画面表现;<br>\n\n20、调整转生攻击力百分比加成;</p><p><br>\n<br>\n</p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>",
"menu_name": "菜单名称二",
"content_img_url": "",
"update_time": "2023-04-11 09:24:56"
}
]
}
- 失败:
{
result: "fail",
resultMsg: "fail",
open_tips:0,
noticelist:""
}
13.4:返回信息说明
| 参数 | 类型 | 说明 |
|---|---|---|
| open_tips | number | 公告开关0:关闭不弹出,1:开启公告(默认公告发行是关闭状态) |
| noticelist | string | 公告列表,是一个json字符串,使用的时候需要对接方自行获取解析 |
| -- menu_name | string | 公告菜单名称 |
| -- content | string | 公告内容 |
