撰写了文章 更新于 2017-10-23 23:04:52
[Unity2D]十五分钟小游戏开发实例
恰好这阵子有点时间,今天抽点空正巧把游戏的一些基础类的内容梳理一遍,有些时候想法的框架构建比实施反而更加重要,恰好对于没有Unity基础的阅读者来说,这篇文章从落实到完成只需要15min,如果正巧感兴趣,不妨和我一起体验一下快捷的游戏方式,以及从GDD到落实的简单实现。
GDD
所谓GDD,即是GameDesignDocument,游戏设计文档。哪怕是最简单的游戏(感觉说的就是我现在的这个游戏),花费少量时间将游戏的基本逻辑和实现方法理清,也会对我们的整体游戏设计思路有重大的帮助。正所谓行百里路者半九十,好的文档至少可以为游戏的实现打下扎实的基础。以接下来我们要进行的游戏为例具体说明一下。
游戏很简单,作为玩家的你想一个1-1000的整数,让电脑来揣测,并且只能让玩家通过你猜的数字高了或者低了来提示电脑。在规定的次数中猜对,则电脑获胜,反之则是玩家取胜。
如果是通过GDD来实现的话,整个工作流如下:
开始菜单→游戏画面→失败/胜利→开始菜单的循环逻辑,接下来要做的就是将游戏逻辑落实到具体的游戏开发中
游戏界面与逻辑实现
根据GDD描述,在Unity2D中新建四个Scene,对应文档中的四块逻辑实现部分:
逻辑的实现基本就是通过这四个场景的切换来构成。简单介绍下如何通过点击按钮来实现跳转的:
以开始菜单Start按钮为例,新建StartButton,类型UI.Text,创建空物体挂载脚本LevelManager,并添加如下代码
public void LoadLevel(string name){
SceneManager.LoadScene(name);
}
public void QuitLevel(){
Application.Quit();
}
在Text物件下的OnClick()功能中拖拽挂载该脚本的物件至Object中,并选择对应方法即可实现。(右侧string name需要手动填写场景名称)
电脑AI的实现
对应电脑的猜测逻辑,其实最容易实现的方法即是每次取最大值与最小值的中间数,可以实现效率最大化。不过相对来说也更为冷冰冰,不够人性化。通过代码的实现,我们希望添加些随机性的元素在内,具体代码实现如下:
public int min;
public int max;
public int guess;
public int maxGuessAllowed;
public Text text;
void Start()
{
StartGame();
}
void StartGame()
{
min = 1;
max = 1000;
NextGuess();
}
public void GuessHigher() {
min = guess;
NextGuess();
}
public void GuessLower() {
max = guess;
NextGuess();
}
void NextGuess()
{
guess = Random.Range(min,max+1);
text.text = guess.ToString();
maxGuessAllowed -=1;
if (maxGuessAllowed<=0)
{
SceneManager.LoadScene("Win");
}
}
GuessHigher()及GuessLower()方法通过上述挂载空物件的方法赋予给对应的控制按钮。
maxGuessesAllowed指代电脑可以猜测的最大数目,超过该次数则自动跳转到玩家胜利界面。
使用Random.Range来增加随机的成分,显得电脑更加的智(ruo)能(zhi).
当电脑猜对数字的情况下,则点击Bingo按钮自动跳转到失败界面,这个逻辑也是非常清晰简单的。
那么就是这么样子了,熟练的话你也可以自己再试试看如何进行二次加工,15min小游戏Finish!睡觉~
目录
帕斯卡 1年前
代码没对齐!!!
万有引力之虹 [作者] 1年前
吼小吼 1年前
帕斯卡 1年前
吼小吼 1年前
发布
NoobPotato 1年前
万有引力之虹 [作者] 1年前
发布
GENTOVA 1年前
吼小吼 1年前
棒主 1年前
发布