unity版本微信小游戏对接

51游戏大约 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
roleIdstringyes角色ID
roleLvnumberno角色等级
serverIdnumberyes所在区服ID(无分区填1)
gUidnumberyes用户平台uid
serverNamestringno区服名称
roleCreateTimenumberno角色创建时间戳
roleNamestringno角色昵称
typenumberno角色变更事件 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
typestringyes按钮类型,image代表使用图标作为背景,默认传递image
imagestringyes按钮背景图片的cdn地址或图片请求地址
leftstringyes左上角横坐标
topstringyes左上角纵坐标
widthstringyes宽度
heightstringyes高度

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
leftstringyes左上角横坐标
topstringyes左上角纵坐标
widthstringyes宽度
heightstringyes高度

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_typestringyes默认可以传递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>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 是一款西方魔幻动作类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>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 为向您提供更为丰富的游戏内容,《龙域世界》 全服将于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_tipsnumber公告开关0:关闭不弹出,1:开启公告(默认公告发行是关闭状态)
noticeliststring公告列表,是一个json字符串,使用的时候需要对接方自行获取解析
-- menu_namestring公告菜单名称
-- contentstring公告内容