个人主页 阿松爱睡觉横竖醒不来你可以不屠龙但不能不磨剑文章一、前言二、StreamingAssets文件夹1. 用途2. 访问方式3. 优点4. 缺点三、AssetBundle1. 用途2. 访问方式3. 优点4. 缺点四、Resources文件夹1. 用途2. 访问方式3. 优点4. 缺点五、总结一句话记忆如何选择一、前言很多 Unity 初学者都会遇到一个困惑StreamingAssets、AssetBundle、Resources 这三个文件夹到底有什么区别它们都能存放资源但用法和适用场景却大不相同。简单打个比方Resources就像你随身背的小背包东西少、拿取方便但背的东西越多越累打包体积变大。StreamingAssets就像仓库货架东西直接摆在那里随时能拿但不会自动帮你整理不参与打包。AssetBundle就像快递包裹需要时再拆开取用还能从外地寄过来从服务器下载适合大件和更新。下面我们逐一详细讲解并给出简单的代码示例帮你彻底分清它们。二、StreamingAssets文件夹1. 用途StreamingAssets 文件夹用于存储不需要打包的资源比如音频、视频、数据库等大型文件。构建项目时这些文件会被原样复制到构建目录中运行时可以直接访问。2. 访问方式可以使用System.IO相关的类来读写文件在移动平台上使用Application.streamingAssetsPath获取路径。usingUnityEngine;usingSystem.IO;publicclassReadStreamingAssets:MonoBehaviour{voidStart(){// 获取 StreamingAssets 文件夹的路径stringpathPath.Combine(Application.streamingAssetsPath,data.txt);// 读取文件内容if(File.Exists(path)){stringcontentFile.ReadAllText(path);Debug.Log(读取到内容content);}}}3. 优点简单直接不需要打包和解包。适合存储不需要加密或优化的文件。4. 缺点文件会原样暴露在安装包中容易被玩家修改。无法按需加载所有文件都会占用安装包空间。三、AssetBundle1. 用途AssetBundle 是一种打包和分发资源的机制。它可以把多个资源打包成一个文件运行时按需动态加载常用于大型游戏减少初始加载时间。2. 访问方式使用AssetBundle.LoadFromFile或AssetBundle.LoadFromMemory加载也可以从服务器下载后加载。usingUnityEngine;publicclassLoadAssetBundle:MonoBehaviour{voidStart(){// 从本地文件加载 AssetBundleAssetBundlebundleAssetBundle.LoadFromFile(Application.streamingAssetsPath/mybundle);if(bundle!null){// 从 AssetBundle 中加载一个 GameObjectGameObjectprefabbundle.LoadAssetGameObject(MyPrefab);Instantiate(prefab);// 使用完毕后卸载bundle.Unload(false);}}}3. 优点可以按需加载资源优化内存使用。支持热更新可以从服务器下载新资源无需重新发布游戏。4. 缺点需要手动管理打包和加载流程学习成本较高。需要处理依赖关系和版本管理复杂度较高。四、Resources文件夹1. 用途Resources 文件夹用于存储运行时动态加载的资源。构建项目时这些资源会被自动打包到最终的构建文件中。2. 访问方式使用Resources.Load或Resources.LoadAll加载资源使用Resources.UnloadAsset卸载资源。usingUnityEngine;publicclassLoadResources:MonoBehaviour{voidStart(){// 从 Resources 文件夹加载一个预制体GameObjectprefabResources.LoadGameObject(Prefabs/MyPrefab);Instantiate(prefab);}}3. 优点简单易用适合小型游戏或不需要频繁更新的资源。资源在构建时被打包减少了运行时的文件访问。4. 缺点所有 Resources 中的资源都会被打包即使没用到也会占用空间。无法热更新发布后不能单独替换资源。五、总结对比项StreamingAssetsAssetBundleResources是否打包不打包原样复制打包成独立文件自动打包进构建文件加载方式文件系统直接读写按需动态加载Resources.Load是否支持热更新支持替换文件支持下载新包不支持适用场景音频、视频、数据库等大文件大型游戏、热更新小型游戏、固定资源学习难度⭐⭐⭐⭐⭐一句话记忆StreamingAssets仓库货架直接放、直接拿适合大文件。AssetBundle快递包裹需要时拆开还能远程寄送适合热更新。Resources随身背包方便但装不了太多适合小项目。如何选择存大文件视频、音频、数据库→ 用StreamingAssets做大型游戏或需要热更新→ 用AssetBundle做小项目、资源固定不变 → 用Resources希望这篇文章能帮你彻底分清这三个文件夹的区别在实际开发中选对方案