# Stage_Item.prefab 树木模型替换指南 ## 概述 本指南将帮助您在 `Stage_Item.prefab` 中替换树木模型,使用 Fantasy Building Pack 中的新树木模型。 ## 当前环境模型 在 `Stage_Item.prefab` 中发现的环境模型: - **Pine_04 (4)** - 松树模型 - **Rock_A_01** - 岩石模型 - **Herb_A_01** - 草药模型 ## 可用的新树木模型 位置:`Assets/Fantasy_Buildig_Pack/Prefabs/Props/` - Tree_1.prefab - Tree_2.prefab - Tree_3.prefab - Tree_4.prefab - Tree_5.prefab - Tree_7.prefab ## 替换方法 ### 方法一:使用TreeModelReplacer脚本(推荐) 1. **创建替换器对象** - 在场景中创建一个空的GameObject - 添加 `TreeModelReplacer` 脚本组件 2. **配置脚本** - 将可用的树木模型拖拽到 `Available Tree Models` 数组中 - 设置替换选项: - `Replace Pine Trees`: 是否替换松树 - `Replace Rocks`: 是否替换岩石 - `Replace Herbs`: 是否替换草药 - `Scale Multiplier`: 缩放倍数 3. **执行替换** - 右键点击脚本组件 - 选择 "替换树木模型" - 脚本会自动备份原始Prefab并执行替换 4. **恢复原始模型** - 右键点击脚本组件 - 选择 "恢复原始模型" ### 方法二:手动修改Prefab文件 1. **备份原始文件** ```bash cp "Assets/GAME/Prefabs/Stages/Stage_Item.prefab" "Assets/GAME/Prefabs/Stages/Stage_Item_backup.prefab" ``` 2. **修改Prefab文件** - 打开 `Stage_Item.prefab` 文件 - 找到 Pine_04 相关的配置 - 替换 Mesh 和 Material 的 GUID 3. **具体修改内容** ```yaml # 原始Pine_04配置 - target: {fileID: 1130470249581900, guid: 47a70469d8b90494cbe9b69fa5177b0b, type: 3} propertyPath: m_Name value: Pine_04 (4) # 替换为Tree_1 - target: {fileID: 1130470249581900, guid: bbb532c5530721e4b9d0372cd0c8475b, type: 3} propertyPath: m_Name value: Tree_1 ``` ### 方法三:通过Unity编辑器 1. **打开Prefab** - 在Project窗口中找到 `Stage_Item.prefab` - 双击打开Prefab编辑器 2. **替换模型** - 在Hierarchy中找到 `Pine_04 (4)` 对象 - 在Inspector中修改MeshFilter的Mesh - 修改MeshRenderer的Material 3. **保存修改** - 点击Apply按钮保存修改 ## 注意事项 1. **备份重要** - 执行替换前务必备份原始Prefab - 使用脚本会自动创建备份 2. **材质兼容性** - 确保新模型的材质与场景光照兼容 - 可能需要调整材质参数 3. **性能考虑** - 新模型的复杂度可能影响性能 - 建议测试替换后的性能表现 4. **缩放调整** - 不同模型的原始大小可能不同 - 使用 `Scale Multiplier` 调整大小 ## 故障排除 ### 常见问题 1. **模型不显示** - 检查MeshFilter和MeshRenderer组件 - 确认材质是否正确加载 2. **材质丢失** - 检查材质文件的GUID是否正确 - 确认材质文件存在于项目中 3. **缩放异常** - 调整 `Scale Multiplier` 参数 - 检查Transform的localScale值 ### 调试命令 在TreeModelReplacer脚本中: - "预览可用树木模型" - 查看配置的模型列表 - "恢复原始模型" - 从备份恢复原始Prefab ## 扩展功能 ### 添加更多模型类型 在 `ReplaceModel` 方法中添加新的case: ```csharp case "NewType": newModel = Resources.Load("Props/NewModel"); break; ``` ### 随机化替换 脚本支持从多个模型中选择: ```csharp newModel = availableTreeModels[Random.Range(0, availableTreeModels.Length)]; ``` ### 批量处理 可以修改脚本以处理多个Prefab文件: ```csharp string[] prefabPaths = {"path1", "path2", "path3"}; foreach (string path in prefabPaths) { // 处理每个Prefab } ```