在本篇博客中,我们将创建一个简单的Unity小游戏,名为“翻转方块”。玩家的任务是通过点击游戏板上的方块,将它们翻转为相同的颜色,以获得胜利。我们将逐步介绍游戏的不同部分,包括游戏的模型、视图和控制组件,以及它们之间的交互。
游戏概述
翻转方块游戏的目标是将所有方块都翻转成相同的颜色,要么是红色,要么是蓝色。玩家通过点击方块来改变它们的颜色,以达到游戏的胜利条件。
游戏模型
在我们开始编写代码之前,让我们先了解游戏的模型部分。游戏模型包括了一个3x3的方块棋盘,每个方块可以处于以下三种状态之一:
- 0:未翻转
- 1:翻转为红色
- 2:翻转为蓝色
我们使用一个二维数组cubeBoard
来表示游戏板上每个方块的状态。
private int[,] cubeBoard = new int[3, 3];
游戏视图
游戏的视图部分使用Unity的OnGUI函数来呈现游戏板和方块。我们使用GUI.Button来创建每个方块,玩家可以点击它们来翻转方块的颜色。
void OnGUI()
{
// 绘制游戏板
GUI.Box(new Rect(210, 25, 300, 300), "");
// 创建方块并处理点击事件
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (cubeBoard[i, j] == 0)
{
if (GUI.Button(new Rect(255 + j * 70, 50 + i * 70, 70, 70), ""))
{
FlipCube(i, j);
}
}
else if (cubeBoard[i, j] == 1)
{
GUI.Box(new Rect(255 + j * 70, 50 + i * 70, 70, 70), "Red");
}
else if (cubeBoard[i, j] == 2)
{
GUI.Box(new Rect(255 + j * 70, 50 + i * 70, 70, 70), "Blue");
}
}
}
// 检查游戏是否完成
if (IsGameComplete())
{
GUI.Box(new Rect(260, 50, 200, 200), "\n\n\n\n\nCongratulations!\n You've completed the game!");
}
}
游戏控制
游戏的控制部分包括了初始化游戏、翻转方块和检查游戏是否完成的功能。
初始化游戏
在游戏开始时,我们随机初始化游戏板上每个方块的颜色。
游戏视图
void InitializeGame()
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cubeBoard[i, j] = Random.Range(1, 3); // 随机初始化方块颜色
}
}
}
翻转方块
当玩家点击一个方块时,我们需要翻转它的颜色。这通过FlipCube
函数实现。
void FlipCube(int row, int col)
{
int currentColor = cubeBoard[row, col];
cubeBoard[row, col] = 3 - currentColor; // 切换颜色
}
检查游戏完成
我们需要检查游戏是否完成,即所有方块是否都变成了相同的颜色。这通过IsGameComplete
函数来实现。
bool IsGameComplete()
{
int targetColor = cubeBoard[0, 0];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (cubeBoard[i, j] != targetColor)
{
return false; // 只要有一个方块颜色与目标不同,游戏未完成
}
}
}
return true; // 所有方块颜色相同,游戏完成
}
游戏完成
当玩家成功将所有方块翻转成相同颜色时,游戏会宣布胜利,玩家将看到一条胜利的消息。
总代码:
using UnityEngine;
public class FlipCubeGame : MonoBehaviour
{
private int[,] cubeBoard = new int[3, 3]; // 0: 未翻转,1: 翻转为红色,2: 翻转为蓝色
void Start()
{
InitializeGame();
}
void OnGUI()
{
GUI.Box(new Rect(210, 25, 300, 300), "");
if (GUI.Button(new Rect(310, 270, 100, 30), "Restart"))
{
InitializeGame();
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (GUI.Button(new Rect(255 + j * 70, 50 + i * 70, 70, 70), ""))
{
FlipCube(i, j);
}
if (cubeBoard[i, j] == 1)
{
GUI.Box(new Rect(255 + j * 70, 50 + i * 70, 70, 70), "Red");
}
else if (cubeBoard[i, j] == 2)
{
GUI.Box(new Rect(255 + j * 70, 50 + i * 70, 70, 70), "Blue");
}
}
}
if (IsGameComplete())
{
GUI.Box(new Rect(260, 50, 200, 200), "\n\n\n\n\nCongratulations!\n You've completed the game!");
}
}
void InitializeGame()
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cubeBoard[i, j] = Random.Range(1, 3);
}
}
}
void FlipCube(int row, int col)
{
int currentColor = cubeBoard[row, col];
cubeBoard[row, col] = 3 - currentColor;
}
bool IsGameComplete()
{
int targetColor = cubeBoard[0, 0];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (cubeBoard[i, j] != targetColor)
{
return false;
}
}
}
return true;
}
}
视频演示:
翻转方块
这就是创建一个简单的翻转方块小游戏的过程。这个示例展示了如何在Unity中使用GUI来呈现游戏界面,并通过代码实现游戏逻辑。你可以根据自己的需要进一步扩展和改进这个游戏,添加更多功能和挑战。
希望这篇博客能帮助你入门Unity游戏开发,并启发你创建更多有趣的小游戏项目!如果你有任何问题或建议,请随时留言~