因为汽车系统没写出来所以,纠结之中,弄了弄新版本的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); } } } } } }