草地工具使用说明(策划版)

草地工具使用说明(策划版)

本文说明如何在 Scene 窗口中刷草、擦草、转换旧芦苇和清空草地数据

1. 开始前需要准备

场景中需要有一个挂载 GrassFieldRenderer 组件的对象。这个组件需要关联一个 GrassFieldData

GrassFieldRenderer组件

正常情况下,程序或场景负责人会提前配置好 GrassPrototype,策划主要负责选择草种和刷草。如果没有,可以告知程序或场景负责人在 Inspector 中创建 GrassFieldData,然后选中创建的 GrassFieldData,在 Prototypes 列表中加入需要使用的草种配置

重要提醒:已经刷过草后,不要随意拖动、重排或删除 Prototypes 列表元素,否则已经刷好的草可能变成另一种草

2. 打开刷草工具

  1. 在 Hierarchy 选中 GrassFieldRenderer 所在对象
  2. 在 Inspector 点击“编辑草地”
  3. Scene 窗口左上角会出现“草地绘制”面板

GrassPainterToolInScene

如果看不到工具面板,重新选中 GrassFieldRenderer,再点击“编辑草地”

3. 基础操作

操作 功能
左键点击或拖动 刷草
Shift + 左键点击或拖动 擦草
Alt + 鼠标 正常旋转或移动 Scene 视角
Ctrl + Z 撤销上一笔操作
Ctrl + Y 重做

Scene 中的绿色圆圈是刷草范围;按住 Shift 后会变成红色擦除范围

4. 画笔参数

草种

即草的种类。

选择当前要刷的 GrassPrototype 时,如果显示 Missing、未配置 Mesh、未配置 Material 或未启用 GPU Instancing,请联系程序或场景负责人处理

半径

控制画笔圆圈的大小。

  • 小范围修饰:1~3 米
  • 普通区域:3~8 米
  • 大片铺设:8 米以上

强度

控制每一笔尝试生成的草数量。

  • 0.1~0.25:稀疏,适合补草
  • 0.25~0.5:普通密度
  • 0.5~1.0:快速铺设,可能比较密集

最终密度还会受到草种自身的 Density 和 Minimum Spacing 限制

地面 Layer

只有勾选 Layer 上的 Collider 才能被刷草工具识别

建议只勾选真正允许长草的地面层,避免草刷到:

  • 建筑屋顶
  • 道具
  • 角色
  • 水面
  • 临时碰撞体

Shift 擦除全部草种

  • 开启:Shift 擦除范围内的所有草种
  • 关闭:只擦除当前选中的草种

5. 草刷不出来时检查

依次检查:

  1. 地面是否有 Collider
  2. 地面的 Layer 是否包含在“地面 Layer”里
  3. 当前草种是否有效
  4. 是否正在按 Alt、Ctrl 或 Command
  5. 地面坡度是否太大
  6. 草种 Minimum Spacing 是否太大
  7. 当前区域是否已经达到允许密度

6. 草刷出来但看不到时检查

  1. GrassFieldRenderer 的 Render In Scene View 是否开启
  2. GrassPrototype 是否配置 Mesh 和 Material
  3. 材质是否启用 GPU Instancing
  4. Draw Distance 是否太小
  5. 点击 GrassFieldRenderer 上的“重建预览缓存”

GrassFieldRenderer Inspector 会显示:

  • 草实例数量
  • Cell 数量
  • 草种配置错误

7. 一键转换小车站旧芦苇

这是用于兼容之前摆放在场景中的 GameObject 草转移到当前框架下,按照新的流程标准刷草这个功能不应该被用到

转换前务必:

  1. 保存当前场景
  2. 确认 Git 可以恢复场景
  3. 确认选中了正确的 GrassFieldRenderer 和 GrassFieldData
  4. 点击“一键转换当前场景中的现有芦苇”

工具会扫描当前场景中名称以 SM_Reed_ 开头的旧芦苇对象执行,工具会:

  • 将旧芦苇的位置、旋转和缩放写入 GrassFieldData
  • 自动补齐缺少的 GrassPrototype
  • 删除已经转换的旧芦苇 GameObject
  • 显示转换进度
  • 完成后显示转换数量

小车站原有芦苇约 8.1 万株,目前已转换

8. 清空全部草

点击红色按钮 清空所有 Grass Field 数据 工具会显示即将删除的草实例数量。只有再次确认后才会执行

该按钮会删除当前 GrassFieldData 中所有草种的全部实例,不是只删除当前选中的草种。执行前确认当前 Renderer 引用的是正确的数据资产

操作支持 Undo,但大量数据的 Undo 会占用较多内存。重要场景仍建议先保存并保留 Git 恢复点

9. 草种常用配置说明

这些参数通常由程序、美术或场景负责人调整,策划需要了解其影响:

参数 影响
Density Per Square Meter 草的基础密度
Minimum Spacing 草之间允许的最小距离
Uniform Scale Range 随机大小范围
Maximum Slope 允许生长的最大坡度
Align To Ground Normal 草是否随地面倾斜
Randomize Yaw 是否随机旋转
Draw Distance 最远显示距离
Shadow Casting Mode 是否向其他物体投射阴影
Receive Shadows 是否接受建筑等物体的阴影

10. 芦苇材质常用参数

参数 推荐值 说明
Two Sided Foliage Lighting 开启 避免 Sprite 卡片背面全黑
Foliage Normal Up 0.5~0.9 越大,随机方向导致的明暗差越弱
Receive Shadow Strength 0.45~0.65 越低,建筑投影落到草上时越柔和
Normal Strength 0 当前没有有效法线贴图时保持为 0

如果草在建筑阴影下太黑,优先降低 Receive Shadow Strength,不要修改整个场景的主光阴影强度

11. 使用原则

  • 大面积普通装饰草使用 Grass Field
  • 可采集、可破坏、剧情或需要独立逻辑的植物继续使用 Prefab GameObject
  • 草不需要逐株 Collider
  • 不要为了修一株草而把整个 Grass Field 转回 GameObject
  • 同一场景尽量统一由明确的 GrassFieldData 管理,避免误清空其他区域的数据