您的位置:首页 > 移动开发 > Unity3D

Unity 2048数字控件Num的代码实现

2017-06-14 22:09 881 查看

Num控件的设置



- 图片的Testure Type要设置为Sprite(2D or UI)。



Num类的基本属性

public int NumIndex=2

记录Num对象显示数字的值,默认为2

public int InitX,InitY

记录初始位置,背景棋盘为一个4X4的方格,左上角为(0,0),右下角为(3,3).

public Sprite[] ImageSouce

创建一个Sprite数组,用来储存显示不同数字时对应的Sprite属性,创建Sprite数组需要类实现using UnityEngine.UI。

private Image NumImage

用来储存和设置当前对象的image属性

private Transform Mark

设置了一个标志,该标志在(0,0)点位置,用来帮助Num对象确定自身位置

Num类中的方法

根据NumIndex改变NumImage

#region 根据NumIndex改变NumImage-UpdateImage
private void UpdateImage()
{
NumImage.sprite = ImageSouce[CorrespondImageAndIndex(NumIndex)];
}
#endregion


其中CorrespondImageAndIndex(int x)方法作用是将NumIndex与ImageSouce数组中的图片一一对应

将NumIndex与ImageSouce一一对应

#region 将NumIndex与ImageSouce一一对应-CorrespondImageAndIndex(int NumIndex )
private int CorrespondImageAndIndex(int NumIndex ){
switch (NumIndex) {
case 2:
return 0;
case 4:
return 1;
case 8:
return 2;
case 16:
return 3;
case 32:
return 4;
case 64:
return 5;
case 128:
return 6;
case 256:
return 7;
case 512:
return 8;
case 1024:
return 9;
case 2048:
return 10;
default:
return 0;
}
}
#endregion


初始化位置

#region 初始化位置-InitPos
private void InitPos() {
this.transform.localPosition = new Vector3(Mark.localPosition.x + 84 * InitX, Mark.localPosition.y - 84 * InitY, Mark.localPosition.z);
//localPosition是在父物体下相对位置
}
# endregion


生成动画

#region 生成动画-CreateNum
private void CreateNum()
{
iTween.ScaleTo(this.gameObject, new Vector3(1, 1, 1), 0.2f);
}
#endregion


iTween.ScaleTo() :这里使用了iTween插件,插件中的ScaleTo方法的作用是将目标控件大小在一定时间内变化到指定大小。

this.gameObject代表控件指定,new Vector3(1, 1, 1)是目标大小,0.2f是变化时间。

Awake、Start、Update方法

void Awake() {
NumImage = this.GetComponent<Image>();
//获取当前对象的Image属性
}
void Start() {
Mark = this.transform.parent.Find("Mark").transform;
//取到标志控件
CreateNum();
//创建该控件后,自动调用创建函数
InitPos();
//设置初始位置
}
void Update() {
UpdateImage();
//随时监控控件image的变化,并及时作出改变
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity 控件 对象 图片 ui
相关文章推荐