程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 享受一下大神的感覺, unity中用C#自己封裝dll,

享受一下大神的感覺, unity中用C#自己封裝dll,

編輯:C#入門知識

享受一下大神的感覺, unity中用C#自己封裝dll,


第一次寫博客,有什麼不對的地方,歡迎大家指出

(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框架調低之後好了)

 

  1. 上一頁:
  2. 下一頁: