Unity开发微信小游戏完整流程(包括云服务器搭建部署和CDN的使用)注意!!!是完完整整的流程!!!

Unity开发微信小游戏完整流程,从Unity版本选择,到服务器开发,最后到小游戏的发布,所有流程都会详细介绍,包括一些注意事项和问题解决。

准备工作:

Unity版本选择问题

如果使用Unity团结引擎,那么可以直接进行开发(团结引擎版本,打包出去后小游戏右下角有水印,如果能接受就无所谓了),如果不使用团结引擎的话,Unity的版本选择2021版,22版本URP项目导出的小游戏会报Shader错误

Unity微信工具下载

地址:https://game.weixin.qq.com/cgi-bin/gamewxagwasmsplitwap/getunityplugininfo?download=1

云服务器和CDN(如果有云服务器和CDN需求,先备案域名!!!)

提前说明,工信部域名备案审核需要20天!!!,所以有需求的话,先把域名备案了。

云服务器网上一搜一大推,看自己选择,我使用的是华为云,以下所有服务器配置之类的都是基于华为云,别的大差不大,也可以借鉴。!

UnityWebSocket(没有后端需求可以忽略)

地址:UnityWebSocket: UnityWebSocket

因为微信小游戏仅支持wss://方式链接后端,所以需要使用UnityWebSocket

微信公众平台注册和微信开发者工具下载

链接:微信公众平台

注册账号相关信息,下载微信开发工具

Unity开发:

先导入准备工作中下载的Unity微信工具,和UnityWebSocket(没有后端需求可以忽略)。

UnityWebSocket导入时,会有一个案例,可以看看,很简单的

注意事项

第一,项目中不要使用多线程相关,不支持,可以使用Unity的协同程序或者异步函数

第二,文件系统System.IO不支持,需要使用微信SDK的文件系统,本地只读文件可以使用Resources.lod加载,Json读取数据,或者可以直接使用ScriptableObject。(这里有一点就是,导入Unity微信工具后,这个插件里面自带LitJson)

第三,System.Net不支持,改为UnityWebSocket(也支持UnityWebRequest)

第四,所有客户端能用到的URL都需要在微信公众平台-开发管理-服务器域名里面进行填写,

包括下载头像(填写一级域名即可),如果域名后有端口号,那就把端口号也一起写上

第五,微信小游戏也是需要备案的,和域名备案的时间差不多,也是20天左右。如果手里有美术设计图之类的,可以提前备案。微信公众平台-左下角-账号设置-小程序备案。

微信文件系统API使用

微信文件系统:FileSystemManager | 微信开放文档

//创建全局唯一文件管理器
public static WXFileSystemManager WXFileManager = new WXFileSystemManager();
//微信提供的一个可以让用户读写的根目录
private string rootPath = WX.env.USER_DATA_PATH;
//这里举一个例子,是我存储音乐和音效声音大小到本地的方法
private string SettingData = "Setting.xxl";
private string fileName = "/Setting";
public void GetMusicSoundVolume_WX(out float music, out float sound)
{
  byte[] bytes = new byte[8];
  //判断文件夹/或者文件是否存。如果存在,返回"access:ok"
  if (WXFileManager.AccessSync(rootPath + fileName) != "access:ok")
  {
     //‌mkdirParam‌ 是一个结构体,用于定义创建目录时所需的参数
     MkdirParam mkdirParam = new MkdirParam();
     //fileName为自定义文件夹名 注意:前面必须加@符号,不然无法创建目录
     mkdirParam.dirPath = rootPath + @fileName;
     //recursive MkdirParam 只能创建单一层级的目录,如果你需要创建多层级的目录(即递归创建目录),则需要设置recursive = trur
     mkdirParam.recursive = true;
     //创建目录
     WXFileManager.Mkdir(mkdirParam);
     music = sound = 1f;
     BitConverter.GetBytes(music).CopyTo(bytes, 0);
     BitConverter.GetBytes(sound).CopyTo(bytes, 4);
     //写入文件
     WXFileManager.WriteFileSync(rootPath+ fileName+ "/"+ SettingData, bytes);
   }
   else
   {
      //如果文件存在,直接读取就行
      bytes = WXFileManager.ReadFileSync(rootPath + fileName + "/" + SettingData);
      music = BitConverter.ToSingle(bytes, 0);
      sound = BitConverter.ToSingle(bytes, 4);
   }
}

获取自己的微信信息(名称、头像)

注:先到微信公众平台-左下角小程序名称-账号设置 找到服务内容说明

把这两个设置了

Unity中创建个界面,就是UI登录界面,加个开始按钮,自己随意设置,按钮点击事件绑定函数StartGame

using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using WeChatWASM;

public class LoaderTest : MonoBehaviour
{
    /// <summary>
    /// 用户信息
    /// 获取到用户信息后可根据需要存云端或本地持久存储
    /// </summary>
    public WXUserInfo userInfo;

    /// <summary>
    /// 是否获取用户信息
    /// </summary>
    private bool infoFlag = false;

    /// <summary>
    /// 头像材质
    /// </summary>
    public Texture2D avatarTexture;

    // Start is called before the first frame update
    void Start()
    {
        // 初始化微信SDK
        WX.InitSDK((code) =>
        {
            Debug.Log("init WXSDK code: " + code);
            // 加载用户信息
            this.LoaderWXMess();
        });
    }

    /// <summary>
    /// 加载微信授权相关信息
    /// </summary>
    private void LoaderWXMess()
    {
        // 1. 询问隐私协议授权情况
        WX.GetPrivacySetting(new GetPrivacySettingOption()
        {
            success = (res) =>
            {
                /**
                 * needAuthorization - 含义
                 * 是否需要用户授权隐私协议(如果开发者没有在[mp后台-设置-服务内容声明-用户隐私保护指引]中声明隐私收集类型则会返回false;
                 * 如果开发者声明了隐私收集,且用户之前同意过隐私协议则会返回false;
                 * 如果开发者声明了隐私收集,且用户还没同意过则返回true;
                 * 如果用户之前同意过、但后来小程序又新增了隐私收集类型也会返回true)
                 */
                // 询问成功
                if (res.needAuthorization)
                {
                    // 有隐私协议,且未授权
                    // 2. 发起隐私协议授权
                    // 弹出隐私协议询问弹窗
                    WX.RequirePrivacyAuthorize(new RequirePrivacyAuthorizeOption()
                    {
                        success = (res) =>
                        {
                            Debug.Log("同意隐私协议:" + JsonUtility
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清酒词话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值