2. 脚本编写与C#基础应用
在 Unity 中,脚本是用来控制游戏对象的行为和交互的。Unity 使用 C# 作为编程语言。下面将详细介绍如何在 Unity 中编写脚本,并展示一些基本的脚本实例。
在Unity中编写脚本
创建脚本
-
在项目窗口中创建脚本:
- 右键点击项目窗口,选择
Create
>C# Script
。 - 为脚本命名,例如
MyScript
。
- 右键点击项目窗口,选择
-
编辑脚本:
- 双击新创建的脚本文件,会自动在代码编辑器中打开(例如 Visual Studio)。
关联脚本到游戏对象
-
将脚本拖拽到游戏对象上:
- 将
MyScript
脚本从项目窗口拖拽到场景中的游戏对象上。
- 将
-
使用组件面板添加脚本:
- 选择游戏对象,在检视器(Inspector)面板中点击
Add Component
。 - 输入脚本名称(例如
MyScript
),并选择它。
- 选择游戏对象,在检视器(Inspector)面板中点击
示例:创建脚本并关联到游戏对象
using UnityEngine;
public class MyScript : MonoBehaviour
{
void Start()
{
Debug.Log("Hello, Unity!");
}
}
MonoBehaviour生命周期
MonoBehaviour
是所有 Unity 脚本的基类,包含许多生命周期方法,可以在特定时间点执行代码。
常用生命周期方法
- Awake: 在对象初始化时调用。优先于
Start
执行。 - Start: 在脚本启用后的第一帧调用。
- Update: 每帧调用一次,用于处理游戏对象的常规更新。
- FixedUpdate: 每固定帧率调用一次,用于物理计算。
- LateUpdate: 每帧在所有
Update
调用之后调用,用于处理后续更新。
示例:生命周期方法
using UnityEngine;
public class MyScript : MonoBehaviour
{
void Awake()
{
Debug.Log("Awake called");
}
void Start()
{
Debug.Log("Start called");
}
void Update()
{
Debug.Log("Update called");
}
void FixedUpdate()
{
Debug.Log("FixedUpdate called");
}
void LateUpdate()
{
Debug.Log("LateUpdate called");
}
}
基本脚本实例
移动游戏对象
示例:在 Update
方法中使用 Translate
方法来移动游戏对象
using UnityEngine;
public class MoveObject : MonoBehaviour
{
public float speed = 5.0f;
void Update()
{
float move = speed * Time.deltaTime;
transform.Translate(Vector3.forward * move);
}
}
旋转游戏对象
示例:在 Update
方法中使用 Rotate
方法来旋转游戏对象
using UnityEngine;
public class RotateObject : MonoBehaviour
{
public float rotationSpeed = 100.0f;
void Update()
{
float rotation = rotationSpeed * Time.deltaTime;
transform.Rotate(Vector3.up, rotation);
}
}
示例代码
以下是一个完整的示例代码,展示了如何创建一个脚本并关联到游戏对象,以及如何在 Update
方法中移动和旋转游戏对象。
using UnityEngine;
public class MoveAndRotateObject : MonoBehaviour
{
public float moveSpeed = 5.0f;
public float rotationSpeed = 100.0f;
void Update()
{
// 移动游戏对象
float move = moveSpeed * Time.deltaTime;
transform.Translate(Vector3.forward * move);
// 旋转游戏对象
float rotation = rotationSpeed * Time.deltaTime;
transform.Rotate(Vector3.up, rotation);
}
}
在 Unity 编辑器中,你可以创建一个空的游戏对象,然后将 MoveAndRotateObject
脚本附加到这个游戏对象上。运行场景时,这个游戏对象将会每帧移动和旋转。