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[]; // 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的更多相关文章
- vue2.0 操作数组下标不跟新ui,使用set()或$forceUpdate 也不能跟新视图情况
在vue 2.0 中操作数组不跟新ui图,即使使用set()或 $forceUpdate也不能跟新视图,我在前段时间也遇到了一个问题,当时我使用的时element 的tree 组件 由于需要对tree ...
- (十)Unity5.0新特性------新UI系统实战
原文 Unity New GUI Tutorial – Part 1 Unity New GUI Tutorial- Part 2 Unity New GUI Tutorial – Part 3 大家 ...
- 背水一战 Windows 10 (1) - C# 6.0 新特性
[源码下载] 背水一战 Windows 10 (1) - C# 6.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 6.0 新特性 介绍 C# 6.0 的新特性 示例1 ...
- 一个Activity掌握Android5.0新控件 (转)
原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常 ...
- 精进不休 .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 ...
- Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView
Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView 8.0出来很久了,这个新特性已经用了很久了,但是一直没有亲自去试试.这几天新的需求来 ...
- 转载 精进不休 .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 ...
- Android Studio 3.0 新特性
最新Android Studio版本是Android Studio 3.0,本文提供了所有新功能和更改的摘要. 所有这些功能都可以在最新的金丝雀版本中发布,但beta测试版本可能尚未提供. 核心IDE ...
- Android 8.0 新特性
Android 8.0 (Android Oreo(奥利奥))新特性介绍 通知渠道 - Notification Channels 通知渠道是由应用自行定义的通知内容类别,借助渠道,开发者可以让用户对 ...
随机推荐
- 64位centos 下编译 hadoop 2.6.0 源码
64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...
- Windows 8的本地化应用程序清单
I need to localize some data in application manifest (like name, description, splashscreen images et ...
- lecture5-对象识别与卷积神经网络
Hinton第五课 突然不知道object recognition 该翻译成对象识别好,还是目标识别好,还是物体识别好,但是鉴于范围性,还是翻译成对象识别吧.这一课附带了两个论文<Convolu ...
- Theano2.1.4-基础知识之图结构
来自:http://deeplearning.net/software/theano/tutorial/symbolic_graphs.html Graph Structures Theano是将符号 ...
- 关于base64编码的原理和实现
在前文 Data URI 应用场景小结 中我们提到了一个概念,叫做 base64编码,今天我们就来聊聊 base64编码,揭开它的神秘面纱. 一句话解释:Base64是一种基于64个可打印字符来表示二 ...
- 如何配置多个ssh key
上一篇简单学习了下怎样利用git bash上传文件到指定的github项目中,我们来回顾下.首先在本地安装好git,设置好用户名和邮箱(提交时的显示),接着我们生成SSH key把它添加到该项目own ...
- 正式版/免费版 Xamarin 体验与拥抱
感谢MS, 感谢老纳.终于把 Xamarin 这个磨人的小妖精给收了,在也不用向大神要破解补丁了, 终于可以光明正大的使用了!! 跟据实践, 如果你们想体验一下 .NET 开发 IOS /Androi ...
- Nodejs进阶:如何玩转子进程(child_process)
本文摘录自个人总结<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 模块概览 在node中,child_process这个模 ...
- android animation中的参数interpolator详解
android:interpolator interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以 accelerated(加速),decelerated(减速), ...
- Castle 多继承选择
Castle 多继承选择 很多时候,我们定义了一个接口,但是这个接口会有多种不同的,这时IOC构造函数注入的时候,就需要自动选择对应的实现. public interface ITestService ...