常见问题:
- 游戏刚启动,弹框提示:"No scene found! Please add at least one scene to build settings."
- 当Build settings里面的Scene列表为空时,Autostreaming不会自动打包当前打开的场景,请确认项目的build settings-> Scene列表是否为空。
- 游戏启动后,部分或全部纹理不变清晰,并且log中有大量的下载报错。
- 开启AutoStreaming后,如果游戏用到了某个Streaming的资源,但UOS CDN服务器上没有,则会出现这种情况。 请检查TextureStreaming页面是否有点生成AB, 或者Library目录下AutoStreamingCache文件夹是否有被删除删除。 重新生成AutoStreaming的AB后,请重新打包游戏
- 游戏内有从AB和Resources文件夹加载资源的逻辑,做了streaming后该如何加载?
- 对于Texture2D和SpriteAtlas资源,AutoStreaming使用了一个小分辨率的资源替换了原资源; 对于AudioClip、Mesh和AnimationClip资源,AutoStreaming仅抽取了其中的重度数据,Asset对象依旧存在, 因此可以按照原来的逻辑加载AB和Resources内的Asset。 但做了streaming之后,Asset内的数据不可立即访问, 例如Mesh.vertices,Texture2D.GetPixels(),Texture2D.GetWidth(),AudioClip.LoadAudioData() 等接口的调用可能会返回null或者不正确的结果。
- 在下载与安装网页点击"Hub下载",跳转到了Unity Hub,但没有弹出下载页面。
- 仅中国版Unity Hub支持从Hub下载InstantGame定制版。
- 如果不小心覆盖了UOS CDN上的版本怎么办?
- 如果操作失误,上传文件到UOS CDN时覆盖了已有版本的badge,请前往UOS CDN网站,根据时间从Release中找到,被覆盖的版本,将Badge标签设置回来。
- 使用AutoStreaming后,spine的2D动画出错
- 如使用了旧版spine插件的工程,所有spine图集必须勾选BlurPlaceholder,否则会出现显示错误; 因此推荐将spine插件升级到3.7.xx(2019-05-06)之后的版本。
- 游戏首次进入下载并存储的文件在第二次打开时不见了
- 微信小游戏不支持WebGL默认的indexDB文件存储,因此通过C# API存储的文件只会临时存在于内存当中,而不会持久化到手机存储中,退出游戏后即清理。需要持久保存文件,请使用微信SDK提供的文件接口
- 小游戏需要本地存档,该如何保存
- 小游戏存档建议保存在服务器,避免丢失。本地存档请文件使用微信SDK提供的文件接口保存,也可以通过Unity PlayerPrefs保存。
- 小游戏在手机上运行时,无法进入游戏,报资源下载失败,404的错误
- 微信小游戏访问网络需要设置白名单,请点开手机右上角三个小点,找到并打开 开发调试->打开调试。或者扫码登录微信小程序网页后,前往开发管理-> 开发设置 -> 服务器域名 在request合法域名 和 downloadFile合法域名中填写用到的域名。
- 点击游戏的输入框,不弹出虚拟键盘,无法输入
- WebGL平台添加了一个开关 WebGLInput.mobileKeyboardSupport 用于控制点击输入框时是否弹出输入法,建议使用时打开,使用结束后关闭,避免性能问题。默认关闭
- 打包AB关闭了TypeTree后,在Editor中加载AB运行时,Editor经常崩溃
- Editor PlayMode中加载AB运行时,如果打包AB时禁用了typetree,并且AB中包含以下形式的monobehaviour,将导致editor发生crash情况, 无法从引擎层避免:
//问题示例monobehaviour脚本
using UnityEngine;
public class CrashDemo : MonoBehaviour
{
public int speed;
#if UNITY_EDITOR
//该序列化属性在AB中不存在,因此会导致Editor crash
public bool time;
#endif
// Start is called before the first frame update
void Start()
...
}
- 上传文件到UOS时,错误日志显示有部分文件上传失败了。
- 当遇到网络波动,或者上传文件过多超时的情况,上传可能失败。 只需要在Window->AutoStreaming->Cfg&Publish页面,重新点"Upload to UOS CDN"按钮即可,上传操作会从上一次失败的位置继续。
- 如何查看某个下载链接对应的原始资源
- 从下载链接中获取到abas文件名,然后按照Auto Streaming用法页面,反向查找原资源小节所述找到abas文件对应的原资源。
- 找不到ConvertLegacySpritePacker按钮
- 当项目的Play Settings/Editor/Sprite Packer/Mode 为Enable For Build (Legacy Sprite Packer)或Always Enable(Legacy Sprite Packer)时, Instant Game界面才会显示ConvertLegacySpritePacker按钮。
- 使用AssetBundleBuild方式打包AB时,报错"Moving file failed"
- 资源上设置了AB标签,同时又用AssetBundleBuild 的方式从代码里面打包AB,如果两边有同名字的AB,就会出现AB名字变为空字符串的问题,导致移动移动一个文件到文件夹地址失败。 可以通过运行以下代码来清理AssetDatabase中错误的AB标签数据,如果AB标签依旧需要可以完成后将meta文件改动重置回来。该问题在2021.2.5f1c303(团结backport)版本已修复,建议修复后使用新版本引擎。:
[MenuItem("InstantGame/Clear All AssetsBundle Names")]
public static void ClearAssetBundleNames()
{
var abNames = AssetDatabase.GetAllAssetBundleNames();
foreach (var abName in abNames)
{
AssetDatabase.RemoveAssetBundleName(abName, true);
}
AssetDatabase.SaveAssets();
AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate);
}
更多微信小游戏相关的问题可前往微信官网查看技术常见问题QA。