MVC模式
MVC 模式代表 Model-View-Controller模式。这种模式用于应用程序的分层开发。
- Model(模型):模型代表一个存取数据的对象。它也可以带有逻辑,在数据变化时更新控制器。
- View(视图):视图代表模型包含的数据的可视化。
- Controller(控制器):控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
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空对象中。
点击运行游戏即可。