[unity3d插件]2dtoolkit系列一 建立精靈

從今天開始要作一個2d遊戲,因爲以前都是作cocos2dx的,而後接觸了一段時間的unity3d,都是作3D方面的東西,得知要作2d遊戲仍是有點開心的,或許由於不想丟失以前的2d遊戲的一些思想,而後接觸到unity3d的一個2d插件——2dtoolkit,我感受仍是蠻強大的,雖然是一個插件,徹底感受跟cocos2dx引擎有的一比,他們的思想也很相似,我我的感受有點區別的無非就是unity有豐富的可視化界面,而cocos2dx都是本身代碼來佈局界面,固然也能夠用cocosstudio,多是我沒怎麼用過它,因此以爲cocos2dx和unity2dtoolkit仍是差不了多少的,在最新的unity4.3加入了uni2d,也是也就是將以前的這個2dtoolkit給加進了unity中,固然cocos2d也會出來cocos3d,這兩個遊戲引擎都在往對方「領域」相互滲透,固然對咱們開發者而已沒有多大的影響,這二者的競爭,無非是將本身的引擎作的更完善,作的更好,這都是給咱們開發者帶來了福音,廢話就很少說了,開始今天的學習內容,unity 2dtoolkit的初步使用!編輯器

1、系統介紹

2D Toolkit分爲兩個系統:運行時組件(runtime components)和腳本編輯器。ide

腳本編輯器在Assets目錄下產生資源,運行時腳本在場景中產生objects。佈局

二者關係以下圖:性能

2、重要的術語——精靈

   1.精靈:對於熟悉遊戲開發的人而言,不管是cocos2dx或者是unity的,精靈是再熟悉不過了,在2d遊戲開發中是一個很重要的詞彙,說的通俗一點,Sprite也就至關因而一個組件,其中有一個屬性就是對應着一個圖片,而後咱們能夠經過控制這個Sprite來控制咱們圖片的操做,好比縮放移動或者旋轉之類的。學習

建立方法:Hierarchy面板中->Create->tk2d->Sprite,這個是最基本的精靈建立方法,咱們能夠建立了以後往裏面添加組件,豐富其屬性。this

 

  2.精靈集:精靈集是2DToolkit的核心,能夠將其理解成一個容器,存放Sprite的容器,Sprite Collection界面設置精靈以及其相關聯的屬性,包括碰撞區域。精靈集產生一個或多個貼圖圖集,替代你的原圖片從而提升性能。spa

 

建立方法: 一開始我還沒找到這個SpriteCollection建立方法,在Hierarchy面板中怎麼着都沒找到,覺得是版本問題,而後試試其餘的版本仍是同樣,結果後來發現是在Project面板中,右擊就能找到了。.net

  

 

 

建立好一個精靈集後取一個合適的名字,我就叫作TutorialSpriteCollection,建立好以後點擊OpenEditor...打開編輯器插件

 

將精靈加入精靈集裏面,拖拽資源圖片到「Drop sprites here」虛線框中,固然能夠拖放一個圖片也能夠拖放多個圖片。3d

 

 

而後選擇咱們工程中的圖片文件夾中的圖片,將其拖放到上述虛線框中,而後能夠設置精靈的碰撞屬性ColliderType爲Polygon用戶自定義(這個適用於不規則圖片),若是是規則的,假設是方形的話就直接用BoxTrimmed便可。下圖即爲我建立的自定義碰撞的圖集精靈。

 

設置好以後,咱們必需要作的操做就是點擊右上角的Commit按鈕,即unity開始計算圖集的一些屬性,而後生成配置文件,點擊以後會發現Project中自動多出了兩個文件夾,其實這是unity通過計算獲得的精靈的一些配置信息,例如座標,大小,材質等等。

 

3、利用精靈集建立精靈

Create->tk2d->Sprite

 

4、建立普通貼圖精靈

若是咱們須要快速的建立一個精靈,能夠就直接選擇建立一個貼圖精靈,直接Create->tk2d->Sprite From Texture

 

5、代碼獲取精靈並操做精靈

[csharp] view plaincopyprint?在CODE上查看代碼片派生到個人代碼片

 

  1. using UnityEngine;  

  2. using System.Collections;  

  3.   

  4. public class NewBehaviourScript : MonoBehaviour {  

  5.     //建立精靈  

  6.     //tk2dSprite sprite;  

  7.   

  8.     // Use this for initialization  

  9.     void Start () {  

  10.         //能夠這樣獲取精靈  

  11.         //sprite = GameObject.Find("Dragon").gameObject.GetComponent<tk2dSprite>();  

  12.   

  13.         //輸出精靈的座標  

  14.         //print("x:" + gameObject.transform.localPosition.x + "|y:" + transform.localPosition.y);  

  15.         //一開始打印的座標是x:-1|y:0  

  16.   

  17.         //如下代碼能夠動態的縮放精靈  

  18.         //sprite.scale = new Vector3(xScale, yScale, zScale);  

  19.        //如下代碼可改變要顯示的精靈  

  20.         //sprite.spriteId = newSpriteId;  

  21.        //如下代碼能夠獲得id  

  22.         //sprite.spriteId = sprite.GetSpriteIdByName("Rock");  

  23.   

  24.     }  

  25.       

  26.   

  27.     void Update()  

  28.     {  

  29.         //經過鍵盤控制改變物體顏色的屬性  

  30.         //if (Input.GetKeyDown(KeyCode.A))  

  31.         //{  

  32.         //    sprite.color = Color.red;  

  33.         //}  

  34.         //if (Input.GetKeyDown(KeyCode.S))  

  35.         //{  

  36.         //    sprite.color = Color.white;  

  37.         //}  

  38.   

  39.         OnMouseDown();  

  40.   

  41.        //下面也能夠作一系列的座標判斷來定位精靈移動區域  

  42.   

  43.     }  

  44.     //鼠標左擊控制主角精靈移動  

  45.     IEnumerator OnMouseDown()  

  46.     {  

  47.         print("MouseDown");  

  48.         Vector3 screenPosition = Camera.main.WorldToScreenPoint(transform.position);  

  49.         Vector3 mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);  

  50.         Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(mScreenPosition);  

  51.         //鼠標左擊  

  52.         while (Input.GetMouseButton(0))  

  53.         {  

  54.             mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);  

  55.             Vector3 pos = offset + Camera.main.ScreenToWorldPoint(mScreenPosition);  

  56.             pos.z = 0;  

  57.             transform.position = pos;  

  58.             yield return new WaitForFixedUpdate();  

  59.         }  

  60.     }  

  61. }  


點擊屏幕中的小龍精靈,按下鼠標左鍵而後拖動,會發現它能夠移動哦,哇咔咔,感受真有意思,又回到了以前熟悉的2D,我的感受unity2d比cocos2d要方便很多,畢竟可視化界面更豐富一點,但目前而言,我的仍是cocos稍微熟悉一點,不過不要緊,unity是個不錯的強大的引擎,慢慢了解,呵呵,不早了,感受充實的一天!晚上和某人鬧矛盾了,小吐槽了一下,爲啥QQ沒有自動彈出某人信息的功能或者是將某人的聊天框固定在界面上,這樣就不會由於回覆晚了而鬧矛盾了,若是能夠,我以爲要向騰訊反應一下,呵呵,但願某人開心起來!

 

轉載請註明出處:http://blog.csdn.net/dingxiaowei2013/article/details/20389535

==================== 迂者 丁小未 CSDN博客專欄=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ羣:858550         cocos2dx QQ羣:280818155

====================== 相互學習,共同進步 ===================

相關文章
相關標籤/搜索