初学者教程: Unity 5 猜数字游戏 






4.57/5 (4投票s)
在本教程中,我们将介绍如何创建一个简单的数字猜谜游戏。用户将猜一个介于 1 和 10 之间的数字。

在本教程中,我们将介绍如何创建一个简单的数字猜谜游戏。用户将猜一个介于 1 和 10 之间的数字。
您可以在以下链接中在线玩该游戏: http://www.adefwebserver.com/unity/numberguesserapp/

计算机将告诉用户他们猜的数字是太高还是太低。

当用户正确猜出数字时,计算机将通知他们,用户可以按空格键重新开始游戏。
创建游戏

第一步是下载并安装 Unity 5。
打开 Unity 并创建一个 新项目。

将项目命名为 NumberGuesser,选择 2D,然后单击 创建项目 按钮。

项目打开后,单击 Main Camera。然后在 Inspector 中,单击背景颜色。
当 Color 弹出窗口打开时,将点拖到颜色面板的左上角,将颜色更改为 白色。

单击 Close 按钮关闭 Color 弹出窗口。

从菜单栏中,选择 GameObject,然后选择 UI,再选择 Text。

此时会显示一个带有 Text 对象和 EventSystem 的 Canvas。

按住 Alt 键并右键单击并拖动以缩小(或单击场景并使用鼠标滚轮滚动缩小)。
缩小直到可以看到 Text Box。

单击 Text Box 并将其拖到 Canvas 上。

确保选择了 Rect 工具。

选择 Text Box,然后在 Inspector 中
- 将 Width 设置为 400,将 Height 设置为 50
- 将 Text 设置为:Guess a number between 1 and 10
- 将 Alignment 设置为 centered

单击 Play 按钮。
文本将显示出来。

再次单击 Play 按钮停止程序并返回设计模式。
为游戏创建代码

选择 Text Box,在其属性(在 Inspector 中)中,选择 Add Component。
向下滚动列表底部,然后选择 New Script 旁边的箭头。

为 Name 输入 TextController,确保为语言选择了 C Sharp,然后单击 Create and Add 按钮。

将创建 TextController 脚本并显示在 Assets 文件夹中。
该脚本还将附加到 TextBox。
在 Assets 文件夹中双击 TextController 脚本将其打开。

Visual Studio 将启动……

脚本编辑器将打开。
将所有代码更改为以下内容:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class TextController : MonoBehaviour
{
    public Text objText;
    int intRandomNumber;
    int intGuessedNumber;
    // Use this for initialization
    void Start()
    {
    }
    // Update is called once per frame
    void Update ()
    {
    }
}

基本上,我们添加了两个稍后将使用的变量(intRandomNumber 和 intGuessedNumber)以及一个我们将用于与游戏屏幕上的 Text 元素通信的公共属性(objText)。

保存页面……

切换回 Unity 编辑器,单击 Hierarchy 中的 Text 对象以选中它。
将 Hierarchy 中的 Text 拖到附加到 TextBox 的 Text Controller 中 Obj Text 属性旁边的框中。
(这会将 Text Box 设置为我们创建的脚本中的 objText 属性。该脚本将设置 Text Box 的文本)
切换回 Visual Studio 并添加以下方法
    private void InitializeGame()
    {
        // Pick a random number
        intRandomNumber = Random.Range(1, 10);
        // Set the text to start the game
        objText.text = "Guess a number between 1 and 10";
    }
接下来,更新 Start 方法(该方法将在程序启动时运行一次)为以下代码(以调用我们刚刚创建的 InitializeGame 方法)
    void Start()
    {
        InitializeGame();
    }

如果您已安装 Visual Studio Tools for Unity,则可以设置断点(通过单击代码文件左侧的灰色区域),然后选择 Attach to Unity……

切换回 Unity 编辑器并单击 Play 按钮……

……然后您将命中断点。

您可以按 F5 继续,您将切换回 Unity 游戏。

暂时,只需从 Visual Studio 的 Debug 菜单中选择 Stop Debugging。
将 Update 方法更改为以下代码
    // Update is called once per frame
    void Update()
    {
        // Hitting the spacebar always restarts the game
        if (Input.GetKeyDown(KeyCode.Space))
        {
            InitializeGame();
        }
    }
每当按下 空格键 时,这将调用 InitializeGame 方法。
该方法将为用户选择一个新的随机数来猜测。
将以下代码添加到 Update 方法中
        // Detect that a keystroke was pressed
        if (Input.anyKeyDown)
        {
            // Test to see if the keystroke was a number
            if (int.TryParse(Input.inputString, out intGuessedNumber))
            {
                if (intRandomNumber > intGuessedNumber)
                {
                    objText.text = 
                        string.Format("You guessed {0}. You are too low"
                        , intGuessedNumber);
                }
                if (intRandomNumber < intGuessedNumber)
                {
                    objText.text = 
                        string.Format("You guessed {0}. You are too high"
                        , intGuessedNumber);
                }
                if (intRandomNumber == intGuessedNumber)
                {
                    objText.text = 
                        string.Format("You guessed {0}. \n You are correct! \n (press spacebar to continue)"
                        , intGuessedNumber);
                }
            }
        }
这将检测用户按下了哪个键,并将该数字与 InitializeGame 方法中创建的随机数进行比较。
如果猜对了数字,系统会提示用户按空格键重新开始游戏。
链接
注释
运行示例代码需要 Unity 5(或更高版本)。


