在 Unity 中使用 C# 编写脚本是实现游戏逻辑的核心方式。Unity 支持 C# 作为主要脚本语言,因其结构清晰、功能强大且易于学习。以下是一个入门级教程,帮助你快速掌握如何在 Unity 中编写 C# 脚本。
创建并附加 C# 脚本
打开 Unity 编辑器,选择任意 GameObject(如 Main Camera 或空物体),在 Inspector 窗口中点击 Add Component,然后选择 New Script,命名为“PlayerMovement”,语言选择 C#。点击 Create and Add 按钮后,Unity 会自动生成一个 .cs 文件并附加到该对象上。
双击该脚本文件,Unity 默认会使用 Visual Studio 或 Rider 打开代码编辑器。你会看到类似以下的基本结构:
using UnityEngine;
<p>public class PlayerMovement : MonoBehaviour
{
void Start()
{
// 初始化代码
}</p><pre class='brush:php;toolbar:false;'>void Update()
{
// 每帧执行的代码
}}
理解 MonoBehaviour 与常用生命周期方法
C# 脚本必须继承自 MonoBehaviour 才能挂载到 GameObject 上。几个关键的生命周期方法包括:
Start():脚本启用时运行一次,适合初始化操作。 Update():每帧调用,适合处理输入、移动等实时逻辑。 FixedUpdate():用于物理计算,配合 Rigidbody 使用更稳定。 Awake():在 Start 前调用,常用于引用赋值或单例模式。实现简单行为:控制物体移动
下面是一个简单的例子,让物体通过键盘方向键前后移动:
using UnityEngine;
<p>public class PlayerMovement : MonoBehaviour
{
public float speed = 5f; // 可在 Inspector 中调节</p><pre class='brush:php;toolbar:false;'>void Update()
{
float moveInput = Input.GetAxis("Vertical"); // 获取前后输入 (-1 到 1)
Vector3 movement = transform.forward * moveInput * speed * Time.deltaTime;
transform.position += movement;
}}
保存脚本后回到 Unity 编辑器,你可以在 Inspector 中看到 Speed 参数,可直接调整数值。运行场景后,按 W/S 键即可看到物体前后移动。
与其它组件交互
你可以通过 GetComponent 获取其他组件。例如,给物体添加 Rigidbody 后,用物理方式移动:
public class PhysicsMove : MonoBehaviour
{
public float force = 10f;
private Rigidbody rb;
<pre class='brush:php;toolbar:false;'>void Awake()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.W))
{
rb.AddForce(transform.forward * force);
}
}}
注意这里使用 FixedUpdate 和 AddForce 来确保物理模拟正确。
基本上就这些。掌握基本结构、生命周期和组件交互后,你就可以逐步实现复杂的游戏机制了。
