Unity 如何构建游戏?
了解游戏对象、组件和生命周期
该博客上撰写的文章是出于教学目的而创建的。 另外,文章中的信息可能不正确,请谨慎。
Unity 是一个通过将必要的功能作为组件附加到游戏对象来配置游戏的引擎。 它更接近于组合小功能而不是加深继承结构。
GameObject 更像是一个空容器
场景中可见的大多数角色、摄像机和灯光都是游戏对象。 但是,游戏对象本身不会在屏幕上出现或移动。
Player GameObject
├─ Transform
├─ SpriteRenderer
├─ Rigidbody2D
└─ PlayerController
Transform有位置、旋转和大小。 SpriteRenderer绘制图像,Rigidbody2D参与物理计算。 开发人员创建的 C# 脚本也成为组件。
MonoBehaviour 的生命周期
给定时间点的统一MonoBehaviour调用该函数。
using UnityEngine;
public class PlayerMover : MonoBehaviour
{
[SerializeField] private float speed = 5f;
private void Start()
{
Debug.Log("玩家已准备就绪");
}
private void Update()
{
float x = Input.GetAxisRaw("Horizontal");
transform.position += Vector3.right * x * speed * Time.deltaTime;
}
}
Awake当准备其初始状态时,Start在第一帧之前连接到另一个对象时经常使用。 Update每帧都会被调用,因此它有利于处理输入和一般更新。
如果你施加物理力量,它就会以固定的时间间隔被调用。FixedUpdate考虑。 所有代码Update您应该首先检查每个框架是否确实需要它,而不是将其放入 。
场景和预制件
场景是当前放置在屏幕上的一组对象。 Prefab 是一个可重复使用并保存为资源的游戏对象配置。
每次放置同一敌人多次时,可以复制预制件,而无需重置组件。 修改的内容也可以基于Prefab反映到多个实例中。
启动 Unity 时,最好在一个场景中仅创建玩家、地板和目标点,然后完成从输入到碰撞的流程。 区分每个组件的职责比区分游戏对象的职责更重要。