Addressables学习笔记0: 安装与基础界面
以防有人完全没用过Unity2018,还是介绍一下怎么安装Addressables系统吧:
1.从如图位置打开PackageManager:
2.由于Addressables系统尚未正式发布,在下图的界面中,请确认勾选了Advanced中的选项 "Show preview packages":
3.选中 "Addressables System" 条目,点击右上角的"Install"按钮即可安装。 我这里原先已经安装好了,就没有安装按钮了。
4. 由于我国网络的实际情况,有可能出现刷不出Packages列表的现象。相信阁下作为程序员,有办法解决这个问题。
5. 安装完毕后,通过如图的菜单项打开界面:
6. 该界面长这样:
7. 先不管Group是个啥玩意。我们将已有的Resources文件夹中的一个prefab拖拽到 "Default Local Group" 条目下,将这个prefab加入到该Group中:
弹出了一个提示,说Addressables系统管理的资源必须从Resources文件夹中移出来。我们点击 "Yes",资源就被移动到了提示给出的路径。
8. 这时候可以看到,Default Local Group 中多了一条内容:
9. 可以看到,Asset Address和Path列的值是一样的。我们选中该选项后点击右键,可以看到如下的操作菜单:
我们点击 "Simplify Entry Names" 可以让系统自动将Asset Address简化成Object的名字,当然你也可以手动rename给它改一个更好区分的名字。
以上内容就是各种基础操作,到这里已经可以跳过本篇接下来的内容了。下面的内容可以暂时不用看。
需要注意的是,这里的Entry必须归属于某一个Group之下;而且不能同时归属于多个Group。也就是,它的组织结构是:
一个Entry也未必要是单一的Asset,你可以将一个文件夹作为一个Entry。
Entry的名字就是你以后加载它的地址。需要注意的是,一般来说不要有相同的Entry name,就算它们是在不同的Group中。因为加载的时候,是不提供GroupName的,只需要Entry name就可以了。只要你不去修改这个名字,不论资源本体是在哪里,都可以通过这个地址加载到。这里说的资源本体,可能在StreamingAssets中、在AB包中甚至在远端服务器上。
10. 当你选中某个Group的时候,你会发现在Project窗口中也选中了一个同名的文件,其各种属性展示在Inspector面板中:
实际上,在Addressables面板显示的Group列表,其各种数据都是存储在Assets/AddressableAssetsData/AssetGroups文件夹中这个同名文件之中的。它的各种设置则是通过添加给它各种GroupSchema来设置。目前Unity官方提供了三种Schema:
ContentUpdateGroupSchema 说老实话,这个东西我不是很理解。它是用于控制资源更新的。具体来说,如果你认为这个Group在出游戏包时就应该存在(也就是不准备将它放到服务器上作为远程资源来下载)而且你也没有计划要改它,就将它的 "Static Content" 设置为 true。那么之后如果发现它里面的资源有问题,就需要比较复杂的操作才能更新它,而且更新的时候是会把被更改的资源单独提拎出来作为一个新Group的。而StaticContent==false的Group, 如果要被更新是会作为一个整体被更新的(这个说法不太严谨,可能只有打AB时将整个Group打作一整个AB的时候才是这样)。官方论坛上具体的讨论在这里。
BundledAssetGroupSchema 如果Group应该被打成AssetBundle,则应该添加这个Schema。它里面的设置选项都是控制如何将这个Group打AB包的,这里面你就可以控制该Group之中的内容是需要被打成一整个AB包还是每个Entry分别打成一个包。看起来,如果是需要频繁更新的资源,显然应该打成分散的AB包才好。这样就不会出现更改一个文件而整个Group的内容都需要更新出去了。
PlayerDataGroupSchema 这个东西看起来很奇怪,具体用途我没搞清楚。它里面只有两个property,定义如下:
/// <summary> /// If enabled, all assets in resources folders will have addresses generated during the build.
/// 渣翻: 如果设置为true, 所有在Resources文件夹中的资源都会在打包时生成为Addressables资源。 /// </summary> public bool IncludeResourcesFolders {...} /// <summary> /// If enabled, all scenes in the editor build settings will have addresses generated during the build.
/// 渣翻: 如果设置为true, 所有在 Build Settings 窗口中"Scenes In Build"列表里的Scene都会在打包时变成Addressables资源。 /// </summary> public bool IncludeBuildSettingsScenes {...}
看起来它是控制场景和Resources文件夹中那些资源的,我不明白的是为何它们是作为某个Group的Schema存在的。如果有人知道这个东西的用途或者其他任何指教,请留言告知,多谢。