Unity 專案導入外部 dll 套件
開發 Unity 專案常需要導入外部套件, 可能來自於各種平台需求 (e.g., 安卓 SDK, C# dll 庫). 以 Window 平台開發來說, 最常使用 Visual studio 做為開發環境工具 (IDE), 而裡面提供的 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 目錄建立 link.xml 檔案. 加入以下內容:
<linker>
<assembly fullname="System.Core">
<type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
</assembly>
</linker>
- 記住, 這只是為了防止 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
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
- 来自作者