Unity——使用IMGUI制作MVC框架简易小游戏


MVC模式

MVC 模式代表 Model-View-Controller模式。这种模式用于应用程序的分层开发。

  • Model(模型):模型代表一个存取数据的对象。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图):视图代表模型包含的数据的可视化。
  • Controller(控制器):控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

MVC

MVC架构小游戏制作

游戏简介

基于MVC架构制作了一款反应力与准确性测试小游戏。在游戏过程中需要不断点击带有“O”图案的按钮,测试点击30次按钮需要花费多长时间,一旦点击到错误的按钮,则会以失败结束游戏。
游戏画面

游戏制作过程

编写脚本代码

代码框架按照MVC架构严格分为Model、View、Controller三部分。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Caculator : MonoBehaviour{

    //Model
    private static int score;
    private int x, y;
    private int[,] board = new int [3, 3];
    private bool stop;
    private static float begin_time, used_time;

    //System Handlers
    void Start(){
        Init();
    }

    //View
    void OnGUI(){
        GUI.Box(new Rect(210, 25, 300, 300), "");
        if (GUI.Button(new Rect(310, 270, 100, 30), "Restart"))
            Init();

        if(!stop){
            for(int i = 0; i < 3; i++){
                for(int j = 0; j < 3; j++){
                    if(board[i, j] == 1){
                        if(GUI.Button(new Rect(255 + j * 70, 50 + i * 70, 70, 70), "O"))
                            hit();
                    }
                    else{
                        if(GUI.Button(new Rect(255 + j * 70, 50 + i * 70, 70, 70), ""))
                            miss();
                    }
                }
            }
        }
        else{
            GUI.Box(new Rect(260, 50, 200, 200), "\n\n\n\nYour Score is:\n" + score + "\n\nUsed Time:\n" + used_time + "s\n");
        }
        
    }

    //Controller
    void Init(){
        score = 0;
        begin_time = Time.time;
        used_time = 0.0f;
        stop = false;
        GenerateNext();
    }

    void boardInit(){
        for(int i = 0; i < 3; i++){
            for(int j = 0; j < 3; j++)
                board[i, j] = 0;
        }
    }

    void GenerateNext(){
        x = Random.Range(0, 3);
        y = Random.Range(0, 3);
        boardInit();
        board[x, y] = 1;
    }

    void hit(){
        score++;
        if(score == 30)
            miss();
        GenerateNext();
    }

    void miss(){
        used_time = Time.time - begin_time;
        stop = true;
    }
    
}

Unity操作

在场景中创建一个空对象,并命名为init。
在这里插入图片描述
将编写好的代码文件拖拽到init空对象中。
在这里插入图片描述
点击运行游戏即可。

游戏展示

自制小游戏展示视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity游戏中,MVC框架可以帮助我们更好地管理UI。MVC是一种将代码的功能进行划分的设计框架,主要原理是将软件用户界面和业务逻辑分离,提高代码的可扩展性、可复用性、可维护性和灵活性。 在Unity中,我们可以将MVC框架应用到游戏的UI设计中。举个例子来说,当游戏要发布节日活动,并且需要相应地更改游戏UI时,使用MVC框架可以将UI的功能分开,达到低耦合的效果。这样,当替换UI时,其他功能不会受到影响,提高游戏的质量。 在Unity开发过程中,许多公司都使用MVC的逻辑模式,即数据模型-视图-控制器。数据模型负责存储和管理游戏数据,视图负责显示用户界面,而控制器负责处理用户输入和更新数据模型。通过将这些功能分离,我们可以更好地组织和管理UI代码,提高开发效率。 所以,通过应用MVC框架,我们可以更好地管理Unity游戏的UI,提高代码的可维护性和可扩展性,同时也能提高游戏的质量和用户体验。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Unity3D日常开发】Unity3d中使用MVC框架](https://blog.csdn.net/q764424567/article/details/83788696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Unity框架——MVC框架](https://blog.csdn.net/Htlas/article/details/79076201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值