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

Num控件的设置

相应的sprite图片
- 图片的Testure Type要设置为Sprite(2D or UI)。
Num类属性的设置

Num类的基本属性

  1. public int NumIndex=2
    记录Num对象显示数字的值,默认为2
  2. public int InitX,InitY
    记录初始位置,背景棋盘为一个4X4的方格,左上角为(0,0),右下角为(3,3).
  3. public Sprite[] ImageSouce
    创建一个Sprite数组,用来储存显示不同数字时对应的Sprite属性,创建Sprite数组需要类实现using UnityEngine.UI。
  4. private Image NumImage
    用来储存和设置当前对象的image属性
  5. private Transform Mark
    设置了一个标志,该标志在(0,0)点位置,用来帮助Num对象确定自身位置

Num类中的方法

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

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

  1. 将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
  1. 初始化位置
    #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
  1. 生成动画
    #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是变化时间。

  1. 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的变化,并及时作出改变
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值