用途:将策划对程序化生成的设计意图翻译为 Unity 可调、可预览、可复现的代码模式,解决生成内容硬编码、无法调优与约束的问题。
主要能力:
- 噪声生成:NoiseConfig(频率、振幅、八度、持续度、间隙度、偏移、域扭曲)配合 NoiseGenerator 的 fBm 采样,支持生物群系独立配置与 Inspector 调参。
- 瓦片与网格:Grid<T> 提供邻接、边界、坐标与世界坐标转换;TileDefinition 定义瓦片及允许邻居;IPlacementRule 校验放置规则。
- 地牢房间生成:DungeonConfig 配置尺寸、房间大小与数量、BSP 分割深度与比例、走廊宽度、特殊房间;BSP 放置房间并用走廊连接;ConnectivityValidator 以洪水填充校验连通性。
- 种子与复现:SeededRandom 封装 System.Random,支持区间取值、加权选择、按子系统派生种子;生成代码避免使用 UnityEngine.Random,种子可玩家输入或自动生成并存入存档。
- 内容预算:ContentBudget 与 ContentEntry 定义类别最小/最大数量、权重与必放置项;ContentPlacer 先保底再按权重填充,并做事后校验。
使用方式:将参数做成 ScriptableObject 资产,通过 [CreateAssetMenu] 在 Unity 内创建;用 [Range]/[Min] 暴露给策划;以 [ExecuteAlways]/OnValidate 或专用 EditorWindow 做预览;每套生成系统暴露参数、支持种子复现并提供编辑器预览。
适用场景:需要自然地形或植被分布、城市建造/农场/战棋类网格放置、Roguelike 地牢布局、需要分享种子或 QA 复现、以及需要满足难度与数量约束的内容生成。
限制与注意:Mathf.PerlinNoise 返回 0-1 而非 -1 到 1,需归一化或明确范围;网格坐标与世界坐标须显式转换并在访问前用 InBounds 防越界;BSP 需在分割阶段强制最小房间尺寸;System.Random 非线程安全,Jobs/Burst 下应改用 Unity.Mathematics.Random,且字符串哈希需用 GetHashCode(StringComparison.Ordinal) 保证跨版本稳定。资料未提供安装命令、具体收费或性能数据。