diff --git a/docs/docs/start-guide/breaking-change.md b/docs/docs/start-guide/breaking-change.md index c6fc5eb1..8e02db1d 100644 --- a/docs/docs/start-guide/breaking-change.md +++ b/docs/docs/start-guide/breaking-change.md @@ -61,3 +61,16 @@ cc.macro.ENABLE_NATIVE_TTF_RENDERER = false; - **如果你的项目依赖 Char 缓存模式的内部实现细节,请重新检查相关代码** 比如你的项目依赖一些 Char 缓存模式未公开的类或者接口(引擎在 `creator.d.ts` 声明了的则是已经公开的),则可能需要重新编写。 + +--- +### 材质 Hash 计算的变化 + +在解决材质本身 Hash 变化不会更新材质变体的 Hash 的问题时,为了兼顾原生平台与 Web 平台,我们采取了使材质本身的 Hash 值不变并且修改变体 Hash 计算方式的方法来解决这个问题。 + +解决这个问题后,在两个材质变体一样的情况下,无论怎么修改材质,都不会影响该材质的变体进行合批(在这之前,修改材质后生成的变体无法和之前的变体合批,因为 Hash 值问题)。 + +但这引入了新的问题,这会导致完全相同的两个材质不能合批,比如你复制了一个 `multi-2d-sprite` 材质,分别使用这两个材质的组件不再会进行合批。 + +我们考虑了性能、影响程度等多方面因素之后采取了这个实现,因为后者比较少见,并且可以手动解决: + +你只需要手动设置该材质的 Hash 值为 `multi-2d-sprite` 材质的 Hash 值即可使两个材质合批。