Unity 实践学习笔记:创建一个简单的得分系统

创建项目

在 Unity Hub 中新建一个名为“ScoreGame”的 3D 项目。进入主界面后,熟悉场景视图和层级面板。

添加基础对象

在层级视图中右键点击空白处,选择 3D Object > Cube 来添加一个立方体作为玩家角色,调整位置使其悬浮在地面上。接着,添加一个 Plane 作为地面,并设置其大小,以便提供足够的活动空间。

编写移动脚本

创建一个新的 C# 脚本,命名为 PlayerMovement,并在 Update() 函数中实现基础移动逻辑:

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float speed = 5f;

    void Update()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
        transform.Translate(movement * speed * Time.deltaTime);
    }
}

将此脚本附加到立方体对象上,为其赋予移动能力。

添加物理效果

为玩家立方体添加 Rigidbody 组件,使其受到重力影响。在 Inspector 面板中,确保 “Use Gravity” 选项被勾选,以允许立方体自然下落。

创建可击打对象

添加多个 Sphere 作为目标对象,随机设置它们的位置和大小。在每个球体上也添加 Rigidbody 组件,使其能够响应物理碰撞。为了让球体在被击打时产生反应,可以为每个球体添加一个新的脚本,命名为 Target,代码如下:

using UnityEngine;

public class Target : MonoBehaviour
{
    public int pointValue = 1; // 每个目标的分值

    private void OnMouseDown()
    {
        GameManager.Instance.AddScore(pointValue);
        Destroy(gameObject); // 点击后销毁目标
    }
}

将该脚本附加到每个球体上。

创建游戏管理器

创建一个空的 GameObject,命名为 GameManager,并添加如下脚本:

using UnityEngine;
using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance { get; private set; }
    public Text scoreText;
    private int score = 0;

    private void Awake()
    {
        Instance = this; // 确保单例模式
    }

    public void AddScore(int points)
    {
        score += points;
        scoreText.text = "Score: " + score; // 更新分数文本显示
    }
}

在 Inspector 中,将 UI 文本元素拖拽至相应字段以完成关联。

添加用户界面

在层级视图中右键选择 UI > Text,创建一个用于显示分数的文本元素。调整其位置与样式,使其在屏幕上清晰可见。

测试功能

按下 Play 按钮以启动游戏,使用 WASD 键控制立方体移动。当鼠标点击球体时,观察分数是否增加并且球体被销毁。

导出项目

项目基本功能测试完毕后,选择 File > Build Settings,将目标平台设置为 Windows。点击 Build 按钮,选择保存路径,等待构建完成。

发表评论