Unity Addressables 笔记01

一、为什么使用Addressables ?

Addressables 系统提供用于组织和打包应用程序内容的工具和脚本,以及用于在运行时加载和释放资产的 API。

当您将资产设置为“可寻址”时,您可以使用该资产的地址从任何位置加载它。无论该资产驻留在本地应用程序还是内容交付网络上,可寻址系统都会找到并返回它。

采用可寻址系统来帮助在以下方面改进您的项目:

  • 灵活性:可寻址对象使您可以灵活地调整资产的托管位置。您可以使用应用程序安装资产或按需下载它们。您可以在项目的任何阶段更改访问特定资源的位置,而无需重写任何游戏代码。

  • 依赖关系管理:系统会自动加载您加载的任何资产的所有依赖关系,以便在系统将内容返回给您之前加载所有网格、着色器、动画和其他资产。

  • 内存管理:系统卸载和加载资产,自动计算引用,并提供强大的性能分析器来帮助您发现潜在的内存问题。

  • 内容打包:由于系统映射并理解复杂的依赖关系链,因此即使您移动或重命名资产,它也能高效地打包资产包。您可以为本地和远程部署准备资产,以支持可下载的内容并减小应用程序大小。

项目文件关系图

二、构建与配置

build 操作路径-Window-AssetsManagement--Addressables-Groups;

如图依次New Profiles[看不到将窗口横向拉大] Tools PlayModeScript Build

点击右侧Build-出现弹窗

Build-->newbuild-新构建,update a previous build更新,cleanbuild 清除

Play Mode script--选项

  1. Use Asset Database ,在编辑模式下无需构建。

  1. Simulate Groups,无需构建,用来模拟本地和远程加载的分析模式,配合事件查看器Event Viewer.

  1. Use Existing Build,再运行项目时需要构建一次。注意远程地址必须与profile配置一致

Build--注意事项资源打包分两种

  1. Local content 如果使用其他路径,在打包时将本地资源文件放到Assets/StreamingAssets中

  1. Remote content,如果搭建远程资源服务器,将remotecontent path下的文件拷贝到服务器。

Build--选项

Default Build Script 根据组、配置文件和可寻址对象系统设置执行完整内容构建。

Update a Previous Build: 执行差异内容构建以更新以前创建的内部版本。

Play Mode scripts从技术上讲,播放模式脚本是构建脚本,用于控制编辑器在播放模式下访问内容的方式。有关详细信息

Addressables.BuildPathAddressables.RuntimePath 的含义,构建与运行的地址。

远程构建目录配置

1、查看当前路径配置-Window-AssetsManagement--Addressables-Settings[即AddressableAssetSettings文件]

查看本地与远程配置的路径。选中BuildRemoteCatalog,会出现Build&LoadPaths

2、修改路径配置 【这里也包括一个配置管理的功能】

Window > Asset Management > Addressables > Profiles,

未完待续.........................

路径配置以及本地服务的测试案例编写

拓展阅读
BuildPipeline.BuildPlayer
public class BuildPlayerExample : MonoBehaviour
{
    [MenuItem("Build/Build iOS")]
    public static void MyBuild()
    {
        BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = new[] { "Assets/Scene1.unity", "Assets/Scene2.unity" };
        buildPlayerOptions.locationPathName = "iOSBuild";
        buildPlayerOptions.target = BuildTarget.iOS;
        buildPlayerOptions.options = BuildOptions.None;

        BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);
        BuildSummary summary = report.summary;

        if (summary.result == BuildResult.Succeeded)
        {
            Debug.Log("Build succeeded: " + summary.totalSize + " bytes");
        }

        if (summary.result == BuildResult.Failed)
        {
            Debug.Log("Build failed");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/zhuangjialo/article/details/129438756