前言
本次小游戏的创作使用Unity中的即时模式GUI (IMGUI) 绘制游戏人机交互界面,完成了一个简单的反应力小游戏:每间隔0.5秒,在界面上5x5的方格矩阵中会随机出现一个带有一个圈的符号的按钮,在0.5秒内点击该按钮即加分;小游戏中有开始和暂停两个按钮。小游戏代码主要分为模型、视图和控制器三部分,即MVC模式。

一、模型
首先需要对方格矩阵的模型开辟一个5x5的数组(board),然后需要按下开始后的等待时间(startinterval)、点出现的间隔时间(interval)、点出现次数的记录(count)、得分(score)变量作为小游戏运行的数据记录。除此之外,还创建了一个用来标识是否开始游戏(start)的布尔值变量,用于控制开始和暂停的一系列控制器事件的发生。

二、视图
代码的视图部分主要是绘制游戏的人机交互界面。首先需要的是一个主界面,使用GUI.Box创建一个大小为300x300的主界面;然后是两个用来表示分数和点出现次数的标签,用GUI.Label创建;还有两个分别用来表示开始(Start)和暂停(Stop)的按钮,用GUI.Button创建。除此之外,还需要创建一个5x5的方格矩阵,并且需要每一个格子都能被点击,所以使用的是按钮来表示方格。方格矩阵代码设定为按下按钮开始后,方格矩阵出现,并将随机产生的点击位置的按钮的标识设为一个圈,当按下该按钮时,分数加1。

三、控制器
控制器分为初始化(Init)、开始(Begin)、暂停(Stop)、随机产生点击位置(GenerateBoard)。
初始化:将代表方格矩阵模型的5x5数组全部置为0。用于每次产生点击位置前对方格矩阵的还原。

开始:在没有开始或暂停的状态(start == false),控制游戏的开始,即将分数、点出现次数设置为0,将状态start设置为true,开始随机产生点击位置(调用GenerateBoard函数),开始产生的等待时间和产生点击位置的间隔时间分别设置为startinterval和interval。

暂停:在已经开始的状态下(start == true),控制游戏的结束,即将状态start设置为false,停止随机点击位置的产生,并初始化数组board(调用函数Init)

随机产生点击位置:首先需要初始化数组(Init),对方格矩阵进行还原。然后产生两个随机数,分别代表数组board的某一个点(x,y)中的第一维度(x的位置)和第二维度(y的位置),用来表示随机产生的点击的位置,将数组中的该位置设置为1,并将点出现次数(count)加1。

四、结语
综上所述,完成了Unity中的即时模式GUI实现人机交互界面的游戏设计,学习了GUI中最基本的一些代码实现,如GUI实现按钮、GUI实现点击事件等等,了解了GUI的代码的基本语法。同时,学习了MVC模式,即Model-View-Controller(模型-视图-控制器)模式的使用,对于Unity的游戏设计和实现提供了不小的帮助。