GameFrameWork转WebGL微信小游戏

2023-10-28 22:10

本文主要是介绍GameFrameWork转WebGL微信小游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以GameFrameWork的Demo–StarForce + Windows系统举例说明(Mac可以看下这个)。
先声明本过程记录的是以CDN方式加载首包资源的。因为使用包内加载的方式遇到了未能解决的问题:在微信开发者工具中会报错,跑不起来。但是使用Unity直接Build And Run的话是可以在chrome中正常运行的,所以问题应该是发生在从Unity转换到微信小程序的过程中,但是这个过程就不是很好排查,暂时放弃这种做法。(如果没有CDN的话,可以先使用微信提供的云服务将就一下)

一、工具准备

1)首先是Unity以及WebGL Support Package,以前没用过WebGL的容易忘记转换到WebGL平台。至于Unity版本的话,似乎没什么要求,我自己使用的是2021国际版的。
2)微信支持Unity的C# SDK以及微信开发者工具。这两个下载链接都是从微信文档里拿过来的,不保证能下到最新版的,可以去微信文档这里找下。
3)就是最开始提到的StarForce项目,项目要是跑不起来的话,可以去FAQ页面看一下,大概率是从Git往下拉项目时,缺了submodule。
4)将微信的SDK导入到Unity项目中,这里可能会因为微信和GF都使用了某些dll导致Unity报错。删掉两个重复当中的一个再重启下Unity就可以了。

二、微信开发相关的注册工作

按照微信官方文档这里的步骤,先使用邮箱注册一个开发者账号,并完善项目信息。PS:最好把注册完成以后的appID保存到一个方便获取的地方,不然以后用到还得登录到这个页面,有点烦。

三、关于StarForce工程的调整

1)去掉FileSystem
因为WebGL不支持虚拟文件系统,所以需要将其删去
在这里插入图片描述
从项目中找到ResourceCollection.xml这个文件,将其中FileSystem相关的内容都删掉。

2)资源加载方式修改
打开ResourceEditor将资源从默认的LoadFromFile改为LoadFromMemory
在这里插入图片描述
然后将Resource组件上ResourceMode也修改成Package
在这里插入图片描述
3)资源打包
使用ResourceBuilder工具将资源打包
在这里插入图片描述

在这里插入图片描述
打包完成以后,找到资源输出路径下的Package文件夹,将这个文件夹下面的WebGL里的所有资源都复制到Unity的StreamingAssets路径下。
在这里插入图片描述

四、导出成微信小游戏

1)先填写转换成微信小游戏所需的必要信息
在这里插入图片描述
这里需要说一下,一开始考虑到这个项目资源比较小,而且是在做测试,就不需要cdn了,直接使用小游戏包内的首包资源加载方式。但是导出成微信小游戏以后,在微信开发者工具中跑起来以后,总是报错说URL不合法:file:/StreamingAssets/GameFrameWorkVersion.dat
在这里插入图片描述
看到这个报错,以为是路径的问题,因为webgl拿不到StreamingAssets路径。但是从微信的sdk里发现StreamingAssets的路径是拼接起来的。
在这里插入图片描述

在尝试了一段时间之后,发现还没有人记录关于这个报错的情况。于是转而使用cdn加载方式(因为关于不使用CDN加载方式的资料太少了,而且游戏资源多了之后肯定是要用CDN加载方式的,所以就不使用游戏包内加载的方式了。)。如果还没有cdn的话,可以先把游戏资源CDN这一项空着,到后面可以再填。

2)使用微信开发者工具,打开刚才转换完成的项目
在这里插入图片描述
点击导入,选中之前填写的导出路径(比如,我填的就是D:/WorkSpace/WeiXin)下面的minigame文件夹,这里别选错了。加入要是选错了,跑起来会报错说没有game.json文件。
在这里插入图片描述
在导入的时候,会让你选择是否使用微信云服务功能,如果你没有cdn的话,可以在这里选择使用。只不过微信这个云服务只有首月免费,后面每个月都会收费,如果想关闭的话,直接把云服务环境删掉就行(删掉的方法可以去看别的教程)。而且,它还没有文件的gzip压缩功能,每次运行,都会报错说,你的cdn没有开启gzip,会增加xxx文件加载耗时。因为我这里已经开了云服务,所以没有选项了。
在这里插入图片描述
另外,第一次运行的话,会报个错,说缺少某个插件,报错信息后面就跟着安装插件的按钮,直接安装就可以了。

2)CDN地址设置(如果已经设置过的话,可以跳过这部分)
a.如果使用的不是微信云服务的话
直接在game.js文件中找到DATA_CDN字段,将你的cdn地址填入引号里
在这里插入图片描述
b.如果使用的微信云服务的话
在这里插入图片描述
点击云开发按钮,打开云开发页面并跳转到存储标签。红框里的文件是将之前填写的导出路径(比如,我填的就是D:/WorkSpace/WeiXin)下面的webgl文件夹里的StreamingAssets和.webgl.data.unityweb.bin.txt上传到微信云。点击任意一个文件,会在窗口右侧弹出文件的详细信息,其中的下载地址就是该文件的cdn地址,我们只需要到webgl的路径就够了,比如这里,我们只需要复制https://636c-cloud1-9gcpq0rbc40e9e1a-1320049616.tcb.qcloud.la/webgl/ 这段就可以了,然后把这个地址填写到game.js文件里就可以了(和不是用微信云服务的操作是一样的)
在这里插入图片描述
然后将微信开发工具的缓存清掉,重新运行一下就可以了(养成勤清理缓存的习惯就对了,省得因为缓存导致问题)。
在这里插入图片描述

五、流程总结

1)整个转换流程还是以修改资源加载方式为主,然后打包资源,并把资源复制到Unity的StreamingAssets路径下。
2)然后使用微信工具,将Unity项目转换成小游戏类型。
3)再把转换以后的项目中的资源传到CDN上,以供运行时拉取。

六、关于微信工具的优化建议

在这里插入图片描述
1)关于分包
实际上微信开发工具自带了分包插件
在这里插入图片描述
但是按照插件的使用教程,第一步就卡住了,插件一直提示 “当前项目未生成symbols文件,请升级转换插件版本重新导出”。确认完开发工具和插件都是最新版之后,发现没什么解决方法,清理缓存也不起作用。最后尝试新建工程,发现终于可以了。另外也发现了插件自带的教程和git上的教程有那么一miumiu的区别。但是目前还没找到手动生成symbol的方法。
在这里插入图片描述
补:关于这个插件遇到了一下新的问题。这个插件装上以后,项目里生成了.plugincache文件夹。
在这里插入图片描述
但是因为这个文件夹是在project.config.json中的 packOptions.ignore 字段中被默认忽略的,所以运行起来以后,会有报错说这两个文件被过滤掉了,无法上传。在这里插入图片描述
那对应的就有两种解决方法:
a.删除忽略这个文件夹的语句
删掉以后发现,这个文件夹还蛮大的,导致包体超出上传限制,所以放弃使用
b.强行包含这两个文件,但是不知道为什么也没起作用
在这里插入图片描述

其实还看到了第三个方法:把过滤无依赖文件的属性关掉,但也没有用
在这里插入图片描述
至于后面是如何解决的,只能说是玄学。因为是在测试过程中,所以频繁的修改项目并导出成webgl,没注意从哪一次导出之后,这个问题就不出现了。
再补:.plugincache这个文件夹不要删,删掉以后可能会导致无法安装插件的情况

2)至于后面的建议,需要再找些资料看看,后面整理一下再放上来。

【参考资料】
【1】这篇讲了很多Mac适配的问题
【2】
【3】

这篇关于GameFrameWork转WebGL微信小游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/296274

相关文章

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给