Unity使用多态制作计算器功能
作者:LaoB丶 发布时间:2022-10-15 02:50:06
标签:Unity,计算器
本文实例为大家分享了Unity使用多态制作计算器,供大家参考,具体内容如下
Unity中需要的组件
在Unity中创建两个InputField,一个Dropdown,一个Button和一个Text
创建脚本文件
计算父类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Jsq : MonoBehaviour
{
public abstract class Calculate
{
public float Number1
{
get;
set;
}
public float Number2
{
get;
set;
}
public abstract float Compute();
}
}
加法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Addition : Jsq.Calculate
{
/// <summary>
/// 实现父类计算方法
/// </summary>
/// <returns>加法计算结果</returns>
public override float Compute()
{
return Number1 + Number2;
}
}
减法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Subtraction : Jsq.Calculate
{
/// <summary>
/// 实现父类计算方法
/// </summary>
/// <returns>减法计算结果</returns>
public override float Compute()
{
return Number1 - Number2;
}
}
乘法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Multiplication : Jsq.Calculate
{
public override float Compute()
{
return Number1 * Number2;
}
}
除法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : Jsq.Calculate
{
public override float Compute()
{
return Number1 / Number2;
}
}
等于号按钮
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
public class EqualBtn : Jsq
{
public Text txt_Number1;
public Text txt_Number2;
public Text cbb_Operator;
public Text lab_Result;
public void btn_click()
{
//获取两个参数
float number1 = Convert.ToSingle(txt_Number1.text.Trim());
float number2 = Convert.ToSingle(txt_Number2.text.Trim());
//获取运算符
string operation = cbb_Operator.text.Trim();
//通过运算符,返回父类类型
Calculate calculate = GetCalculateResult(operation);
calculate.Number1 = number1;
calculate.Number2 = number2;
//利用多态返回运算结果
string result = calculate.Compute().ToString();
this.lab_Result.text = result;
}
private Calculate GetCalculateResult(string operation)
{
Calculate calculate = null;
switch (operation)
{
case "+":
calculate = new Addition();
break;
case "-":
calculate = new Subtraction();
break;
case "*":
calculate = new Multiplication();
break;
case "/":
calculate = new Division();
break;
}
return calculate;
}
}
将等于号按钮脚本赋给Canvas组件
再将对应的组件拉进去:顺序分别是第一个InputField里的text(注意都是text),第二个InputField里的text,然后是Dropdown里面的Label,最后是显示结果的Text
最后在给等于号按钮添加一个执行函数
最后在运行unity,加减乘除都可以计算,大功告成!
来源:https://blog.csdn.net/asd1484507772/article/details/105165080


猜你喜欢
- hibernate一级缓存和二级缓存的区别缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用
- (一) shiro的SecurityManager类结构为:总结: 1.SecurityManager主要作用于登录、登出用创建主题Subj
- 最新idea2020安装部署超详细教程懂得懂的2020.32020.2.42020.2.32020.2.220.2.12019.32018.
- 背景当一个项目分了很多模块,很多个服务的时候,一些公共的配置就需要统一管理了,于是就有了元数据驱动!简介什么是Calcite?是一款开源SQ
- 场景在任何一个Form表单的操作页面或者数据台账的查询页面,基本都会看到一个清除的按钮,其功能就是用来清除我们需要抛弃的已经写入到控件内的数
- 一、Druid简介Druid是阿里开源的数据库连接池,作为后起之秀,性能比dbcp、c3p0更高,使用也越来越广泛。当然Druid不仅仅是一
- 包括系统钩子和线程钩子,或者叫全局钩子和私有钩子。系统钩子需要一个单独的DLL,这个地方耽误了不少时间,网上有说可以不用单独DLL的。 现在
- 那么Http协议中的Multipart是个什么东东?下面是摘抄http协议1.1的一段话:
- 查 看: File------>Project Structure-------
- Shiro是什么Shiro是一个Java平台的开源权限框架,用于认证和访问授权。具体来说,满足对如下元素的支持:用户,角色,权限(仅仅是操作
- 记录web项目部署到阿里云服务器步骤(使用 web项目、阿里云服务器、Xftp、Xshell),敬请参考和指正1.将要部署的项目打包成WAR
- 这篇文章主要介绍了break在scala和java中的区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 大家好,因为近期做需求中遇到了文件上传这个东西,而且我这个还是跨服务去传输文件的所以我这边使用了httpclient和RestTemplat
- 所以对于应用层用着还不是很方便。最近做一个项目顺便就封装了一个调用默认打印机的类。虽说有几个小bug,但对于目前来说,已经满足需求了。以后不
- 本文实例讲述了Android编程实现滑动按钮功能。分享给大家供大家参考,具体如下:首先效果图:然后是分别建立三个文件,第一个是main.cl
- 本文实例讲述了Android编程ProgressBar自定义样式之动画模式实现方法。分享给大家供大家参考,具体如下:忘记在哪里看到的那位仁兄
- Android ListView的优化,在做Android项目的时候,在用到ListView 界面及数据显示,这个时候如果资源过大,对项目来
- 本文实例为大家分享了unity实现场景跳转的具体代码,供大家参考,具体内容如下话不多说直接开始操作步骤。1.打开我们的unity创建一个工程
- 一、问题描述在C#中is,as,using关键字具有其特点及使用场景,其中is关键字用于检查该对象是否与给定类型兼容,as关键字用于将对象转
- 一、案例介绍模拟一个商品的站内搜索系统(类似淘宝的站内搜索);商品详情保存在mysql数据库的product表中,使用mybatis框架;站