自2022年9月6日起,本文档站不再更新内容,相关文档已迁移至全新“抖音开放平台”前往

小包化配置

Addressable 配置

设置资源为 addressable,同时也意味着给资源配置 address 属性。

方法 1: 打勾 Addressable

选中一个资源对象,查看 inspector 面板(文件夹也可以)

  • 打勾 Addressable 即可 方法 2: 拖动资源到一个 asset group 中

打开设置窗口:ByteGame > StarkMini > Open Addressables Config

从 Project window 拖动资源到任意一个 asset group 中

**方法 3: 设置一个文件夹(整个目录)为 Addressable** **关于文件夹设置为 Addressable:** (一个文件夹标记为 Addressable 后,其中 assets 都被自动设置 address)

说明 1:文件夹 Addressable 后,其包含的自动列入的 asset 的 address 规则为:

  • 文件夹 address + 子目录名 + 资源文件名 + 后缀
  • 每个被自动列入 asset 在 AA 配置窗口中会列为灰色的 address,它们的 address 是按规则自动拼接的,不能在此处的窗口中直接修改。

说明 2:默认设置下,拼接的 address 都带有文件名后缀(括展名),可以通过工具选项,改为不使用后缀(括展名):

(设置文件夹 Addressable 后的 asset address 去除文件名后缀: Removes Ext)

说明 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

搜索时勾选"Hierarchical Search",显示结果所在的 group 分组 如上图所示

label 配置

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

后续代码使用时,可以用这个 label 作为参数,一次加载一批它对应的所有资源。 如上图所示

profile 配置

通过 profile 切换,来整体动态切换所有 Group 属性,方便在不修改各个 Group 属性的情况下,满足切换打包路径、加载 url、是否全包的选项。

初始配置推荐:

可以通过提示推荐的按钮创建常用配置:

也可以通过菜单:ByteGame > StarkMini > Create Sample Addressable Profiles** **创建常用配置: 如上图所示

Profile 配置档管理工具:

在 Addressable 配置窗口中,点击: Profile 按钮 > Manage Profiles

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

Profile 的变量属性示例和说明

如上图所示

BuildTarget: 正常不需要修改,按默认设置即可。

  • 注:默认设置为引用当前 Unity 工程设置的 target platform,例如:Android

LocalBuildPathLocalLoadPath :正常不需要修改,都按默认设置即可。

  • 注:两个都是 "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 资源”:

Build 构建资源后,将会得到 Unity 当前工程根目录下,bundle 打包输出在你的本地 Unity 工程目录中的 "ServerData/local/..." 目录,与上面解析的 **Build Path 一致**(`ServerData/local/Android`): build 资源输出,这些文件不会在打包进 apk。
  • 而选择激活:“full”的 profile 时: Build 构建资源时,bundle 输出到内部特殊目录。

Build Apk 包时,内部特殊目录的 bundle 会放入 apk 内(全包)。

Load 加载时,这些 bundle 会从 apk 内部解压读取。

build 资源输出 打包进 apk 内的文件构成情况
点击纠错
该文档是否对你的开发有所帮助?
有帮助
没帮助
该文档是否对你的开发有所帮助?
有帮助
没帮助