经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » unity » 查看文章
Unity使用多态制作计算器功能
来源:jb51  时间:2021/8/9 10:07:03  对本文有异议

本文实例为大家分享了Unity使用多态制作计算器,供大家参考,具体内容如下

Unity中需要的组件

在Unity中创建两个InputField,一个Dropdown,一个Button和一个Text


创建脚本文件

计算父类

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Jsq : MonoBehaviour
  6. {
  7. public abstract class Calculate
  8. {
  9. public float Number1
  10. {
  11. get;
  12. set;
  13. }
  14. public float Number2
  15. {
  16. get;
  17. set;
  18. }
  19. public abstract float Compute();
  20. }
  21. }

加法

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Addition : Jsq.Calculate
  6. {
  7. /// <summary>
  8. /// 实现父类计算方法
  9. /// </summary>
  10. /// <returns>加法计算结果</returns>
  11. public override float Compute()
  12. {
  13. return Number1 + Number2;
  14. }
  15. }

减法

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Subtraction : Jsq.Calculate
  6. {
  7. /// <summary>
  8. /// 实现父类计算方法
  9. /// </summary>
  10. /// <returns>减法计算结果</returns>
  11. public override float Compute()
  12. {
  13. return Number1 - Number2;
  14. }
  15. }

乘法

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Multiplication : Jsq.Calculate
  6. {
  7. public override float Compute()
  8. {
  9. return Number1 * Number2;
  10. }
  11. }

除法

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class NewBehaviourScript : Jsq.Calculate
  6. {
  7. public override float Compute()
  8. {
  9. return Number1 / Number2;
  10. }
  11. }

等于号按钮

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using System;
  6.  
  7. public class EqualBtn : Jsq
  8. {
  9. public Text txt_Number1;
  10. public Text txt_Number2;
  11. public Text cbb_Operator;
  12. public Text lab_Result;
  13.  
  14. public void btn_click()
  15. {
  16. //获取两个参数
  17. float number1 = Convert.ToSingle(txt_Number1.text.Trim());
  18. float number2 = Convert.ToSingle(txt_Number2.text.Trim());
  19. //获取运算符
  20. string operation = cbb_Operator.text.Trim();
  21. //通过运算符,返回父类类型
  22. Calculate calculate = GetCalculateResult(operation);
  23. calculate.Number1 = number1;
  24. calculate.Number2 = number2;
  25. //利用多态返回运算结果
  26. string result = calculate.Compute().ToString();
  27. this.lab_Result.text = result;
  28.  
  29. }
  30.  
  31. private Calculate GetCalculateResult(string operation)
  32. {
  33. Calculate calculate = null;
  34. switch (operation)
  35. {
  36. case "+":
  37. calculate = new Addition();
  38. break;
  39. case "-":
  40. calculate = new Subtraction();
  41. break;
  42. case "*":
  43. calculate = new Multiplication();
  44. break;
  45. case "/":
  46. calculate = new Division();
  47. break;
  48. }
  49. return calculate;
  50. }
  51. }

将等于号按钮脚本赋给Canvas组件

再将对应的组件拉进去:顺序分别是第一个InputField里的text(注意都是text),第二个InputField里的text,然后是Dropdown里面的Label,最后是显示结果的Text


最后在给等于号按钮添加一个执行函数

最后在运行unity,加减乘除都可以计算,大功告成!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号