UPL2-15——Asset Loading 模块

Asset Loading 模块

Asset Loading(资源加载)模块是用来监视和分析 游戏运行时资源加载行为 的,它对性能调优、资源管理和加载策略优化具有重要意义
它主要是用于统计游戏在运行时加载资源所消耗的时间和调用信息
可以配合我们上节课学习的 File Access(资源访问)模块一起使用

Asset Loading 中各参数功能的含义和作用

image

  • 资源加载(Asset Loading)监视视图

    image

    • Other Reads(其他读取): 其他类型资源的读取操作,无法归类到下列类别时归入此项。例如某些 ScriptableObject​、AssetBundle 元数据等。

    • Texture Reads(纹理读取): 加载贴图(Textures)时的读取次数和数据量,比如 .png​、.jpg​、.dds 等纹理资源。

    • Virtual Texture Reads(虚拟纹理读取): 虚拟纹理系统加载纹理数据时的读取量(Unity 的 Virtual Texturing 功能开启时有效)。

      读取的数据通常是分片(Tiles)的纹理内容。

    • Mesh Reads(网格读取): 加载网格资源(Mesh)的操作,如 .fbx​、.obj 中的几何信息(顶点、索引、UV 等)。

    • Audio Reads(音频读取): 加载音频文件的读取情况,如 .mp3​、.wav​、.ogg 等格式。

    • Scripting Reads(脚本读取): 脚本相关资源的读取,如 .dll 文件、预编译脚本或 IL2CPP 输出的代码块等。

    • Entities Reads(实体读取): 加载 DOTS(Entity Component System)中的 Entities 资源,适用于基于 ECS 的项目结构。

    我们可以利用这些数据:

    1. 判断加载瓶颈是否出现在某一类型的资源(如纹理、音频)
    2. 分析启动时或切场景时读取数据量是否异常
    3. 配合 File Access Profiler 查找文件 IO 延迟
    4. 优化 AssetBundle​、Resources 加载路径
  • 资源加载详细信息

    image

    • Index: 资源加载条目的序号,按加载顺序排列。
    • Source: 加载来源,可能是 Resources​、AssetBundle​、Addressables​、StreamingAssets 等。
    • Asset Name: 资源的完整路径或名称,显示具体加载了哪个资源
    • Thread: 加载该资源时运行的线程名称,例如主线程(Main Thread)或后台线程(Worker Thread)
    • Type: 加载资源的类型,例如 Texture2D​、Mesh​、AudioClip​、GameObject 等。
    • Size: 该资源的内存大小,单位通常为字节(B)、KB、MB。
    • Marker Type: 用于标识该资源加载行为的类型(比如是否为异步加载、预加载等)
    • Marker Length (ms): 加载该资源所耗费的时间(毫秒),可用于分析加载慢的问题。
    • Frame Count: 资源加载跨越了多少帧(有时加载时间长可能会阻塞帧渲染)。

    这里的信息可以帮助我们:

    1. 识别加载开销大的资源(Size 或 Marker Length 过高)
    2. 判断是否资源加载阻塞了主线程
    3. 分析是否某些资源频繁加载造成性能问题(比如重复加载)
    4. Addressables​ / AssetBundle 的加载行为进行优化分析

Asset Loading 对于我们的意义

该模块可以帮助我们

  1. 发现加载卡顿瓶颈

    定位是哪个资源、何时加载导致了卡顿

  2. 优化资源分布

    避免同一帧加载过多资源,建议分帧加载

  3. 验证异步加载

    保证 Addressables 或自定义异步加载生效

  4. 提高首帧性能

    分析启动时资源是否加载过多,优化启动流程

  5. 避免重复加载

    检查是否有重复使用 Resources.Load 导致资源被多次加载

等等

总之,使用这两节课学习的 File Access(文件访问)和 Asset Loading(资源加载)两个模块
就可以定位资源加载相关问题了,可以给我们提供数据依据,针对性的进行优化