小包化配置
Addressable 配置
设置资源为 addressable,同时也意味着给资源配置 address 属性。
方法 1: 打勾 Addressable
选中一个资源对象,查看 inspector 面板(文件夹也可以)
- 打勾 Addressable 即可 方法 2: 拖动资源到一个 asset group 中
打开设置窗口:ByteGame > StarkMini > Open Addressables Config
从 Project window 拖动资源到任意一个 asset group 中



说明 1:文件夹 Addressable 后,其包含的自动列入的 asset 的 address 规则为:
- 文件夹 address + 子目录名 + 资源文件名 + 后缀
- 每个被自动列入 asset 在 AA 配置窗口中会列为灰色的 address,它们的 address 是按规则自动拼接的,不能在此处的窗口中直接修改。
说明 2:默认设置下,拼接的 address 都带有文件名后缀(括展名),可以通过工具选项,改为不使用后缀(括展名):

说明 3:文件夹、目录本身并不是、也不会变成 Unity 资源 Asset,实际效果为目录内所有文件,被标记为 Addressable Asset。
说明 4:要批量加载文件夹中所有 Addressable asset,推荐使用 label:
- 编辑器中设置 label,然后代码中使用 label 作为参数,通过 LoadAssetsAsync 加载。
- 参见
说明 5:上级文件夹已经 Addressable 的情况下,也允许对其下单个资源 asset 单独设置 addressable。
- 单独配到 asset 分组、且允许在不同 group 分组。
- 此时在 AA 配置管理中,该 Addressable 文件夹的树状结构下,将排除这样单独设置了 address 的条目。
说明 6:如果 Addressable 文件夹下的 Scene 资源,仍被 Build Settings 中 Scenes In Build 配置为打开
- 那么不会被自动列入此文件夹下的 addressable 资源条目,它们将被视为使用传统 Resource 相同方式打包和加载。
- 若需要被列为 addressable 资源,需要在 Scenes In Build 配置中删除、或取消勾选。
另外,其他 Addressable 资源目录管理问题,可以参考
批量 address 改名
可以单选、或多选配置窗口中的 assets,右键菜单,快速批量重命名资源 address

group 中 address 搜索
可以在配置窗口右上角,搜索所有匹配的 asset


label 配置
可以 用 shift, ctrl 多选一批资源后,在右边 Labels 列,选择配置 label(打标签)


profile 配置
通过 profile 切换,来整体动态切换所有 Group 属性,方便在不修改各个 Group 属性的情况下,满足切换打包路径、加载 url、是否全包的选项。
初始配置推荐:
可以通过提示推荐的按钮创建常用配置:


Profile 配置档管理工具:
在 Addressable 配置窗口中,点击: Profile 按钮 > Manage Profiles

- full: 完全本地资源,即所有 bundle 都打入 apk,用于不走任何网络加载的游戏逻辑调试。
- localhost: 使用局域网配置,一般用于编辑器本地调试、手机设备局域网调试。
- ttcdn: 使用真实外网 CDN,用于发布公开测试版本、正式线上版本。
Profile 的变量属性示例和说明


BuildTarget: 正常不需要修改,按默认设置即可。
- 注:默认设置为引用当前 Unity 工程设置的 target platform,例如:
Android
LocalBuildPath 、LocalLoadPath :正常不需要修改,都按默认设置即可。
- 注:两个都是 "Local",区别是一个用于 Editor 编辑器 Build 时,一个用于 Runtime 运行时 Load。
- 注:默认均设置为 Addressable 的特殊目录: LocalBuildPath 使编辑器在构建 AA 资源时,将 local 的 bundle 输出到特殊目录,最终游戏 Build 打包时,以 Android Apk 为例,会把这些 bundle 打包到 Apk 内(assets/aa/Android)
- 一般对 local 的 group 分组、即 Build & Load Path 设置了 LocalBuildPath、LocalLoadPath 时起效。
RemoteBuildPath:编辑器 Editor 下 Build - 构建 AA 资源时,输出 bundle 的本地目录。
- 例如,若 RemoteBuildPath 设置为:
ServerData/ttcdn/[BuildTarget]
- 最终解析后,每次【构建 AA 资源】时的输出 bundle 本地目录,会是例如:
/ServerData/ttcdn/Android
- 这个变量会对所有 remote group 分组、即 Build Path 设置了 RemoteBuildPath 时起效。
RemoteLoadPath :Application 运行时加载 bundle 的 url。
例如:“localhost”这个 profile 的 RemoteLoadPath 设置为:
http://[PrivateIpAddress]:[HostingServicePort]
- 引用了 Hosting 工具提供的变量:Ip 地址、Port 端口
- 使用参考:
- 使用参考:下文:以选择激活:“localhost”的 profile 为例
例如,“ttcdn”这个 profile 的 RemoteLoadPath 设置为:
{AddressableConfig.CdnRootUrl}/[CdnProjPath]/[BuildTarget]
- 其中 {AddressableConfig.CdnRootUrl} 用到下面说明的 *花括号 {}** 功能*。用来运行时动态解析一个此工程用的 CDN 服务器 url。最终会解释为例如:
https://xxx.yyy.com/obj/abc
- 其中 [CdnProjPath] 用到下面说明的 *方括号 []** 功能*。用来配置一个此工程用的 CDN 服务器上的子目录。最终会解释为例如:
YourGameName/test
- 其中 [BuildTarget] 引用上述提到的 target platform,最终会解释为例如:
Android
- 以上全部拼接后,最终整个 RemoteLoadPath 会解释为例如:
https://xxx.yyy.com/obj/abc/YourGameName/test/Android
方括号 []:
- 自动读取解析在 Editor 编辑器下的变量,并且在 build 构建时确定值。
花括号 {} :
- 运行时自动读取解析代码中静态变量或属性,只会在运行时动态解析。
注:花括号{AddressableConfig.CdnRootUrl}
会读取AddressableConfig
类的 public static 属性:CdnRootUrl
;
AddressableConfig 类在 StarkMini 微端库中有实现 Example。
你也可以自己实现一个类似的类和属性、返回自己的 cdn url string。
注:方括号[CdnProjPath]
读取 profile 变量:CdnProjPath,
可以配置为例如:
- YourGameName/debug/dongzhou
- YourGameName/dev
- YourGameName/test
- YourGameName/release
注:StarkMini v1.3.0 及以前的版本提供的 Example 源代码 AddressableConfig.cs 中有个 CdnProjPath 属性,和这里方括号[CdnProjPath]
不是同一个对象,容易混淆,需注意。
注:方括号 [Version]
读取 Version 变量,会读取当前工程的 PlayerSettings 的版本号。
- 以选择激活:“localhost”的 profile 为例:
Asset Group 的属性面板中,可以看到:

- Build Path:当前解析为
ServerData/local/Android
- Load Path:当前解析为
http://x.x.x.x:5xxxx
对应 profile 中“localhost”解析前的设置:
- RemoteBuildPath:
ServerData/local/[BuildTarget]
- RemoteLoadPath:
http://[PrivateIpAddress]:[HostingServicePort]
此时,使用工具菜单,执行“构建 AA 资源”:


- 而选择激活:“full”的 profile 时: Build 构建资源时,bundle 输出到内部特殊目录。
Build Apk 包时,内部特殊目录的 bundle 会放入 apk 内(全包)。
Load 加载时,这些 bundle 会从 apk 内部解压读取。

