Unity使用多態(tài)制作計算器功能
本文實例為大家分享了Unity使用多態(tài)制作計算器,供大家參考,具體內(nèi)容如下
Unity中需要的組件
在Unity中創(chuàng)建兩個InputField,一個Dropdown,一個Button和一個Text


創(chuàng)建腳本文件
計算父類
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>
/// 實現(xiàn)父類計算方法
/// </summary>
/// <returns>加法計算結(jié)果</returns>
public override float Compute()
{
return Number1 + Number2;
}
}
減法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Subtraction : Jsq.Calculate
{
/// <summary>
/// 實現(xiàn)父類計算方法
/// </summary>
/// <returns>減法計算結(jié)果</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()
{
//獲取兩個參數(shù)
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;
//利用多態(tài)返回運算結(jié)果
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組件

再將對應(yīng)的組件拉進去:順序分別是第一個InputField里的text(注意都是text),第二個InputField里的text,然后是Dropdown里面的Label,最后是顯示結(jié)果的Text


最后在給等于號按鈕添加一個執(zhí)行函數(shù)

最后在運行unity,加減乘除都可以計算,大功告成!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#使用DeflateStream解壓縮數(shù)據(jù)文件的方法
這篇文章主要介紹了C#使用DeflateStream解壓縮數(shù)據(jù)文件的方法,較為詳細的分析了DeflateStream方法對文件進行壓縮及解壓縮的步驟與技巧,需要的朋友可以參考下2015-04-04
C#使用StopWatch獲取程序毫秒級執(zhí)行時間的方法
這篇文章主要介紹了C#使用StopWatch獲取程序毫秒級執(zhí)行時間的方法,涉及C#操作時間的相關(guān)技巧,需要的朋友可以參考下2015-04-04
C#如何提取經(jīng)緯度文件中的經(jīng)緯度數(shù)據(jù)
近期開發(fā)時需要獲取當前的經(jīng)緯度坐標,下面這篇文章主要給大家介紹了關(guān)于C#如何提取經(jīng)緯度文件中經(jīng)緯度數(shù)據(jù)的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-08-08

