unity怎么做ugui计算器
1个回答
展开全部
一、搭建UI
用系统自带的UI图标拼出一个简单的计算器(还算可以吧QAQ)锚点、字体大小什么的设置好就OK啦,比较简单。
二、编写代码控制运算
1、数字按钮的制作
先设置一个空物体,这里命名为Manager,后面的脚本都挂在这个上面
新建一个脚本Count来计数,并挂在Manager上;
为每一个按钮写一个计数函数(从0到9);
说明:这里的Show.text是用来显示数字的(记得把text组件挂在脚本)
Manager.num先不用管,后面你就知道了。
并为每个按钮添加触发事件,也就是上面写的函数啦
2、运算按钮的制作
在写运算的方法之前,我们先新建一个Manager脚本来管理这些运算。(一般地,按钮的触发事件会单独放在
一个脚本中)
上面我们已经可以做到点击按钮显示字符了,那么:
在写Manager脚本之前,先想一想,如果是你,你会怎么去写计算部分呢?
+-/*的算法都是差不多的,只要能写出一个,其他都解决了,那么就单独看看加法怎么做吧。
1 + 2 = 3;可我们输入的是字符串,这好办,可以用Convert.ToDouble将字符转化为数字,但是,这里
的字符串中还有+,+可无法转化,于是很自然的想到应该用两个变量分别对其进行存储;
而我的思路是:显示器上该显示什么就让他显示什么,我不管;我单独用两个全局变量分别来保存数字和
运算符。遇到数字就保存在num中,遇到运算符就放在sign中。
在+按钮按下后,先把第一个数给保存起来,然后赋值,并把num清空,以便给下一次存储数据;
而其他运算按钮也是一样的方法。
3、小数处理
小数在num里出现时可以转换为double类型,我们并不需要特殊处理,唯一需要注意的是,不能让“.”连续出现,如:“0.......1”
所以用if (!Manager.num.Contains("."))语句来控制输入;
str.Contains()的用法是,判断str中是否包含某个字符串,如果有返回真,否则为假。
4、运算处理
首先我们需要为=按钮写个方法,好让点击按钮后会出现计算结果
这里if ("" != Manager.num)是为了防止出现“1+”就计算的情况,只有一个数就参与计算是会出错的
算也是比较简单的,没啥好说。Operation()要放在Update里。
5、清除按钮
6、退格
退格的话,就是去掉字符串的最后一个字符,我们用Substring就可以办到
SubString的用法:
第一个参数是从字符串的第几个开始,第二个参数是长度
如:
"abcdefg".substring(4,2)
返回的值为:ef
从字符串"abcdefg"中第4位开始取,取2位。
退格的话,我们还是要分两部分处理的,一个是显示部分,一个是Manager.num和last部分
由于开始我们是分开保存的,这里就分开消除。
希望可以帮助到您 如果有要找unity插件可以到http://www.narkii.com/club/forum-51-1.html去找
用系统自带的UI图标拼出一个简单的计算器(还算可以吧QAQ)锚点、字体大小什么的设置好就OK啦,比较简单。
二、编写代码控制运算
1、数字按钮的制作
先设置一个空物体,这里命名为Manager,后面的脚本都挂在这个上面
新建一个脚本Count来计数,并挂在Manager上;
为每一个按钮写一个计数函数(从0到9);
说明:这里的Show.text是用来显示数字的(记得把text组件挂在脚本)
Manager.num先不用管,后面你就知道了。
并为每个按钮添加触发事件,也就是上面写的函数啦
2、运算按钮的制作
在写运算的方法之前,我们先新建一个Manager脚本来管理这些运算。(一般地,按钮的触发事件会单独放在
一个脚本中)
上面我们已经可以做到点击按钮显示字符了,那么:
在写Manager脚本之前,先想一想,如果是你,你会怎么去写计算部分呢?
+-/*的算法都是差不多的,只要能写出一个,其他都解决了,那么就单独看看加法怎么做吧。
1 + 2 = 3;可我们输入的是字符串,这好办,可以用Convert.ToDouble将字符转化为数字,但是,这里
的字符串中还有+,+可无法转化,于是很自然的想到应该用两个变量分别对其进行存储;
而我的思路是:显示器上该显示什么就让他显示什么,我不管;我单独用两个全局变量分别来保存数字和
运算符。遇到数字就保存在num中,遇到运算符就放在sign中。
在+按钮按下后,先把第一个数给保存起来,然后赋值,并把num清空,以便给下一次存储数据;
而其他运算按钮也是一样的方法。
3、小数处理
小数在num里出现时可以转换为double类型,我们并不需要特殊处理,唯一需要注意的是,不能让“.”连续出现,如:“0.......1”
所以用if (!Manager.num.Contains("."))语句来控制输入;
str.Contains()的用法是,判断str中是否包含某个字符串,如果有返回真,否则为假。
4、运算处理
首先我们需要为=按钮写个方法,好让点击按钮后会出现计算结果
这里if ("" != Manager.num)是为了防止出现“1+”就计算的情况,只有一个数就参与计算是会出错的
算也是比较简单的,没啥好说。Operation()要放在Update里。
5、清除按钮
6、退格
退格的话,就是去掉字符串的最后一个字符,我们用Substring就可以办到
SubString的用法:
第一个参数是从字符串的第几个开始,第二个参数是长度
如:
"abcdefg".substring(4,2)
返回的值为:ef
从字符串"abcdefg"中第4位开始取,取2位。
退格的话,我们还是要分两部分处理的,一个是显示部分,一个是Manager.num和last部分
由于开始我们是分开保存的,这里就分开消除。
希望可以帮助到您 如果有要找unity插件可以到http://www.narkii.com/club/forum-51-1.html去找
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询