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
按钮,选择保存路径,等待构建完成。