惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
爱范儿
爱范儿
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
IT之家
IT之家
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
C
Check Point Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
G
Google Developers Blog
V
V2EX
雷峰网
雷峰网
美团技术团队
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
MongoDB | Blog
MongoDB | Blog
V
Visual Studio Blog
J
Java Code Geeks

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12)
团结引擎+Addressable+Instant Game打包抖音小游戏
威少小二orz · 2026-04-16 · via 博客园_首页

我们在上一篇文件中讲了团结引擎对接抖音小游戏的情况,链接如下:

团结引擎发布抖音小游戏(十万个坑已踩完) - 威少小二orz - 博客园

这篇我们主要讲加入Addressable+Instant Game之后的问题点。

1、Instant Game打包,Copy对应的CDN地址,请注意这个CDN地址是绑定UOS官方后台的CDN地址,需要在后台开启。

image

 2、在Profile配置如下:

首包资源只能选择Package,目前首包选择CDN打包会有一个文件路径找不到而被中断。

首包前缀可不填,但一般还是填一下,和Instant Game中的CDN地址一致。这是从build里走打包。

image

另外,还可以从TT的SDK工具上走打包流程,点图上的ByteGame-TT SDK Tools-Build Tool,先点构建WebGL,再点转换WebGL包。

但是我从这里走经常出现打包报错。所以建议使用上面的Build Setting里的Build。

image

3、https://dummy.dummy.dummy/问题的处理,这个问题是由于adressable的地址没有被instant game自动接管导致的,可能抖音没有进行特殊处理,在微信SDK和最新版的京东SDK里就不会有这个问题。

在Unity里创建一个.cs文件,SkipUnityLogo.cs,不需要挂在任意脚本上,只要放在工程的Assets目录下,

原理是用CDN地址来替换dummy的占位符。

如果你能很好去调整addressable的地址,也就不用管这个问题,最简单的方式是adressable都改为默认地址,这里用CDN的全地址来替换。

如果出现了地址中资源404的情况,是因为CDN那边没有上传或者没有做版本管控,这个在替换地址中去掉release_by_badge/latest这一段即能解决,但我们不要这么做,按正常方式走,接下来会说这个。

#if !UNITY_EDITOR
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Scripting;
 using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.ResourceLocations;
/**
 * 跳过unity-logo
 */
[Preserve]
public class SkipUnityLogo
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
    private static void BeforeSplashScreen()
    {
#if UNITY_WEBGL
        Application.focusChanged += Application_focusChanged;
#else
        System.Threading.Tasks.Task.Run(AsyncSkip);
#endif
    }
 
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void FixDouYinAddressablePath()
{
   Debug.Log("启动dummy替换0");
#if UNITY_WEBGL
        Debug.Log("启动dummy替换1");
         Addressables.InternalIdTransformFunc = location =>
        {
            string internalId = location.InternalId;

            // 核心:强制把 dummy 域名删掉
            if (internalId.StartsWith("https://dummy.dummy.dummy/"))
            {
                internalId = internalId.Replace("https://dummy.dummy.dummy/", "https://a.unity.cn/client_api/v1/buckets/xxxxxxxxxxxxxxxxxxxxxxxx/release_by_badge/latest/content/");
            }
             Debug.Log("启动dummy替换2");

            // 修复重复路径问题 StreamingAssets/StreamingAssets
            if (internalId.Contains("StreamingAssets/StreamingAssets"))
            {
                internalId = internalId.Replace("StreamingAssets/StreamingAssets/", "StreamingAssets/");
            }

            return internalId;
        };
         Debug.Log("启动dummy替换3");
#endif
}

#if UNITY_WEBGL
    private static void Application_focusChanged(bool obj)
    {
        Application.focusChanged -= Application_focusChanged;
        SplashScreen.Stop(SplashScreen.StopBehavior.StopImmediate);
    }
#else
    private static void AsyncSkip()
    {
        SplashScreen.Stop(SplashScreen.StopBehavior.StopImmediate);
    }
#endif
}
#endif

 4、在UOS的存储桶的页面,下载CLI工具,windows版本。

image

 下载之后,使用命令行打开,

第1步:

在cmd里输入:(根据你的路径去修改)

cd /d C:\Users\admin\Downloads\uas_win_V1.0.9 && uas.exe

 第2步输入:

(自己替换xxxx的ID,分别为uos的appid和app secret,uos后台直接复制全命令即可)

uas auth login --uos_app_id xxxxxxxxxx --uos_app_service_secret xxxxxxxxxxxx

之前是uos_app_secret ,但后面接的参数是uos_app_service_secret的,官方把字段做了一次修正

第3步输入:

(xxxxx为你存储桶的ID,也是CDN地址中v1/buckets/后面的一段)

(respath为你build结束后的webgl的目录C:\MyGame\ByteGameOutput\webgl)

uas entries sync --bucket xxxxxxxxxxxxx  respath

例:

uas entries sync --bucket xxxxxxxxxxxxx  C:\MyGame\ByteGameOutput\webgl

重点关注:后面的路径当中不可以有空格,否则CLI的上传可能会有问题。

这样会上传你当前的build里的资源,但是没有做版本管理。

第4步:增加版本管理

(xxxxx为你存储桶的ID,也是CDN地址中v1/buckets/后面的一段)

uas releases create --bucket xxxxxxxxxxxxxx --notes "LastestUpload"

这4步上传完成后,就等于资源全部上传完了。

然后用抖音扫码进入游戏,如果CDN上不这么处理,你可能拉不到新资源,每次都拉到旧版。

注意需要填写一下不缓存的资源如下:

json
xml
db
version