shellyhbg
shellyhbg

目前是位 Unity 遊戲開發者, 記錄著工作以及生活上的開發日記 Blog: https://xunyi-huang.com/

Unity 專案導入外部 dll 套件

開發 Unity 專案常需要導入外部套件, 可能來自於各種平台需求 (e.g., 安卓 SDK, C# dll 庫). 以 Window 平台開發來說, 最常使用 Visual studio 做為開發環境工具 (IDE), 而裡面提供的 NuGet 專案套件管理系統能從遠程下載各種套件. 以下是我最常使用的套件之一: Json.NET

NuGet 安裝 Json.NET

但是安裝完後會發現仍然無法使用!? 這是由於 Unity 編輯器會自動產生 Visual Studio 專案並重置其組態設定, 也就是排除掉 Unity 專案不必要的程式碼 (code stripping). 要解決這問題其實只要告訴 Unity 編輯器在建置專案時不要排除掉 dll 套件.

加入外部套件

  • Unity 專案 Assets 目錄下新增 Plugins 目錄. 這是 Unity 默認提供使用者使用外部套件的目錄, 包含 Managed plug-ins (即 .NET assemblies) 以及 Native plug-ins (OS 相關).
  • 回到 Visual Studio 專案 .sln 所在目錄, Packages 即是存放 NuGet 安裝套件的目錄. 以 Json.NET 套件為例, 複製 .\Packages\Newtonsoft.Json.12.0.3\lib\netstandard2.0\Newtonsoft.Json.dll 至 Plugins 資料夾
Assets Plugins 下的 C# dll 庫: Json.NET

建置時外部套件不被排除

  • 於 Assets 目錄建立 link.xml 檔案. 加入以下內容:

<linker>
<assembly fullname="System.Core">
<type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
</assembly>
</linker>

link.xml 存放位置
  • 記住, 這只是為了防止 Unity 執行 code stripping 時去除這些外部套件 (僅 Unity 適用).

以上設定完成後, 便能在 Unity 專案使用外部 dll 套件了. 另外, 不是從 NuGet 下載的 C# 庫也能用同樣方式引入 Unity 專案, 像有些開發者為了保持程式碼獨立, 或提供功能共通性, 把一些 C# 程式額外包成庫.


參考:

1. Unity Plugins https://docs.unity3d.com/Manual/Plugins.html

2. Unity Code Stripping https://docs.unity3d.com/Manual/ManagedCodeStripping.html

3. Unity .NET 整合 https://docs.microsoft.com/zh-tw/visualstudio/cross-platform/unity-scripting-upgrade?view=vs-2019

4. Json.NET https://www.newtonsoft.com/json

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论