第一次寫(xiě)博客,有什么不對(duì)的地方,歡迎大家指出
(1)打開(kāi)vs(本人用的是vs2013)然后建一個(gè)項(xiàng)目,如下圖所示,選擇.ENT3.5的框架,或者低于3.5的,這是因?yàn)?/span>Unity里面用的框架可能在3.5以下,不然會(huì)報(bào)錯(cuò),然后給自己的dll改名字選擇路徑(這個(gè)路徑等一下要用)
(2)進(jìn)入項(xiàng)目之后,如果你不需要用到unity里面的類(lèi)或者封裝的方法,你就直接寫(xiě)你想要封裝的方法,如下:
1 namespace MyDll //命名空間(在unity里面是沒(méi)有namespace)所里在unity里面使用的時(shí)候,需要在腳本上面加using MyDll 2 { 3 public static class Compute //類(lèi)名 4 { 5 public static int GetMax(params int[] arr) //靜態(tài)類(lèi),當(dāng)然這里你可以自己寫(xiě)成非靜態(tài)的也可以,只不過(guò)在Unity里面需要實(shí)例化 6 { 7 for (int i = 0; i < arr.Length; i++) //這里是一個(gè)冒泡排序 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 }
當(dāng)然,咱們主要講的是unity,但是vs里面的類(lèi)是繼承不了MonoBehaviour,所以咱們需要導(dǎo)入unity的dll,這樣才可以使用unity里面封裝的方法
導(dǎo)入步驟
然后選擇左邊瀏覽 - 最近 - 下面瀏覽,選擇你要導(dǎo)入的unity封裝的dll的路徑,點(diǎn)擊確定就可以導(dǎo)入成功了,我這里導(dǎo)入的是 UnityEngine.dll
(unity封裝的dll你可以在unity里面建一個(gè)項(xiàng)目,建一個(gè)腳本,打開(kāi)vs右邊有個(gè)引用,打開(kāi)之后,鼠標(biāo)選中,在下面就可以看到路徑了)
然后寫(xiě)跟上面一樣, 添加一個(gè)類(lèi)(右鍵MyDll-添加- 類(lèi))等, 例如
1 using UnityEngine; //導(dǎo)入命名空間(當(dāng)然如果需要使用UI的話,你只需要再倒入)UnityEngine.UI就可以了,方法都是一樣的 2 /// <summary> 3 /// 封裝一個(gè)攝像機(jī)控制腳本 4 /// </summary> 5 6 [AddComponentMenu("Camera/Controller")] //這是把該類(lèi)最為一個(gè)組件添加到里面unity屬性面板下面AddComponent的菜單欄,字符串表示路徑 7 public class CameraController : MonoBehaviour (這個(gè)類(lèi)你也可以寫(xiě)到自己想要的命名下,在用的時(shí)候需要導(dǎo)入命名空間就行了) 8 { 9 public Transform target; //攝像機(jī)跟隨的目標(biāo)10 PRivate Vector3 offset; //目標(biāo)和攝像機(jī)的偏移量11 12 13 void Awake()14 {15 offset = transform.position - target.position; //求偏移量16 transform.LookAt(target.position); //初始看向目標(biāo)點(diǎn)17 }18 19 20 private void CameraFollow()21 {22 transform.position = target.position + offset; //保持?jǐn)z像機(jī)和目標(biāo)點(diǎn)的偏移量不變,就實(shí)現(xiàn)了跟隨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"); //求出應(yīng)該滑動(dòng)的方向和距離38 offset = offset + temp; //應(yīng)該移動(dòng)所處的偏移量39 40 41 }42 }43 }
(3)目前咱們已經(jīng)寫(xiě)好了兩個(gè)類(lèi)了,下面我們需要生成dll了, 在VS最上面的菜單欄有一個(gè)"生成" - "生成解決方案", 或者直接F6
(4)然后我們到自己的剛才的項(xiàng)目文件夾里面,找到dll文件(因?yàn)楹芎谜?/span>,這里我就不細(xì)說(shuō)了)
(5)找到之后把他導(dǎo)入到我們的unity工程里面,放在Project里面(盡量建一個(gè)文件夾Plugins,放在里面,以防出錯(cuò))
(6)這時(shí)候我就可以用了,下面是使用的例子
6.1這里先說(shuō)一下unity封裝的用法
6.1.1如果你剛才在類(lèi)上面加了[AddComponentMenu("Camera/Controller")] 就可以再屬性面板AddComponent找到Camera-Controller就是你封裝的這個(gè)類(lèi),直接選擇就可以
因?yàn)樵诜庋b的時(shí)候,已經(jīng)繼承了MonoBehaviour ,所以是可以繼承的(如果沒(méi)有加上這句代碼,應(yīng)該也是可以加載的)
6.2再說(shuō)一下封裝的算法
6.2.1如果你剛才加了命名空間,在使用里的方法的時(shí)候,需要using空間名, 然后使用的方法就和平時(shí)的一樣了,如下
1 using UnityEngine; 2 using System.Collections; 3 using MyDll; //導(dǎo)入命名空間 4 5 public class TTTT : MonoBehaviour 6 { 7 void Awake() 8 { 9 Debug.Log(Compute.GetMax(3,10,7,5,4)); //剛才封裝的方法10 }11 }
(7)最后一點(diǎn),如果沒(méi)有調(diào)框架的話,會(huì)出現(xiàn)以下錯(cuò)誤(這個(gè)困惑我很長(zhǎng)時(shí)間,因?yàn)槲铱吹狡渌奶由厦娑紱](méi)有提到怎么可以解決這個(gè)錯(cuò)誤的,后來(lái)把.NET框架調(diào)低之后好了)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注