从今天开始要做一个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来控制我们图片的操作,比如缩放移动或者旋转之类的。
三、利用精灵集创建精灵
四、创建普通贴图精灵
五、代码获取精灵并操作精灵
using UnityEngine;
using System.Collections;
publicclass NewBehaviourScript : MonoBehaviour {
//创建精灵
//tk2dSprite sprite;
// Use this for initialization
void Start () {
//可以这样获取精灵
//sprite = GameObject.Find("Dragon").gameObject.GetComponent();
//输出精灵的坐标
//print("x:" + gameObject.transform.localPosition.x + "|y:" + transform.localPosition.y);
//一开始打印的坐标是x:-1|y:0
//以下代码可以动态的缩放精灵
//sprite.scale = new Vector3(xScale, yScale, zScale);
//以下代码可改变要显示的精灵
//sprite.spriteId = newSpriteId;
//以下代码可以得到id
//sprite.spriteId = sprite.GetSpriteIdByName("Rock");
}
void Update()
{
//通过键盘控制改变物体颜色的属性
//if (Input.GetKeyDown(KeyCode.A))
//{
// sprite.color = Color.red;
//}
//if (Input.GetKeyDown(KeyCode.S))
//{
// sprite.color = Color.white;
//}
OnMouseDown();
//下面也可以做一系列的坐标判断来定位精灵移动区域
}
//鼠标左击控制主角精灵移动
IEnumerator OnMouseDown()
{
print("MouseDown");
Vector3 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
Vector3 mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(mScreenPosition);
//鼠标左击
while (Input.GetMouseButton(0))
{
mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
Vector3 pos = offset + Camera.main.ScreenToWorldPoint(mScreenPosition);
pos.z = 0;
transform.position = pos;
yield returnnew WaitForFixedUpdate();
}
}
}
点击屏幕中的小龙精灵,按下鼠标左键然后拖动,会发现它可以移动哦,哇咔咔,感觉真有意思,又回到了之前熟悉的2D,个人感觉unity2d比cocos2d要方便不少,毕竟可视化界面更丰富一点,但目前而言,个人还是cocos稍微熟悉一点,不过没关系,unity是个不错的强大的引擎,慢慢了解,呵呵,不早了,感觉充实的一天!晚上和某人闹矛盾了,小吐槽了一下,为啥QQ没有自动弹出某人信息的功能或者是将某人的聊天框固定在界面上,这样就不会因为回复晚了而闹矛盾了,如果可以,我觉得要向腾讯反应一下,呵呵,希望某人开心起来!