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的变化,并及时作出改变
}