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
0
投稿
猜你喜欢
- 依赖的jar包:spring相关jar包版本:4.3.1.RELEASE<dependency> &l
- 1,带Tomcat的打包方式1.1, 在pom.xml文件添加以下配置(目的:自定main入口和跳过Junit代码)<build>
- 本文实例为大家分享了JavaMail实现带附件的邮件发送的具体代码,供大家参考,具体内容如下发送纯文本的邮件package com.haiw
- SessionFactory在Hibernate中实际上起到了一个缓冲区的作用 他缓冲了HI
- 一:SparkSQL1.SparkSQL简介Spark SQL是Spark的一个模块,用于处理结构化的数据,它提供了一个数据抽象DataFr
- 1.break 关键字break 主要用在:① 循环语句中② switch语句中它的作用:用来跳出整个语句块。1.1语法break 的用法很
- 泛型 一般 出现在集合中,迭代器中 也会出现!泛型 是为了 提高代码的 安全性。 泛型 确保数据类型的唯一性。在我们常用的容器中
- 一、异步模型的基本概述异步编程的核心是 Task 和 Task<T> 对象,这两个对象对异步操作建模。 它们受关键字 async
- 平时开发,基本不改变的常量我们都放在了配置项里,如properties或yml文件里,这个时候为了只在启动时候进行加载。如何做呢?我们通过s
- java的比较器有两类,分别是Comparable接口和Comparator接口。在为对象数组进行排序时,比较器的作用非常明显,首先来讲解C
- 前言:在 Java 语言中,保证线程安全性的主要手段是加锁,而 Java 中的锁主要有两种:synchronized 和 Lock,我们今天
- 关于页面渲染其实在工作中,一直都是前后端分离,也就是说,我的工作从来都是提供接口,而不写 html css js 之类的,所以在这方面也没有
- java 中遍历取值异常(Hashtable Enumerator)解决办法用迭代器取值时抛出的异常:java.util.NoSuchEle
- Maven 的生命周期maven 将项目的生命周期(Lifecycle)抽象为了三种,每种生命周期中又包含了多个阶段(Phase)。也就是说
- 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元素的存储位置,
- 第一步,导入jar包<!--Redis--> <dependency
- boolean isGBK(String s) throws UnsupportedEncodingException { if(s.equ
- 一、创建资源文件可以将字符串、图像或对象数据等资源包含在资源文件中,方便应用程序使用。创建资源文件的方法:1、手动或使用IDE工具自动生成X
- 1、switch支持String做参数/*** * switch支持字符串做参数 jdk7 * @author huangjiawei */
- Android 消息机制1.概述Android应用启动时,会默认有一个主线程(UI线程),在这个线程中会关联一个消息队列(MessageQu