草地工具使用说明(策划版)
草地工具使用说明(策划版)
本文说明如何在 Scene 窗口中刷草、擦草、转换旧芦苇和清空草地数据
1. 开始前需要准备
场景中需要有一个挂载 GrassFieldRenderer 组件的对象。这个组件需要关联一个 GrassFieldData

正常情况下,程序或场景负责人会提前配置好 GrassPrototype,策划主要负责选择草种和刷草。如果没有,可以告知程序或场景负责人在 Inspector 中创建 GrassFieldData,然后选中创建的 GrassFieldData,在 Prototypes 列表中加入需要使用的草种配置
重要提醒:已经刷过草后,不要随意拖动、重排或删除 Prototypes 列表元素,否则已经刷好的草可能变成另一种草
2. 打开刷草工具
- 在 Hierarchy 选中
GrassFieldRenderer所在对象 - 在 Inspector 点击“编辑草地”
- Scene 窗口左上角会出现“草地绘制”面板

如果看不到工具面板,重新选中 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. 草刷不出来时检查
依次检查:
- 地面是否有 Collider
- 地面的 Layer 是否包含在“地面 Layer”里
- 当前草种是否有效
- 是否正在按 Alt、Ctrl 或 Command
- 地面坡度是否太大
- 草种 Minimum Spacing 是否太大
- 当前区域是否已经达到允许密度
6. 草刷出来但看不到时检查
- GrassFieldRenderer 的
Render In Scene View是否开启 - GrassPrototype 是否配置 Mesh 和 Material
- 材质是否启用 GPU Instancing
- Draw Distance 是否太小
- 点击 GrassFieldRenderer 上的“重建预览缓存”
GrassFieldRenderer Inspector 会显示:
- 草实例数量
- Cell 数量
- 草种配置错误
7. 一键转换小车站旧芦苇
这是用于兼容之前摆放在场景中的 GameObject 草转移到当前框架下,按照新的流程标准刷草这个功能不应该被用到
转换前务必:
- 保存当前场景
- 确认 Git 可以恢复场景
- 确认选中了正确的 GrassFieldRenderer 和 GrassFieldData
- 点击“一键转换当前场景中的现有芦苇”
工具会扫描当前场景中名称以 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 管理,避免误清空其他区域的数据