包含此页的版本:
不含此页的版本:
传统的 Unity 项目以面向对象的设计原则和编程理念为基础,以对象、它们的属性和功能以及这些对象之间的关系为中心。代码围绕游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表其行为由附加的 MonoBehaviour 控制 组件游戏对象的功能部分。游戏对象可以包含任意数量的组件。Unity 有许多内置组件,您可以通过编写继承自 MonoBehaviour 的脚本来创建自己的组件。更多信息
请参阅术语表.通常,这些 MonoBehaviour 组件将逻辑(方法)和数据(字段)封装在一起,这可能很方便,但可能会出现大规模性能问题。
面向对象开发的替代方法是面向数据开发,它既是一种设计理念,也是一种帮助您实现该理念的一组技术。这种方法强调代码和数据之间的明确分离,以最大限度地提高 CPU 缓存效率和并行性。实体组件系统 (ECS) 架构不是 MonoBehaviours,而是使用组件来存储数据,使用系统来存储逻辑。面向数据的方法在大规模上提供了强大的性能优势,但对于没有经验的开发人员来说,学习起来可能更具挑战性。
面向对象和面向数据的开发并不相互排斥,您可以组合两者的元素。有关面向数据的开发的信息,请参阅 Unity 的面向数据的技术堆栈。
| 主题 | 描述 |
|---|---|
| 基本 Unity 类型 | 了解 Unity 提供的一些基本 C# 类型及其在 Unity 编辑器和运行时中的特殊意义和行为。 |
| 管理更新和执行顺序 | 了解 Unity 执行脚本组件的顺序以及这些组件中的生命周期回调脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息 请参阅术语表在运行时应用程序循环期间。 |
| 管理时间和帧速率 | 了解 Unity 如何测量时间,以便您可以管理应用程序中时间流逝的速率,并确保值根据适当的时间尺度更新。 |
| 处理事件 | 使应用程序响应用户输入、对象等事件碰撞当物理引擎检测到两个游戏对象的碰撞器接触或重叠时,当至少一个游戏对象具有刚体组件并且处于运动状态时,就会发生碰撞。更多信息 请参阅术语表,以及物理和渲染更新。 |
| 使用协程跨帧拆分任务 | 将任务的执行同步拆分为多个场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息 请参阅术语表与协程。这对于应该在多个帧中逐渐进行的任务非常有用,例如淡出效果。 |
| 与 Web 服务器交互 | 使用 UnityWebRequest 系统允许您的应用程序通过 HTTP 与 Web 服务器进行交互。 |
| 在运行时向对象添加功能 | 使用 Unity 属性 API 实现访问者设计模式,并在运行时向 .NET 对象添加新作。 |
| 数学编程 | 使用 Unity 的数学 API 在应用程序中应用三角函数、对数函数和其他函数,使用向量移动对象,并生成随机值。 |