Unity3d5.0 新UI之2048

因为汽车系统没写出来所以,纠结之中,弄了弄新版本的UI。

做了个2048。

新版本的unity的UI必须以Canvas为基底来呈现,如果没有加画布的话可是显示不出来东西的哦。

而且作为UI上的所有组件都应属于Canvas的子物体,要不也不会显示出来。

如图所示Image并没有在UI界面显示出来。而把Image拖入Canvas中的效果如下图:

ImageUI就显示出来了。

对于其他的组件来说也是必须的。

但是还有一个组件可以不用画布,,但是仅限Text的控制哦。

然后就是2048的程序了,写的很乱&烂,不要吐槽。

要注意的是,因为是调用了UI组件,说以必须导入组件的代码关联包UnityEngine.UI

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class MouseMove : MonoBehaviour {

    private Vector3 firstPoint, endPoint;
    public Text T1;
    public Text T2;
    public Text T3;
    public Text T4;
    public Text T5;
    public Text T6;
    public Text T7;
    public Text T8;
    public Text T9;
    private int[] T = new int[9];

    // Use this for initialization
    void Start () {
        int i = 0;
        while (i != 4) {
            int r = Random.Range (1, 9);
            if (T[r-1] != 1) {
                i++;
                set(r,2);
            }
        }
    }
    
    // Update is called once per frame
    void Update () {//鼠标滑动判读移动方位
        if (Input.GetMouseButtonDown (0)) {
            firstPoint = Input.mousePosition;
        }
        if (Input.GetMouseButtonUp (0)) {
            endPoint = Input.mousePosition;
            Vector3 v= firstPoint - endPoint;
            float angle = Vector3.Angle(v,new Vector3(1,0,0));
            if (angle < 30) heng (1);
            if (angle > 150) heng (2);
            if (angle > 60 && angle < 120) 
                if (firstPoint.y - endPoint.y > 0) shu(2); else shu (1);
            nextrandom();
        }
    }

    void nextrandom(){//随机更新两个位置加2
        int i = 0;
        int pp = 0;
        for (int c=0; c<9; c++)
            if (T [c] == 1)
                pp++;
        if (pp < 7) {
            while (i != 2) {
                int r = Random.Range (1, 9);
                if (T [r - 1] != 1) {
                    i++;
                    set (r, 2);
                }
            }
        }
    }

    void set(int i,int number) {//修改i位置的数值为number
        if (i == 1) 
            T1.text = "" + number;
        if (i == 2)
            T2.text = "" + number;
        if (i == 3)
            T3.text = "" + number;
        if (i == 4)
            T4.text = "" + number;
        if (i == 5)
            T5.text = "" + number;
        if (i == 6)
            T6.text = "" + number;
        if (i == 7)
            T7.text = "" + number;
        if (i == 8)
            T8.text = "" + number;
        if (i == 9)
            T9.text = "" + number;
        if (number == 0)
            T [i-1] = 0; else T[i-1] = 1;
    }

    int get(int i) {//读取i位置的数值
        if (i == 1)
            return int.Parse(T1.text);
        if (i == 2)
            return int.Parse(T2.text);
        if (i == 3)
            return int.Parse(T3.text);
        if (i == 4)
            return int.Parse(T4.text);
        if (i == 5)
            return int.Parse(T5.text);
        if (i == 6)
            return int.Parse(T6.text);
        if (i == 7)
            return int.Parse(T7.text);
        if (i == 8)
            return int.Parse(T8.text);
        if (i == 9)
            return int.Parse(T9.text);
        return 0;
    }

    void change(int p, int o) {
        if (get (p) == get (p + o)) {
            set (p + o, get (p) * 2);
            set (p, 0);
        }
        if (get (p + o) == 0) {
            set (p + o, get (p));
            set (p, 0);
        }
    }

    void heng(int p) {
//四个方向的操作
        if (p == 1) {
            for (int i=1; i<=9; i++) {
                if (i == 2 || i == 5 || i == 8) {
                    if (get (i) != 0)
                        change (i,-1);
                }
                if (i == 3 || i == 6 || i == 9) {
                    if (get (i) != 0) {
                        change (i,-1);
                        change (i-1,-1);
                    }
                }
            }
        }
        if (p == 2) {
            for (int i=9; i>=1; i--) {
                if (i == 2 || i == 5 || i == 8) {
                    if (get (i) != 0)
                        change (i,1);
                }
                if (i == 1 || i == 4 || i == 7) {
                    if (get (i) != 0) {
                        change (i,1);
                        change (i+1,1);
                    }
                }
            }
        }
    }

    void shu(int p) {
        if (p == 1) {
            for (int i=1; i<=9; i++) {
                if (i == 4 || i == 5 || i == 6) {
                    if (get (i) != 0)
                        change (i,-3);
                }
                if (i == 7 || i == 8 || i == 9) {
                    if (get (i) != 0) {
                        change (i,-3);
                        change (i-3,-3);
                    }
                }
            }
        }
        if (p == 2) {
            for (int i=9; i>=1; i--) {
                if (i == 4 || i == 5 || i == 6) {
                    if (get (i) != 0)
                        change (i,+3);
                }
                if (i == 1 || i == 2 || i == 3) {
                    if (get (i) != 0) {
                        change (i,+3);
                        change (i+3,+3);
                    }
                }
            }
        }
    }

}
原文地址:https://www.cnblogs.com/SHOR/p/4908782.html