从今天开始要做一个2d游戏,由于之前都是做cocos2dx的,然后接触了一段时间的unity3d,都是做3D方面的东西,得知要做2d游戏还是有点开心的,或许因为不想丢失之前的2d游戏的一些思想,然后接触到unity3d的一个2d插件——2dtoolkit,我感觉还是蛮强大的,虽然是一个插件,完全感觉跟cocos2dx引擎有的一比,他们的思想也很类似,我个人感觉有点区别的无非就是unity有丰富的可视化界面,而cocos2dx都是自己代码来布局界面,当然也可以用cocosstudio,可能是我没怎么用过它,所以觉得cocos2dx和unity2dtoolkit还是差不了多少的,在最新的unity4.3加入了uni2d,也是也就是将之前的这个2dtoolkit给加进了unity中,当然cocos2d也会出来cocos3d,这两个游戏引擎都在往对方“领域”相互渗透,当然对我们开发者而已没有多大的影响,这两者的竞争,无非是将自己的引擎做的更完善,做的更好,这都是给我们开发者带来了福音,废话就不多说了,开始今天的学习内容,unity 2dtoolkit的初步使用!

一、系统介绍

2D Toolkit分为两个系统:运行时组件(runtime components)和脚本编辑器。

脚本编辑器在Assets目录下产生资源,运行时脚本在场景中产生objects。

两者关系如下图:

二、重要的术语——精灵

1.精灵:对于熟悉游戏开发的人而言,无论是cocos2dx或者是unity的,精灵是再熟悉不过了,在2d游戏开发中是一个很重要的词汇,说的通俗一点,Sprite也就相当于是一个组件,其中有一个属性就是对应着一个图片,然后我们可以通过控制这个Sprite来控制我们图片的操作,比如缩放移动或者旋转之类的。

创建方法:Hierarchy面板中->Create->tk2d->Sprite,这个是最基本的精灵创建方法,我们可以创建了之后往里面添加组件,丰富其属性。
 
  2.精灵集:精灵集是2DToolkit的核心,可以将其理解成一个容器,存放Sprite的容器,Sprite Collection界面设置精灵以及其相关联的属性,包括碰撞区域。精灵集产生一个或多个贴图图集,替代你的原图片从而提高性能。
 
创建方法: 一开始我还没找到这个SpriteCollection创建方法,在Hierarchy面板中怎么着都没找到,以为是版本问题,然后试试其他的版本还是一样,结果后来发现是在Project面板中,右击就能找到了。
  
 
 
创建好一个精灵集后取一个合适的名字,我就叫做TutorialSpriteCollection,创建好之后点击OpenEditor...打开编辑器
 
将精灵加入精灵集里面,拖拽资源图片到“Drop sprites here”虚线框中,当然可以拖放一个图片也可以拖放多个图片。
 
 
然后选择我们工程中的图片文件夹中的图片,将其拖放到上述虚线框中,然后可以设置精灵的碰撞属性ColliderType为Polygon用户自定义(这个适用于不规则图片),如果是规则的,假设是方形的话就直接用BoxTrimmed即可。下图即为我创建的自定义碰撞的图集精灵。
 
设置好之后,我们必须要做的操作就是点击右上角的Commit按钮,即unity开始计算图集的一些属性,然后生成配置文件,点击之后会发现Project中自动多出了两个文件夹,其实这是unity经过计算得到的精灵的一些配置信息,例如坐标,大小,材质等等。
 

三、利用精灵集创建精灵

Create->tk2d->Sprite
 

四、创建普通贴图精灵

如果我们需要快速的创建一个精灵,可以就直接选择创建一个贴图精灵,直接Create->tk2d->Sprite From Texture
 

五、代码获取精灵并操作精灵

  1. using UnityEngine;
  2. using System.Collections;
  3. public class NewBehaviourScript : MonoBehaviour {
  4. //创建精灵
  5. //tk2dSprite sprite;
  6. // Use this for initialization
  7. void Start () {
  8. //可以这样获取精灵
  9. //sprite = GameObject.Find("Dragon").gameObject.GetComponent<tk2dSprite>();
  10. //输出精灵的坐标
  11. //print("x:" + gameObject.transform.localPosition.x + "|y:" + transform.localPosition.y);
  12. //一开始打印的坐标是x:-1|y:0
  13. //以下代码可以动态的缩放精灵
  14. //sprite.scale = new Vector3(xScale, yScale, zScale);
  15.        //以下代码可改变要显示的精灵
  16. //sprite.spriteId = newSpriteId;
  17.        //以下代码可以得到id
  18. //sprite.spriteId = sprite.GetSpriteIdByName("Rock");
  19. }
  20. void Update()
  21. {
  22. //通过键盘控制改变物体颜色的属性
  23. //if (Input.GetKeyDown(KeyCode.A))
  24. //{
  25. //    sprite.color = Color.red;
  26. //}
  27. //if (Input.GetKeyDown(KeyCode.S))
  28. //{
  29. //    sprite.color = Color.white;
  30. //}
  31. OnMouseDown();
  32. //下面也可以做一系列的坐标判断来定位精灵移动区域
  33. }
  34. //鼠标左击控制主角精灵移动
  35. IEnumerator OnMouseDown()
  36. {
  37. print("MouseDown");
  38. Vector3 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
  39. Vector3 mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
  40. Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(mScreenPosition);
  41. //鼠标左击
  42. while (Input.GetMouseButton(0))
  43. {
  44. mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
  45. Vector3 pos = offset + Camera.main.ScreenToWorldPoint(mScreenPosition);
  46. pos.z = 0;
  47. transform.position = pos;
  48. yield return new WaitForFixedUpdate();
  49. }
  50. }
  51. }

点击屏幕中的小龙精灵,按下鼠标左键然后拖动,会发现它可以移动哦,哇咔咔,感觉真有意思,又回到了之前熟悉的2D,个人感觉unity2d比cocos2d要方便不少,毕竟可视化界面更丰富一点,但目前而言,个人还是cocos稍微熟悉一点,不过没关系,unity是个不错的强大的引擎,慢慢了解,呵呵,不早了,感觉充实的一天!晚上和某人闹矛盾了,小吐槽了一下,为啥QQ没有自动弹出某人信息的功能或者是将某人的聊天框固定在界面上,这样就不会因为回复晚了而闹矛盾了,如果可以,我觉得要向腾讯反应一下,呵呵,希望某人开心起来!

 

==================== 迂者 丁小未 CSDN博客专栏=================

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

Unity QQ群:858550         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

[unity3d插件]2dtoolkit系列一 创建精灵的更多相关文章

  1. [Unity3D插件]2dtoolkit系列二 动画精灵的创建以及背景图的无限滚动

    经过昨天2dtoolkit系列教程一的推出,感觉对新手还有有一定的启发作用,引导学习使用unity 2dToolKit插件的使用过程,今天继续系列二——动画精灵的创建,以及背景图的无限循环滚动,在群里 ...

  2. [Django 1]安装Django并创建虚拟虚拟环境项目

    1)安装Django 使用pip来安装,命令如下: pip3 install Djangopip install Django(安装到python2)python3 -m pip install Dj ...

  3. [Unity3D插件]2dToolKit系列三 碰撞检测功能的实现以及障碍物的随机摆放

    貌似有一段时间没更新2dtoolkit系列了,这段时间一直在忙着其他事情,今天开始继续这个插件系列的教程,网上搜索,貌似关于这个插件的教程无非还是跟官方的教程很类似,有的甚至都没有自己照着亲手实践一遍 ...

  4. Unity3D插件分享

    网上看到一个讲unity3D插件的,看着不错,转载过来. 本文汇总了近百个Unity3D插件,供大家参考下载. 2D_Toolkit_1.51 动画开发插件包 FingerGestures 触摸插件 ...

  5. BlazeMeter发布chrome扩展插件,支持JMeter脚本创建

    BlazeMeter发布chrome扩展插件,支持JMeter脚本创建http://www.automationqa.com/forum.php?mod=viewthread&tid=3898 ...

  6. [saiku] 源码整合[maven整合]

    saiku源码的整合分为[普通web项目整合]和[maven整合]两种 本节主要是讲解如何整合为maven项目 转载自:http://blog.csdn.net/gsying1474/article/ ...

  7. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF入门教程系列(一) 创建你的第一个WPF项目 WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知 ...

  8. [terry笔记]Oracle会话追踪(二):TKPROF

    接上一笔记[terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046 http://www.cnblogs.com/kkterry/p/3279282.html ...

  9. [terry笔记]Oracle会话追踪(一):SQL_TRACE&EVENT 10046

      SQL_TRACE/10046 事件是 Oracle 提供的用于进行 SQL 跟踪的手段,在日常的数据库问题诊断和解决中是非常常用的方法.但其生成的trace文件需要tkprof工具生成一个可供人 ...

随机推荐

  1. [20160725]MyComparableTest

    知识点: 1.Collections的使用. 2.自定义类泛型的使用. 3.自定义类,toString();equals();hashCode()方法的重写. import java.util.*; ...

  2. 【Unity3D】使用鼠标键盘控制Camera视角(即时战略类游戏视角):缩近,拉远,旋转

    今天写一个demo,要用到鼠标键盘控制三维视角,因此写了个脚本用于控制. 该脚本可以用于即时战略类游戏的视角,提供了缩进,拉伸,旋转.同时按住鼠标右键不放,移动鼠标可以实现第一人称视角的效果. usi ...

  3. poj 1060

    http://poj.org/problem?id=1060 题意:多项式的运算的题目,不过这个运算有个特点,就是只要是同项的多项式,无论相加还是相减,都为0,给你三个多项式,分别为a,b,c. 要你 ...

  4. iptables之链之间的跳转

    创建一个新的链     按照管理,用户自定义的链用小写来区分它们 iptables -N newchain 可以在这个链的尾部跳转到INPUT链 iptables -A newchain -j INP ...

  5. ACM/ICPC 之 DP进阶(51Nod-1371(填数字))

    原题链接:填数字 顺便推荐一下,偶然看到这个OJ,发现社区运营做得很赞,而且交互和编译环境都很赞(可以编译包括Python,Ruby,Js在内的脚本语言,也可以编译新标准的C/C++11,甚至包括Go ...

  6. C#有关日期的使用方法

    DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays( - Convert.ToInt32(dt.DayOfWeek.T ...

  7. jquery.base64.js简单使用

    jquery.base64.js, 加密,使用,先引入jquery,然后引入jquery.base64.js 使用如下 js中加密如下 $.base64.encode(result[i].ipadre ...

  8. 复习sqldataread

    public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader) { ///定义DataTable Data ...

  9. 【leetcode】Subsets (Medium) ☆

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  10. 【C语言】pragma

    ① #pragma comment (lib, "libgsl.a") 这是告诉编译器在编译形成的.obj文件和.exe文件中加一条信息,使得 链接器在链接库的时候要去找libgs ...