国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

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

2019-11-14 13:53:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

第一次寫(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)入unitydll,這樣才可以使用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)了,下面我們需要生成dllVS最上面的菜單欄有一個(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)低之后好了)

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 闸北区| 德清县| 轮台县| 佛山市| 建湖县| 观塘区| 临夏市| 峨边| 麦盖提县| 海安县| 云龙县| 柳河县| 道孚县| 乐亭县| 进贤县| 喜德县| 平凉市| 科技| 辽阳市| 福泉市| 蒲江县| 余庆县| 南宫市| 工布江达县| 高州市| 江都市| 田东县| 赣榆县| 崇信县| 洞头县| 宜君县| 崇文区| 衡阳县| 承德县| 秀山| 湄潭县| 易门县| 沙雅县| 玛沁县| 潮安县| 濮阳市|