You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Unity中共享DLL的正确管理:如何自动更新开发中DLL的依赖?

我完全懂这种手动拖DLL的痛苦——每次迭代都要复制粘贴,还容易漏更!针对Unity项目自动更新共享DLL的需求,这里有几个靠谱的方案,适配不同的开发场景:

方案1:利用符号链接实现实时同步

这是最轻量化的本地开发方案,适合个人或小团队快速迭代:

  • 核心逻辑:不在Unity的Plugins文件夹里放DLL副本,而是创建指向DLL开发输出目录的符号链接。这样每次你编译DLL,Unity会自动检测到文件变化并刷新依赖。
  • 操作步骤:
    1. 找到你的DLL项目的编译输出路径(比如YourDllProject/bin/Debug/YourShared.dll
    2. 打开管理员权限的命令提示符,导航到Unity项目的Assets/Plugins文件夹
    3. 执行创建链接的命令:
      • Windows:mklink YourShared.dll "C:\Full\Path\To\YourDllProject\bin\Debug\YourShared.dll"
      • macOS/Linux:ln -s /Full/Path/To/YourDllProject/bin/Debug/YourShared.dll YourShared.dll
    4. 对第二个Unity项目重复同样的操作
  • 小提示:如果Unity没自动刷新,右键Project窗口选择Refresh即可,大部分时候会自动识别文件变更。
方案2:用Unity Package Manager(UPM)规范管理

这是团队协作的最优解,能实现版本控制、依赖管理,还能统一更新:

  • 核心逻辑:把共享DLL打包成一个符合UPM规范的本地/远程包,通过Unity包管理器引入项目,更新时只需要调整版本号即可。
  • 操作步骤:
    1. 创建一个UPM结构的文件夹,比如com.yourteam.shared-dll
    2. 在文件夹内创建package.json配置文件,示例内容:
      {
        "name": "com.yourteam.shared-dll",
        "version": "1.0.0",
        "displayName": "Shared Core DLL",
        "description": "Common functionality for our Unity projects",
        "unity": "2020.3",
        "dependencies": {},
        "author": {
          "name": "Your Team",
          "email": "team@yourcompany.com"
        }
      }
      
    3. 在这个文件夹下创建Plugins子目录,把DLL项目的编译输出路径设置到这里(在Visual Studio的项目属性→生成→输出路径中配置)
    4. 在Unity项目的Packages/manifest.json中添加本地包引用:
      "dependencies": {
        // 其他依赖...
        "com.yourteam.shared-dll": "file:../path/to/com.yourteam.shared-dll"
      }
      
    5. 每次更新DLL后,修改package.json里的版本号(比如从1.0.0改成1.0.1),Unity会自动提示更新,或者在Package Manager中手动刷新。
  • 进阶玩法:把这个UPM包上传到Git仓库,团队成员可以通过Git URL引入,所有人都能拉取最新版本。
方案3:自定义构建脚本自动复制

如果以上方案都不适合你的现有流程,可以用构建脚本实现自动同步:

  • 核心逻辑:借助Visual Studio的后期构建事件,或者脚本定时检测DLL变化,编译完成后自动复制到两个Unity项目的Plugins文件夹。
  • Visual Studio后期构建事件示例:
    1. 打开DLL项目的属性→生成事件→后期生成事件命令行
    2. 输入复制命令(替换成你的实际路径):
      xcopy "$(TargetPath)" "C:\Projects\FirstUnityGame\Assets\Plugins\" /Y
      xcopy "$(TargetPath)" "C:\Projects\SecondUnityGame\Assets\Plugins\" /Y
      // 如果需要复制pdb调试文件,换成下面的命令
      // xcopy "$(TargetDir)*.*" "C:\Projects\FirstUnityGame\Assets\Plugins\" /Y
      
    3. 勾选“在生成时运行后期生成事件”,这样每次编译DLL,脚本都会自动同步最新文件到目标项目。

根据你的项目规模和团队情况选一个最适合的方案——个人开发用符号链接最省心,团队协作的话UPM是长远之计,脚本方案则适合快速适配现有流程。

内容的提问来源于stack exchange,提问作者lemon

火山引擎 最新活动