editor: preserve material inspector authored state
This commit is contained in:
@@ -385,3 +385,58 @@ Material 面板不应再次演化成随意堆字段的临时入口。所有 rend
|
||||
1. 扩展 `MaterialAssetState`,让其正式承载属性、纹理槽、关键词与 render state override。
|
||||
2. 重构 `Populate / Apply / Save / Reload` 这四条关键链路。
|
||||
3. 彻底消除当前“保存一次就丢属性”的结构性问题。
|
||||
|
||||
## 12. Phase 2 执行结果
|
||||
|
||||
状态:已完成
|
||||
|
||||
本阶段已经完成 Material Inspector 数据模型的第一轮正式收口,重点是先把状态模型与保存链路做正确,而不是提前堆属性 UI。
|
||||
|
||||
### 12.1 已完成内容
|
||||
|
||||
- `MaterialAssetState` 已扩展为正式承载:
|
||||
- `keywords`
|
||||
- `properties`
|
||||
- `texture bindings`
|
||||
- `renderState override`
|
||||
- `PopulateMaterialAssetStateFromResource()` 已从运行时 `Material` 同步:
|
||||
- Shader 路径
|
||||
- Render Queue
|
||||
- Render State
|
||||
- Render State Override 标志
|
||||
- Tags
|
||||
- Keywords
|
||||
- Properties / Texture Bindings
|
||||
- `ApplyResolvedMaterialStateToResource()` 已开始完整写回:
|
||||
- Shader
|
||||
- Render Queue
|
||||
- Render State
|
||||
- Render State Override
|
||||
- Tags
|
||||
- Keywords
|
||||
- Properties / Texture Bindings
|
||||
- `BuildMaterialAssetFileText()` 已开始正式写出:
|
||||
- `keywords`
|
||||
- `properties`
|
||||
- `textures`
|
||||
- 仅在启用 override 时才写 `renderState`
|
||||
- Inspector 已增加 `Render State Override` 开关,避免默认把材质强行推进到显式 override 路径。
|
||||
|
||||
### 12.2 本阶段解决的核心问题
|
||||
|
||||
本阶段已经解决了最危险的结构性问题:
|
||||
|
||||
- 当前 Inspector 再保存材质时,不会像之前那样天然丢掉 `properties / textures / keywords`。
|
||||
- Render State 是否为显式 override,已经不再是隐藏副作用,而成为正式状态的一部分。
|
||||
|
||||
### 12.3 本阶段仍未完成的部分
|
||||
|
||||
以下能力还没有在本阶段完成,这是下一阶段的工作重点:
|
||||
|
||||
- 基于 Shader schema 的属性 UI 自动生成
|
||||
- 各属性类型的可视化编辑控件
|
||||
- 默认值/覆盖值的明确表现
|
||||
- 纹理槽的正式资源选择 UI
|
||||
- 关键词与属性在 Inspector 中的可视化编辑
|
||||
|
||||
因此,Phase 2 的性质是“先把材质状态模型与保存链路做对”,而不是“材质面板功能已经完整”。
|
||||
|
||||
Reference in New Issue
Block a user