因为汽车系统没写出来所以,纠结之中,弄了弄新版本的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[]; // Use this for initialization
void Start () {
int i = ;
while (i != ) {
int r = Random.Range (, );
if (T[r-] != ) {
i++;
set(r,);
}
}
} // Update is called once per frame
void Update () {//鼠标滑动判读移动方位
if (Input.GetMouseButtonDown ()) {
firstPoint = Input.mousePosition;
}
if (Input.GetMouseButtonUp ()) {
endPoint = Input.mousePosition;
Vector3 v= firstPoint - endPoint;
float angle = Vector3.Angle(v,new Vector3(,,));
if (angle < ) heng ();
if (angle > ) heng ();
if (angle > && angle < )
if (firstPoint.y - endPoint.y > ) shu(); else shu ();
nextrandom();
}
} void nextrandom(){//随机更新两个位置加2
int i = ;
int pp = ;
for (int c=; c<; c++)
if (T [c] == )
pp++;
if (pp < ) {
while (i != ) {
int r = Random.Range (, );
if (T [r - ] != ) {
i++;
set (r, );
}
}
}
} void set(int i,int number) {//修改i位置的数值为number
if (i == )
T1.text = "" + number;
if (i == )
T2.text = "" + number;
if (i == )
T3.text = "" + number;
if (i == )
T4.text = "" + number;
if (i == )
T5.text = "" + number;
if (i == )
T6.text = "" + number;
if (i == )
T7.text = "" + number;
if (i == )
T8.text = "" + number;
if (i == )
T9.text = "" + number;
if (number == )
T [i-] = ; else T[i-] = ;
} int get(int i) {//读取i位置的数值
if (i == )
return int.Parse(T1.text);
if (i == )
return int.Parse(T2.text);
if (i == )
return int.Parse(T3.text);
if (i == )
return int.Parse(T4.text);
if (i == )
return int.Parse(T5.text);
if (i == )
return int.Parse(T6.text);
if (i == )
return int.Parse(T7.text);
if (i == )
return int.Parse(T8.text);
if (i == )
return int.Parse(T9.text);
return ;
} void change(int p, int o) {
if (get (p) == get (p + o)) {
set (p + o, get (p) * );
set (p, );
}
if (get (p + o) == ) {
set (p + o, get (p));
set (p, );
}
} void heng(int p) {
//四个方向的操作
if (p == ) {
for (int i=; i<=; i++) {
if (i == || i == || i == ) {
if (get (i) != )
change (i,-);
}
if (i == || i == || i == ) {
if (get (i) != ) {
change (i,-);
change (i-,-);
}
}
}
}
if (p == ) {
for (int i=; i>=; i--) {
if (i == || i == || i == ) {
if (get (i) != )
change (i,);
}
if (i == || i == || i == ) {
if (get (i) != ) {
change (i,);
change (i+,);
}
}
}
}
} void shu(int p) {
if (p == ) {
for (int i=; i<=; i++) {
if (i == || i == || i == ) {
if (get (i) != )
change (i,-);
}
if (i == || i == || i == ) {
if (get (i) != ) {
change (i,-);
change (i-,-);
}
}
}
}
if (p == ) {
for (int i=; i>=; i--) {
if (i == || i == || i == ) {
if (get (i) != )
change (i,+);
}
if (i == || i == || i == ) {
if (get (i) != ) {
change (i,+);
change (i+,+);
}
}
}
}
} }

Unity3d5.0 新UI之2048的更多相关文章

  1. vue2.0 操作数组下标不跟新ui,使用set()或$forceUpdate 也不能跟新视图情况

    在vue 2.0 中操作数组不跟新ui图,即使使用set()或 $forceUpdate也不能跟新视图,我在前段时间也遇到了一个问题,当时我使用的时element 的tree 组件 由于需要对tree ...

  2. (十)Unity5.0新特性------新UI系统实战

    原文 Unity New GUI Tutorial – Part 1 Unity New GUI Tutorial- Part 2 Unity New GUI Tutorial – Part 3 大家 ...

  3. 背水一战 Windows 10 (1) - C# 6.0 新特性

    [源码下载] 背水一战 Windows 10 (1) - C# 6.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 6.0 新特性 介绍 C# 6.0 的新特性 示例1 ...

  4. 一个Activity掌握Android5.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常 ...

  5. 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性

    [索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...

  6. Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView

    Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView 8.0出来很久了,这个新特性已经用了很久了,但是一直没有亲自去试试.这几天新的需求来 ...

  7. 转载 精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel) https://www.cnblogs.com/webabcd/archive/2010/06/03/1750449.html

    精进不休 .NET 4.0 (5) - C# 4.0 新特性之并行运算(Parallel)   介绍C# 4.0 的新特性之并行运算 Parallel.For - for 循环的并行运算 Parall ...

  8. Android Studio 3.0 新特性

    最新Android Studio版本是Android Studio 3.0,本文提供了所有新功能和更改的摘要. 所有这些功能都可以在最新的金丝雀版本中发布,但beta测试版本可能尚未提供. 核心IDE ...

  9. Android 8.0 新特性

    Android 8.0 (Android Oreo(奥利奥))新特性介绍 通知渠道 - Notification Channels 通知渠道是由应用自行定义的通知内容类别,借助渠道,开发者可以让用户对 ...

随机推荐

  1. Crowdsourcing(众包)

    群众外包(英语:crowdsourcing)是互联网带来的新的生产组织形式.<连线>(Wired)杂志记者Jeff Howe于2006年发明的一个专业术语,用来描述一种新的商业模式,即企业 ...

  2. Android回调

    当A页面跳往B页面做一些操作后,再从B页面回到A页面时,A页面想要回去一些B页面操作的数据时,我们一般会使用回调. 1 public class MainActivity extends Activi ...

  3. 【JavaEE企业应用实战学习记录】struts2登录

    <%-- login.jsp Created by IntelliJ IDEA. User: Administrator Date: 2016/10/6 Time: 16:26 To chang ...

  4. php URL判断

    // 检查 URL 地址语法是否有效(正则表达式也允许 URL 中的斜杠)      if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a ...

  5. 开发错误日记 12: Unsupported major.minor version 52.0

    开发错误日记 12: Unsupported major.minor version 52.0 在编译时出现如下错误: java.lang.UnsupportedClassVersionError: ...

  6. ubuntu eclipse 不能新建javaweb项目解决方案

    ubuntu下,通过sudo apt-get install eclipse 成功安装了eclipse,可它简洁的都让我不知如何新建web project.网上查了众多资料,终于找到了一系列简洁的方法 ...

  7. easyui-datagrid 的loader属性用法

    API介绍比较简略: 定义如何从远程服务器加载数据.返回false可以放弃本次请求动作.该函数接受以下参数:param:参数对象传递给远程服务器.success(data):当检索数据成功的时候会调用 ...

  8. [转]oracle数据类型和对应的java类型

    地址: http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.htm ...

  9. [转]Eclipse工具使用技巧总结

    首先推荐一篇非常好的How to use eclipse文章 ,讲的是eclipse使用的方方面面,非常实用,推荐给大家! 一.常用快捷键:Ctrl+F11 运行Ctrl+Shift+/ 在代码窗口中 ...

  10. 【BZOJ 4598】【SDOI 2016 Round2 Day1 T3】模式字符串

    2016-05-21因为BZOJ上“ 数据文件太过巨大,仅提供前三组数据测试.”所以我考场上写的60分的点分治交上去也A了. 我的这个点分治的时间复杂度是$O(Tnmlogn)$的,听题解时没听懂$O ...