VisualStuido中將C#腳本封裝打包DLL並調用


 DLL (Dynamic Link Library)---動態鏈接庫

 首先了解下使用DLL的優勢,程序運行時不用加載所有代碼,只有運行到引用時,才從DLL庫中取出。並且使用DLL文件還可以減小程序體積,封裝好的DLL文件,由於函數已經封裝到DLL文件中,防止意外變更。所以編譯器不會對我們的 DLL 進行編譯,而是直接運  行,程序執行需要時調用的,許多搞插件開發的,都是將代碼封裝為 DLL ,並加密。這樣既提高了運行效率,也保證了代碼的基本安全性。

創建DLL

1.創建庫

以 為例

打開 Visual Studio 2015(我用的vs2015),新建項目:文件→→新建→→項目,選擇 Visual C# 類庫 (.NET Framework) 

我這里將命名空間改為MyDLL。隨意!

2.下面添加代碼:

添加代碼注意:

a.所有需要通過 dll 調用的函數,訪問修飾符都需要設為公有即public static

b.若想要調用 Unity的API ,就需要導入 Unity 中的2個 DLL 到庫中

 導入UnityAPI所需兩個DLL:

1.先找到這兩個DLL文件:

添加引用

方式1:

方式2:

右鍵引用

點擊瀏覽,根據剛才找到庫文件的路徑

添加即可。這樣程序才能訪問到我們DLL庫中的函數了。

添加測試函數

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading;
 6 using UnityEditor;
 7 using UnityEngine;
 8 namespace MyDLL
 9 {
10     public class Class1
11     {
12         /// <summary>
13         /// 加法運算
14         /// </summary>
15         /// <param name="a"></param>
16         /// <param name="b"></param>
17         /// <returns></returns>
18         public static int Addition(int a,int b)  {
19             return a + b;
20         }
21         /// <summary>
22         /// 乘法運算
23         /// </summary>
24         /// <param name="a"></param>
25         /// <param name="b"></param>
26         /// <returns></returns>
27         public static int Multiplication(int a, int b)
28         {
29             return a * b;
30         }
31         /// <summary>
32         /// 減法運算
33         /// </summary>
34         /// <param name="a"></param>
35         /// <param name="b"></param>
36         /// <returns></returns>
37         public static int Subtraction(int a, int b)
38         {
39             return a - b;
40         }
41 
42     }
43 }

3.配置生成解決方案

在解決方案中,右鍵項目選擇屬性,打開設計界面--應用程序,Unity需要輸出 3.5版本及以下版本的dll

 

 保存-》右鍵解決方案-》生成解決方案,或者

4.找到生成的DLL

生成后,找到我們的DLL文件,文件在我們庫項目中的 bin/Debug 目錄下

 我的文件:

5.調用創建的DLL文件

 將找到的自己創建的DLL文件放入Unity的Plugins文件夾下(這里要注意的是Unity 2017.3版本后,庫文件需要放在 Plugins文件夾下,才可以正常啟用,在這里我是vs2015,無所謂)

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class DLLtext : MonoBehaviour {
 6 
 7     void Start () {
 8         Debug.Log(MyDLL.Class1.Addition(1, 2));
 9         Debug.Log(MyDLL.Class1.Multiplication(3, 2));
10         Debug.Log(MyDLL.Class1.Subtraction(4, 2));
11     }
12 }

打印結果:

OK,到這就這樣愉快的結束了!

歡迎指正!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM