用Unity制作简易计算器

一、前言

初步学习Unity的使用吗,了解游戏对象、空对象、脚本、材质以及它们之间的相互作用关系,掌握常见游戏事件的使用及其执行顺序,学会使用 unity 的简单操作与编程。

学习mvc 设计,并用于小型游戏编程。


二、简答题

  1. 游戏对象(GameObjects)与资源(Assets)的区别与联系
  • 游戏对象是游戏场景中的实体,它们是游戏中一切可见或不可见的东西的基本单元,如玩家、敌人、灯光、摄像机等。每个游戏对象包含多个组件(Component),如 TransformRendererCollider 等,赋予其不同的属性和功能。游戏对象是运行时动态的,可以被激活、销毁或克隆。
  • 资源是项目中保存的数据文件,如 3D 模型、音频、贴图、脚本等,它们用来构建游戏对象。资源是静态的,存储在项目的 Assets 文件夹中,通常需要加载或实例化成游戏对象才能在场景中使用。资源可以用于生成游戏对象。预制件是一种资源,它可以在运行时实例化为游戏对象。

  1. 使用 Debug 验证 MonoBehaviour 的基本行为和事件触发条件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class MonoBehaviourTest : MonoBehaviour{
void Awake(){
Debug.Log("Awake is called once when the script instance is being loaded.");
}

void Start(){
Debug.Log("Start is called before the first frame update.");
}

void Update(){
Debug.Log("Update is called once per frame.");
}

void FixedUpdate(){
Debug.Log("FixedUpdate is called once per physics update.");
}

void LateUpdate(){
Debug.Log("LateUpdate is called after all Update functions have been called.");
}

void OnGUI(){
Debug.Log("OnGUI is called for rendering and handling GUI events.");
}

void OnDisable(){
Debug.Log("OnDisable is called when the object becomes disabled.");
}

void OnEnable(){
Debug.Log("OnEnable is called when the object becomes enabled.");
}
}

  1. GameObject、Transform、Component 官方描述的翻译
  • GameObject 是 Unity 场景中的基本对象,表示角色、道具、场景、摄像机、路径点等。
  • Transform 组件定义场景中每个对象的位置、旋转和缩放。
  • Component 是附加到 GameObject 的基础类,用于启用行为、外观和交互。

  1. 预设(Prefabs)与对象克隆(Clone)
  • 预设的好处

    • 可以预先定义一个游戏对象,并保存为资源,便于重复使用。
    • 提高开发效率,便于统一管理和更新对象的属性和行为。
  • 预设与克隆的关系

    • 预设是资源,可以在运行时使用 Instantiate 将其克隆为一个独立的游戏对象。
1
2
3
4
5
6
7
public GameObject tablePrefab;

void Start()
{
GameObject tableInstance = Instantiate(tablePrefab, new Vector3(0, 0, 0), Quaternion.identity);
Debug.Log("Table prefab instantiated.");
}

三、编程实践

实验内容:使用IMGUI构建UI,用MVC模式制作一个简易计算器

界面概览

MVC模式介绍

  • Model模型
    • 存储和管理数据。
    • 处理业务规则和逻辑。
    • 响应控制器的请求,提供数据给视图。
1
2
3
4
5
6
private string display = "0";    // 显示的值
private string input = ""; // 当前输入的数字
private string operation = ""; // 当前操作符
private float result = 0; // 当前计算结果
private bool isNewOperation = true; // 是否是新操作
private bool hasOperation = false; // 是否已有操作符
  • View视图

    • 显示模型提供的数据。

    • 提供界面元素,供用户操作。

    • GUI.Box():构建显示屏,显示当前的计算结果。

      GUI.Button():生成按钮,供用户点击输入数字和操作符。

      PressNumber()PressOperation():这些是控制器中的函数,用来处理用户输入

      示例代码

  • Controller控制器

    • 处理用户输入(如表单提交、按钮点击)。

    • 调用模型更新数据。

    • 决定使用哪个视图来显示结果。

    • PressNumber():处理用户点击数字按钮的事件,更新输入和显示。

      PressOperation():处理操作符按钮的输入,决定何时进行计算。

      Calculate():根据用户输入的操作符,执行相应的计算逻辑。

      ResetCalculator():重置所有状态,恢复计算器到初始状态

      示例代码

四、成果展示

代码仓库

https://github.com/Boreascup/UnityGameDesignHw/tree/main/hw3%E7%AE%80%E6%98%93%E8%AE%A1%E7%AE%97%E5%99%A8

视频展示

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2024 Boreascup

请我喝杯咖啡吧~

支付宝
微信