1.内置资源vs项目资源
2.原生资源vs导入资源
1.内置资源vs项目资源
1).内置资源(Engine内置资源)
内置资源是Unity引擎本身自带的, 无需你手动导入到项目中, 就能直接在编辑器和运行时使用的资源, 存储在Unity引擎的
按照目录中, 而非项目文件夹内

2).项目资源(自定义项目资源)
项目资源是你手动添加到Assets目录下的所有资源

2.原生资源vs导入资源
该组分类的核心是"资源形态" - 是你从外部工具导出的原始文件还是Unity处理后能实际使用的资源
1).原生资源
原生资源是你直接放入Assets目录的原始文件, 是Unity的"输入源", 比如: PS导出的.png, Blender导出的.fbx
a.图片类: .png/.jpg/.psd/.tga(设计工具导出的原始图片)
b.模型类: .fbx/.obj/.blend/.max(建模工具导出的原始模型)
c.音频类: .wav/.aiff(未压缩的原始音频)
d.其他: .csv/.json(纯文本配置源文件) .cs(脚本源文件)
核心特点:
a.Unity无法直接使用
原生资源必须经过Unity的"导入流程"处理后, 才能在编辑器/运行时使用; 比如原始.png是未压缩的位图, Unity需要将其转
换为GPU能识别的压缩纹理格式
b.存储原始数据
原生资源保留了完整的原始数据; 比如.psd包含图层、.fbx包含完整的骨骼动画数据
c.可删除(但有风险)
删除原生资源后, 对应的导入资源会失效(Unity会标记为"Missing", 但如果只是修改导入设置, 无需重新替换原生资源
d.文本类原生资源特殊
.cs脚本、.json配置等文本类原生资源, Unity无需"转换格式", 直接解析使用, 但仍会生成.meta文件
2).导入资源
导入资源是Unity对原生资源进行导入处理后生成的序列化资源, 是Unity编辑器和运行时实际加载, 使用的对象; 它由两部
分组成:
- .meta文件: 存储资源的GUID, 导入设置, 依赖关系等数据
- Libray目录数据: Unity将原生资源处理后的二进制数据(存储在项目的Library目录, 引擎内部管理, 不可手动修改)
a.核心理解
当你把一张player.png拖入Assets/Textures:
- Unity自动生成player.png.meta文件, 记录该资源的GUID(比如1234567890abcdef)、导入设置, 如压缩格式ASTC,分辨率
2048、开启 MipMap
- Unity根据导入设置, 将原始.png转换为GPU能高效读取的压缩纹理数据, 存储到Library/AssetDatabase/目录下
- 你在编辑器中拖入材质运行时用Resources.Load<Texture2D>()加载的, 不是原始的player.png,而是Library目录中经过
压缩、优化的导入资源
- 若你修改player.png的导入设置, Unity会重新生成Library目录中的导入资源, 而原生.png文件本身不变
b.核心特点
- Unity的实际使用对象: 运行时加载的所有资源(纹理、模型、预制体)都是导入资源, 而非原生资源
- 平台适配性: Unity会根据目标平台(Android/iOS/PC)生成不同的导入资源(比如iOS纹理用PVRTC压缩, Android用 ASTC)
- 通过GUID标识: 导入资源的唯一标识是.meta文件中的GUID,而非文件路径 —— 即使你把player.png从Textures移到C目录
只要.meta文件还在, GUID不变, 所有引用该资源的预制体/场景都不会失效
- 存储在Library目录: Library目录是导入资源的"缓存区", 删除Library后, Unity会重新扫描Assets目录的原生资源和
.meta文件, 重新生成所有导入资源(项目打开时会显示"Importing Assets")
c.meta文件的作用
每个原生资源(除了文件夹)都对应一个同名的.meta文件, 它是连接原生资源和导入资源的"桥梁", 核心作用:
- 存储GUID: 全局唯一标识, Unity通过GUID找到对应的导入资源(而非路径)
- 存储导入设置: 比如纹理的压缩格式、模型的缩放比例、音频的采样率等
- 存储依赖关系: 比如预制体引用的纹理GUID、模型引用的材质GUID
- 版本控制关键: 多人协作时, 必须提交.meta文件到Git/SVN —— 若缺失.meta, Unity会重新生成新的GUID, 导致所有引用
该资源的地方失效(出现粉色缺失图标)