4.YooAsset资源系统的运行模式

4.YooAsset资源系统的运行模式


4.1 知识点

资源系统的运行模式

  • 编辑器模拟模式(EditorSimulateMode
  • 单机运行模式(OfflinePlayMode
  • 联机运行模式(HostPlayMode
  • Web 运行模式(WebPlayMode
  • 自定义运行模式(CustomPlayMode

编辑器模拟模式(EditorSimulateMode)

在编辑器下不需要构建资源包即可模拟运行游戏,直接 Play 即可。仅编辑器内生效。

单机运行模式(OfflinePlayMode)

适用于不需要热更新资源的游戏。必须先构建资源包。

构建时,Copy Buildin File Option 建议选择 ClearAndCopyAll(清空后拷贝所有文件),把首包资源带进安装介质。

将构建输出目录下的文件复制到 Assets/StreamingAssets/yoo/DefaultPackage(部分版本可能会自动拷贝,以实际包行为为准)。



  • 构建时除带时间戳/版本号的输出目录外,还会生成 OutputCache 目录。
  • OutputCache 主要作为 AssetBundle 的本地「素材库」,配合增量构建缩短后续打包时间。
  • 每次构建时,YooAssets 会将首次构建生成的 AssetBundle 原始文件存入 OutputCache(未经版本号目录封装、无哈希混淆文件名那一套,相当于可复用的中间产物)。
  • 再次构建时:
    • 若勾选 Use Asset Depend DB,会依据依赖与内容变更判断哪些资源变了。
    • 未变更的资源:可直接从 OutputCache 拷贝已有 AB,跳过重新压缩/加密等重活。
    • 变更的资源:重新构建并回写 OutputCache 中对应条目。

联机运行模式(HostPlayMode)

适用于需要热更新的资源流程。

先清空此前拷到 StreamingAssets 下的旧资源(避免本地目录与线上一致性混乱)。

本地可开一个静态资源服务模拟 CDN:例如建 .bat,内容为 python -m http.server 80(端口按本机冲突情况可改)。

把构建产物放到 CDN 约定目录,示例工程使用相对路径 ..\CDN\PC\v1.0 等。


相对路径写成 ..\CDN\PC\v1.0 是因为示例里 GetHostServerURL 把平台与版本段拼进了 URL:

/// <summary>
/// 获取资源服务器地址
/// </summary>
private string GetHostServerURL()
{
    //string hostServerIP = "http://10.0.2.2"; //安卓模拟器地址
    string hostServerIP = "http://127.0.0.1";
    string appVersion = "v1.0";

#if UNITY_EDITOR
    if (UnityEditor.EditorUserBuildSettings.activeBuildTarget == UnityEditor.BuildTarget.Android)
        return $"{hostServerIP}/CDN/Android/{appVersion}";
    else if (UnityEditor.EditorUserBuildSettings.activeBuildTarget == UnityEditor.BuildTarget.iOS)
        return $"{hostServerIP}/CDN/IPhone/{appVersion}";
    else if (UnityEditor.EditorUserBuildSettings.activeBuildTarget == UnityEditor.BuildTarget.WebGL)
        return $"{hostServerIP}/CDN/WebGL/{appVersion}";
    else
        return $"{hostServerIP}/CDN/PC/{appVersion}";
#else
    if (Application.platform == RuntimePlatform.Android)
        return $"{hostServerIP}/CDN/Android/{appVersion}";
    else if (Application.platform == RuntimePlatform.IPhonePlayer)
        return $"{hostServerIP}/CDN/IPhone/{appVersion}";
    else if (Application.platform == RuntimePlatform.WebGLPlayer)
        return $"{hostServerIP}/CDN/WebGL/{appVersion}";
    else
        return $"{hostServerIP}/CDN/PC/{appVersion}";
#endif
}

运行 .bat 启动本地 HTTP 服务后,浏览器访问 http://localhost/CDN/PC/v1.0/ 应能看到资源列表。


当前版本的 version 与清单 bytes 等放回 StreamingAssets,用于客户端与服务器版本信息对比(本地基线 vs 远端)。


将运行模式改为联机,打 PC 包运行,可在本机模拟「联网检查更新 → 下载 → 游玩」。



示例迭代:改 UIHome(如标题加前缀、加按钮),重新构建资源,把新输出拷到 ..\CDN\PC\v1.0,再运行已安装的 PC 包,应能检测到更新并下到新资源。





Web 运行模式(WebPlayMode)

面向 WebGL 以及微信、抖音等小游戏形态,需选择该模式。同样需要构建资源包。

详见官方小游戏方案

自定义运行模式(CustomPlayMode)

支持挂载多个文件系统

列表最后一个元素作为主文件系统。

详见官方自定义运行模式



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏