第一次寫博客,有什麼不對的地方,歡迎大家指出
(1)打開vs(本人用的是vs2013)然後建一個項目,如下圖所示,選擇.ENT3.5的框架,或者低於3.5的,這是因為Unity裡面用的框架可能在3.5以下,不然會報錯,然後給自己的dll改名字選擇路徑(這個路徑等一下要用)

(2)進入項目之後,如果你不需要用到unity裡面的類或者封裝的方法,你就直接寫你想要封裝的方法,如下:
1 namespace MyDll //命名空間(在unity裡面是沒有namespace)所裡在unity裡面使用的時候,需要在腳本上面加using MyDll
2 {
3 public static class Compute //類名
4 {
5 public static int GetMax(params int[] arr) //靜態類,當然這裡你可以自己寫成非靜態的也可以,只不過在Unity裡面需要實例化
6 {
7 for (int i = 0; i < arr.Length; i++) //這裡是一個冒泡排序
8 {
9 for (int j = 0; j < arr.Length - i - 1; j++)
10 {
11 if(arr[j] >arr[j+1])
12 {
13 int temp = arr[j];
14 arr[j] = arr[j+1];
15 arr[j + 1] = temp;
16 }
17 }
18 }
19 return arr[arr.Length - 1];
20 }
21 }
22 }
當然,咱們主要講的是unity,但是vs裡面的類是繼承不了MonoBehaviour,所以咱們需要導入unity的dll,這樣才可以使用unity裡面封裝的方法
導入步驟

然後選擇左邊浏覽 - 最近 - 下面浏覽,選擇你要導入的unity封裝的dll的路徑,點擊確定就可以導入成功了,我這裡導入的是 UnityEngine.dll
(unity封裝的dll你可以在unity裡面建一個項目,建一個腳本,打開vs右邊有個引用,打開之後,鼠標選中,在下面就可以看到路徑了)
然後寫跟上面一樣, 添加一個類(右鍵MyDll-添加- 類)等, 例如
1 using UnityEngine; //導入命名空間(當然如果需要使用UI的話,你只需要再倒入)UnityEngine.UI就可以了,方法都是一樣的
2 /// <summary>
3 /// 封裝一個攝像機控制腳本
4 /// </summary>
5
6 [AddComponentMenu("Camera/Controller")] //這是把該類最為一個組件添加到裡面unity屬性面板下面AddComponent的菜單欄,字符串表示路徑
7 public class CameraController : MonoBehaviour (這個類你也可以寫到自己想要的命名下,在用的時候需要導入命名空間就行了)
8 {
9 public Transform target; //攝像機跟隨的目標
10 private Vector3 offset; //目標和攝像機的偏移量
11
12
13 void Awake()
14 {
15 offset = transform.position - target.position; //求偏移量
16 transform.LookAt(target.position); //初始看向目標點
17 }
18
19
20 private void CameraFollow()
21 {
22 transform.position = target.position + offset; //保持攝像機和目標點的偏移量不變,就實現了跟隨
23 }
24
25
26 void Update()
27 {
28 CameraFollow();
29 CameraScroll();
30 }
31
32
33 private void CameraScroll()
34 {
35 if (Input.GetAxis("Mouse ScrollWheel") != 0)
36 {
37 Vector3 temp = offset.normalized * Input.GetAxis("Mouse ScrollWheel"); //求出應該滑動的方向和距離
38 offset = offset + temp; //應該移動所處的偏移量
39
40
41 }
42 }
43 }
(3)目前咱們已經寫好了兩個類了,下面我們需要生成dll了, 在VS最上面的菜單欄有一個"生成" - "生成解決方案", 或者直接F6
(4)然後我們到自己的剛才的項目文件夾裡面,找到dll文件(因為很好找,這裡我就不細說了)
(5)找到之後把他導入到我們的unity工程裡面,放在Project裡面(盡量建一個文件夾Plugins,放在裡面,以防出錯)
(6)這時候我就可以用了,下面是使用的例子
6.1這裡先說一下unity封裝的用法
6.1.1如果你剛才在類上面加了[AddComponentMenu("Camera/Controller")] 就可以再屬性面板AddComponent找到Camera-Controller就是你封裝的這個類,直接選擇就可以
因為在封裝的時候,已經繼承了MonoBehaviour ,所以是可以繼承的(如果沒有加上這句代碼,應該也是可以加載的)
6.2再說一下封裝的算法
6.2.1如果你剛才加了命名空間,在使用裡的方法的時候,需要using空間名, 然後使用的方法就和平時的一樣了,如下
1 using UnityEngine;
2 using System.Collections;
3 using MyDll; //導入命名空間
4
5 public class TTTT : MonoBehaviour
6 {
7 void Awake()
8 {
9 Debug.Log(Compute.GetMax(3,10,7,5,4)); //剛才封裝的方法
10 }
11 }
(7)最後一點,如果沒有調框架的話,會出現以下錯誤(這個困惑我很長時間,因為我看到其他的帖子上面都沒有提到怎麼可以解決這個錯誤的,後來把.NET框架調低之後好了)
