本文由 NRatel 历史笔记整理而来,如有错误欢迎指正。
1、提示 perission denied
实际原因:上传时无上传权限,即使有权限也首次必现(抖音报错不准确)
解决:增加 管理/编辑 权限
2、报错 Could not produce class with ID xxx.
原因:部分类被裁剪
若根据提示降低裁剪,可能导致包体变大
可根据提示的Class ID查找对应的类
https://docs.unity3d.com/Manual/ClassIDReference.html
如此处,65为BoxCollider
然后在项目 Assets任意目录添加 link.xml,添加内容
参考:https://docs.unity3d.com/cn/current/Manual/ManagedCodeStripping.html
<linker>
<assembly fullname="UnityEngine">
<type fullname="UnityEngine.BoxCollider" preserve="all"/>
</assembly>
</linker>
3、运行时Shader丢失,即使加入到 Always Include
原因:ab只支持LZ4, 启用BuildAssetBundleOptions.ChunkBasedCompression
4、C# this 关键字导致的报错
原因:使用 C# 的 this 关键字扩展类方法时,参数个数相同时不能生效(编辑器下未报错)。
解决:将扩展方法改名
5、警告:Couldn't create a Convex Mesh from source mesh "shitou_02." within the maximum polygons limit (256). The partial hull will be used. Consider simplifying your mesh.
原因:小游戏要求的模型面数不能超过256
6、TT.GetSystemInfo().safeArea 与 Unity Screen.safeArea 的类型不同,兼容
Iphone12下,抖音开发者工具结果
Iphone12下,Unity Simulator 结果
TT.GetSystemInfo().safeArea 返回的结果是一个自定义的结构体。
需将其转为 Screen.safeArea 的结果类型相同。
//https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/guide/game-engine/rd-to-SCgame/open-capacity/capability-adaptation/sc_webgl_screen
//注意,ttSystemInfo.safeArea 的坐标系 (以屏幕左上为原点,向右为x正方向,向下为y正方向)
TTSystemInfo ttSystemInfo = TT.GetSystemInfo();
float x = ttSystemInfo.safeArea.left * (int)ttSystemInfo.pixelRatio;
float y = (ttSystemInfo.screenHeight - ttSystemInfo.safeArea.bottom) * (int)ttSystemInfo.pixelRatio;
float width = ttSystemInfo.safeArea.width * (int)ttSystemInfo.pixelRatio;
float height = ttSystemInfo.safeArea.height * (int)ttSystemInfo.pixelRatio;
safeArea = new Rect(x, y, width, height);
计算结果如下:基本相同,height存在差异的原因可能是 ttSystemInfo.safeArea.height 返回的结果被向下取整了。影响不大。
7、色彩空间问题:
在线性空间下需修改Spine材质上的 alpha预乘 选项。
关于颜色空间,可看我这篇文章详细讲解
8、安卓WebGL2.0方案在抖音29.9.0以下不支持
9、提示:宿主为32位抖音APP,
不支持32位手机运行
10、摇一摇卡顿明显
网格数降低优化
11、真机平铺处黑线
压缩原因
12、打点: 需要开运营权限才能调试,需等待较久
认真检查事件名,是否多了空格/下划线、写错等
13、部分机器没有音效
此为抖音的bug(可能在未来某版本修复)。
图1:unity抖音sdk 针对长短音频2个处理方式。其中长音频使用了抖音API。
图2:抖音对于长音频,提供了 obeyMuteSwitch 参数,可选是否将“系统静音”应用于小游戏。
图3:obeyMuteSwitch 在ios上不生效。
---------------------------------------------------
故:unity抖音小游戏,短音频受“系统静音”影响,而长音频(背景音乐)不受“系统静音”影响。
14、屏幕右上角 出现了一个透明按钮,显示“UI”字样
原因:真机环境也调用了 MockSetting.OpenAllMockModule(); 去掉即可。
15、安卓平板震动 和 部分安卓机器陀螺仪功能 不生效(暂未解决)
C# 中的CanIUse 接口仅代码sdk是否支持此接口,不代表机器拥有此功能,故不能fallback
16、部分安卓机运行黑屏
原因:使用了非文档说明的,经过验证的Unity版本。
将团结改为Unity2021.3.16f1c1后解决
17、Unity编辑器下,以ab方式运行 Shader丢失(大面积粉红色),即使加入 Always Included 也没用。
在团结 和 Unity 上都是。
(应该不是unity版本问题,换2021.3.42f1c1后仍有问题)。
(可能是 Windows下WebGL对GL有要求,类似安卓需要增加 -force-gles,而WebGL不知道应该怎样)
(暂未解决)(只是编辑器下以ab运行的问题,等后续有空细查)
18、安卓添加桌面后无法打开
原因:Android打开的是线上版,没有发布是无法打开的。见下方社区问答。
19、头条无法运行。
原因:发布为 webgl2.0 的抖音游戏,仅支持抖音系。
20、头条火山等扫测试码无法直接打开
正常,打开的是入口列表,点入口再进即可。
21、ipad无法震动
ipad不支持震动
22、插屏广告2个奇怪报错。
原因1:sdk可能太旧了,升级到最新后此问题消失了。
原因2:我的使用流程也不对。抖音的思路是即时 Create->Load->Show->Close->Destroy
不要像激励视频一样预加载,再展示。
60秒间隔指调用 TT.CreateInterstitialAd 的间隔,而不是调用 Show 的间隔
(抖音的客服比较迷糊,随口乱说...,导致长时间调不好)
(一定要去参考js侧示例的用法,C#侧的示例过于简单)。
23、分包尝试
测试和制作人一直感觉启动慢。
Unity项目的小游戏包在20M左右,如果网速2m/s,则下载过程就需要10秒。
这其中,代码就占一半,unity的代码包比较大,即使开了最大等级的裁剪,也没有太多压缩空间(只能减小2M左右)
代码分包的话是提升比较明显的。
但是缺点也很明显:就是发正式包的时候得手打、手动跑出双端首包代码。没办法自动打包了。
代码分包详见: