文章

【Unity】一文搞懂资源插件目录区别以及UnityPackage结构描述Packages,AssetsPackages,AssetsPlugins

【Unity】一文搞懂资源插件目录区别以及UnityPackage结构描述Packages,AssetsPackages,AssetsPlugins

不同目录对比

  • Packages(UPM)
    • 用于存放Unity的自定义包(如UPM包),这些包通常是由开发者或团队创建的,并且可以在多个项目中共享和重用。通过manifest.json文件和packages-lock.json文件来管理项目中使用的包
  • Assets/Packages
    • Packages下的代码有编译缓存,因此修改代码并不会正确Reload,但Assets/Packages目录下的代码可以正常编译。开发者开发包的时候在此目录下工作,之后通过包分发方式让其他项目下载包到Packages下
  • AssetsPlugins
    • 当 Unity 编译脚本时,会按照以下优先级顺序进行: Plugins 文件夹(包括子目录)。 Standard Assets 文件夹(包括子目录)。 其他** **Assets 文件夹下的脚本。这就意味着Plugins 文件夹中的代码会在其他代码之前编译。而且编译独立于项目的其他代码,将很少修改源码的第三方库放到这个目录下能减少编译时间。如果需要频繁改动的代码,建议单独建立一个Assets/3rdPart来存放

延申

开发个人包(嵌套包/Embedded Package)

1
2
3
4
5
6
7
Unity Packages目录结构
Packages
├── manifest.json         // 列出所有依赖的包
├── packages-lock.json    // 锁定包版本
├── com.unity.textmeshpro // 官方包(只读)
├── com.thirdparty.tool   // 第三方包(只读)
├── com.mycompany.tool    // 嵌套包(可编辑)



1
2
3
4
5
6
7
8
个人包目录结构
Packages/
├── com.mycompany.mytool/
   ├── package.json     // 包的描述文件
   ├── Editor/          // 编辑器代码
   ├── Runtime/         // 运行时代码
   └── README.md        // 说明文件



1
2
3
4
5
6
7
8
9
10
11
12
13
package.json示例
{
    "name": "com.mycompany.mytool",
    "version": "1.0.0",
    "displayName": "My Custom Tool",
    "description": "A custom tool for Unity",
    "unity": "2021.3",
    "author": {
        "name": "MyCompany",
        "email": "support@mycompany.com"
    }
}

注意:在开发时,包与包之间的依赖关系是有UPM(Unity Package Manager)处理,会自动写入到Packages/package-lock.json中


UPM包和UnityPackage包的区别

特性UPM包Unitypackage包
依赖管理支持依赖管理,能指定和加载其他包不支持,需手动管理
版本管理支持版本控制,可回滚和升级不支持版本控制
分发方式可通过Git、私有注册表或Unity Registry分发通过文件手动分发或Asset Store分发
适用场景模块化开发、团队协作、插件开发、公共包发布小型资源共享、Asset Store内容
开发体验支持模块化结构,适合长期维护易于创建和导入,但不适合长期维护
动态加载包不会直接拷贝到Assets,只加载需要的部分资源直接拷贝到Assets,增加项目体积


本文由作者按照 CC BY 4.0 进行授权

热门标签