Unity使用多態(tài)制作計(jì)算器功能
本文實(shí)例為大家分享了Unity使用多態(tài)制作計(jì)算器,供大家參考,具體內(nèi)容如下
Unity中需要的組件
在Unity中創(chuàng)建兩個(gè)InputField,一個(gè)Dropdown,一個(gè)Button和一個(gè)Text
創(chuàng)建腳本文件
計(jì)算父類(lèi)
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> /// 實(shí)現(xiàn)父類(lèi)計(jì)算方法 /// </summary> /// <returns>加法計(jì)算結(jié)果</returns> public override float Compute() { return Number1 + Number2; } }
減法
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Subtraction : Jsq.Calculate { /// <summary> /// 實(shí)現(xiàn)父類(lèi)計(jì)算方法 /// </summary> /// <returns>減法計(jì)算結(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; } }
等于號(hào)按鈕
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() { //獲取兩個(gè)參數(shù) float number1 = Convert.ToSingle(txt_Number1.text.Trim()); float number2 = Convert.ToSingle(txt_Number2.text.Trim()); //獲取運(yùn)算符 string operation = cbb_Operator.text.Trim(); //通過(guò)運(yùn)算符,返回父類(lèi)類(lèi)型 Calculate calculate = GetCalculateResult(operation); calculate.Number1 = number1; calculate.Number2 = number2; //利用多態(tài)返回運(yùn)算結(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; } }
將等于號(hào)按鈕腳本賦給Canvas組件
再將對(duì)應(yīng)的組件拉進(jìn)去:順序分別是第一個(gè)InputField里的text(注意都是text),第二個(gè)InputField里的text,然后是Dropdown里面的Label,最后是顯示結(jié)果的Text
最后在給等于號(hào)按鈕添加一個(gè)執(zhí)行函數(shù)
最后在運(yùn)行unity,加減乘除都可以計(jì)算,大功告成!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#實(shí)現(xiàn)格式化文本并導(dǎo)入到Excel
這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)格式化文本并導(dǎo)入到Excel,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-05-05C#中Selenium?WebDriver的常用操作小結(jié)
這篇文章主要為大家詳細(xì)介紹了C#中Selenium?WebDriver的常用操作,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考一下2024-01-01淺談C#2.0泛型中的變化:default關(guān)鍵字
下面就詳細(xì)的說(shuō)明一下。之所以會(huì)用到default關(guān)鍵字,是因?yàn)樾枰诓恢李?lèi)型參數(shù)為值類(lèi)型還是引用類(lèi)型的情況下,為對(duì)象實(shí)例賦初值2013-09-09C#學(xué)習(xí)基礎(chǔ)概念二十五問(wèn)
C#學(xué)習(xí)基礎(chǔ)概念二十五問(wèn)...2007-04-04CAD2008+VS2008開(kāi)發(fā)ObjectARX加載失敗問(wèn)題(推薦)
這篇文章主要介紹了CAD2008+VS2008開(kāi)發(fā)ObjectARX加載失敗問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04json格式數(shù)據(jù)分析工具PageElement類(lèi)分享(仿Session寫(xiě)法)
json格式數(shù)據(jù)分析工具PageElement類(lèi)分享,可像Session一樣自由獲取Json元素的Key與Value。并可方便與ADO進(jìn)行交互2013-12-12c#幾種數(shù)據(jù)庫(kù)的大數(shù)據(jù)批量插入(SqlServer、Oracle、SQLite和MySql)
這篇文章主要介紹了c#幾種數(shù)據(jù)庫(kù)的大數(shù)據(jù)批量插入(SqlServer、Oracle、SQLite和MySql),需要的朋友可以了解一下。2016-11-11