用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#2.4 解决小游戏中Addressable报错问题

【系列文章目录】


文章目录

  • 【系列文章目录】
  • 前言
  • 一、问题分析
  • 二、解决步骤
  • 三、总结打包步骤


前言

按照之前文章的步骤做下来一切都是那么的丝滑

甚至切换到安卓工程,也只是需要重新生成一下胶水代码,就可以打包真机运行了

但是当转换成小游戏的时候却报了一个错误
用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#2.4 解决小游戏中Addressable报错问题_第1张图片


一、问题分析

这个报错内容就好像在说我根本就没有build过Addressable的包

不可能!我怎么可能犯这么低级的错误!一定是什么坑没注意到!

用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#2.4 解决小游戏中Addressable报错问题_第2张图片

经过一段的反复分析之后,我找到了问题所在了

就像报错说的那样,确实是找不到文件

而原因是文件确确实实不见了

而且连StreamingAssets都没了

Unity在打包的时候会把Addressablesettings.json等文件放在StreamingAssets文件夹里然后一起打包

打开转换工具,发现底下有个选项ClearStreamingAssets
用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#2.4 解决小游戏中Addressable报错问题_第3张图片

好家伙,就是你对吧,把这个勾去掉

再转换一次!

还是一样的报错…

查看打包出来的WebGL文件夹,发现里面的StreamingAssets这次并没有丢失

难道是转换的时候自动忽略了StreamingAssets吗?

如果是这样那运行时还存在StreamingAssets路径吗?

本着这样的想法,我打印了StreamingAseets的路径

Debug.Log("StreamingAssetsPath" + Application.streamingAssetsPath);

打印出来发现StreamingAssets的路径是

DATA_CDN+“/StreamingAssets”

一下就清晰了,我们只需要把StreamAssets文件夹整个丢到CDN上应该就可以了

二、解决步骤

可是我没有CDN可以用怎么办?

没事啊,我还有Git可以用,哈哈哈哈哈

  • 先把WebGL目录下的StreamingAssets上传到Git上

  • 在小游戏项目目录下找到game.js

    DATA_CDN填入Git的地址

      DATA_CDN: "http://192.168.1.101/Linx/addressable/raw/master/MiniGame",
    
  • 再编译一下
    编译

  • 正常运行了!

三、总结打包步骤

总结一下转成微信小游戏的打包步骤

  • 打开Addressables Group清空一下
  • 删除Library目录下的com.unity.addressables文件夹
  • 构建一下Addressable资源
  • 上传资源
  • 运行测试
  • 关闭Unity,清理Library下的il2cpp_cacheIl2cppBuildCache两个文件夹
  • 打开Unity,使用插件转换为小游戏
  • 将TS工程中编译出来的bundle.js从Addressable构筑目录移动到Resources目录下(之后记得还原)
  • build puerts.js for minigame
  • 在小游戏工程中的game.js添加一行require('puerts-runtime.js')

你可能感兴趣的:(unity,游戏,游戏引擎)