Building Manager
每个场景一个 Building Manager,所有对象都向它注册。
Building Part、Socket、Area 和 Group 在启用时自动注册。
可按类型、按 ID 或按距离查找它们。
它还管理各个子系统:Grid、Grouping、Batching、Save、Terrain 和 Physics。
只启用你的游戏需要的部分。
Building Controller
挂在玩家或摄像机上。
保存当前建造模式、当前视角和选中的 Building Part。
将玩家输入发送给当前激活的 Building State。
Building Input
读取确认、取消、旋转和选择操作,并交给当前状态处理。
开箱即用地支持旧版 Input Manager 和新版 Input System。
键盘、鼠标、手柄和触屏全部支持。
光标位于 UI 上方时,建造输入会自动停止。
Building States
每种建造模式对应一个状态,各自拥有 Enter、Update 和 Exit。
Placement:预览部件、吸附到插槽、旋转并对齐网格。
Destruction:移除已放置的部件,并带有独立的反馈效果。
Adjustment:移动已放置的部件,同时保留其连接。
Upgrade:将已放置的部件原地切换为其他变体。
继承 BuildingState 即可添加你自己的模式。
Building Views
视角只回答一个问题:玩家此刻瞄准的是哪里?
内置第一人称、第三人称、俯视角和环绕视角。
每种视角生成各自的建造射线,游戏运行时可随时切换。
继承 BuildingView 即可支持你自己的摄像机。
Building Part
可放置的对象,完全在 Inspector 中配置。
预览效果、放置、条件和行为都集中在一个组件上。
预设可让多个部件共享同一套配置。
渲染器变体用于不同的外观风格和升级等级。
编辑器工具可一键将任意模型变成可直接使用的预制体。
Building Conditions
条件决定某个操作是否允许,不允许时会说明原因。
可检测插槽连接、区域、碰撞、地面接触、支撑、
地形图层、附近树木和坡度限制。
条件按顺序执行,第一个失败的条件会阻止该操作。
继承 BuildingCondition 即可编写你自己的条件。
Building Behaviors
行为在操作完成后才响应,因此永远不会阻止操作。
在放置、破坏、调整或升级时播放动画。
部件被破坏或坍塌时生成物理碎片。
继承 BuildingBehavior 即可制作你自己的效果。
Building Socket
Building Part 之间相互连接的吸附点。
一个插槽可包含多个吸附点,每个都有独立的偏移。
可按 Building Part 或按类别筛选允许连接的对象。
两个插槽靠得很近时,由优先级决定使用哪一个。
Building Grid System
将预览吸附到固定的格子上,并记录哪些格子已被占用。
两个部件永远不会占用同一个格子。
支持多层、按模式显示,以及在每个轴上跟随目标。
距离淡出和线条柔和度均可调节。
仅使用一个四边形和程序化着色器绘制,几乎没有性能开销。
Building Grouping System
相邻放置的部件会自动组成一个结构。
放置、移动或破坏部件时,分组会自动合并或拆分。
合批和坍塌都依赖于分组。
Building Batching System
按材质合并一个分组的网格,以减少 Draw Call。
进入建造模式时附近的分组会解除合批,离开时重新合批。
碰撞体保持不变,物理和射线检测照常工作。
Building Area
一个球形或盒形区域,在其中根据 Building Rules 检查建造。
区域可以重叠,优先级最高的生效。
部件部分或完全位于范围内时,都算作在区域内。
Building Rules
规则可限制类别、数量、高度和间距。
允许或禁止某些类别、限制可放置的部件数量、
限制建造高度,或让部件之间保持距离。
规则也可以直接在 Building Manager 上全局设置,无需区域。
Building Physics System
只要结构仍连接到有锚定的支撑,就能保持稳固。
支撑关系在整个结构中逐个部件进行追踪。
移除承重部件后,其上方的所有部件都可能失去支撑而倒塌。
静止的结构几乎不产生检测开销。
检测分摊到多帧执行,频率可自行调节。
在点击 Play 之前,场景视图中就会用绿色或红色显示支撑状态。
Building Save System
保存每个已放置的部件:变换、插槽、分组、变体和状态。
可存储在 PlayerPrefs、项目文件夹或持久化数据路径中。
可手动调用保存,或按固定间隔自动保存。
每个场景拥有独立的存档槽,并在存档旁生成备份文件。
使用保存和加载回调,可为部件存储你自己的数据。
Building Collections
一个以资源形式保存的 Building Part 引用列表。
可在菜单、Building Input 或你自己的代码中复用。
在 Inspector 中通过可搜索的字段进行选择。
Building Menus UI
可滚动的 Catalog 菜单和 Radial 菜单,基于同一个基类。
类别包含槽位,每个槽位执行一个操作。
支持单机、移动端和手柄输入模式。
需要其他功能时,可添加你自己的槽位操作。
Networking
可选功能,核心框架从不依赖它。
一个适配器负责同步建造命令。
另一个负责权限管理,并保持存档和读档同步。
所有建造操作本身就通过命令系统执行,
因此同一套配置同时适用于单人和多人游戏。
内置 FishNet、Mirror 和 PUN 2,每个都附带玩家和示例场景。
Sample Scenes
功能场景:Socket、Grid、Area、Batching、Save 和 Collapse。
可直接游玩的示例:第一人称、第三人称、俯视角、Terrain、
移动端触屏、手柄、VR、Catalog 菜单和 Radial 菜单。
VR 示例需要 XR Interaction Toolkit 和新版 Input System。
其他所有示例都可在默认支持的项目中运行。
Extensions
四个项目模板,每个对应一种不同的游戏风格。
Buggy Constructor:用鼠标抓取部件,拼装出一辆载具。
Interior Builder:在预制好的房屋内自由摆放家具。
Survival Blueprint:将资源搬运到虚影蓝图处,直到建造完成。
Survival Upgradable:通过材料等级升级已放置的部件。
Integrations
Game Creator 2:用于控制建造的可视化脚本指令。
Game Creator 2 Inventory:基于背包、消耗资源的建造。
PlayMaker:用于控制建造的 FSM 动作。
PUN 2、Mirror 和 FishNet:多人联机建造。