3.6.3同步修正

This commit is contained in:
lujun
2023-03-21 22:56:22 +08:00
parent d52561ee76
commit 76563d4c40
5 changed files with 174 additions and 122 deletions

View File

@@ -125,7 +125,7 @@ UI.prototype.update = function() {
}
}
UI.prototype.walk = function(node: Node, level = 0, sortingPriority = 0){
UI.prototype.walk = function(node: Node, level = 0, sortingPriority = 0, sortingLevel = 0){
if (!node.activeInHierarchy) {
return;
}
@@ -135,6 +135,9 @@ UI.prototype.walk = function(node: Node, level = 0, sortingPriority = 0){
const stencilEnterLevel = render && (render.stencilStage === _cocos_2d_renderer_stencil_manager__Stage.ENTER_LEVEL || render.stencilStage === _cocos_2d_renderer_stencil_manager__Stage.ENTER_LEVEL_INVERTED);
const transform = uiProps.uiTransformComp;
sortingPriority = (transform && transform._sortingEnabled) ? transform._sortingPriority : sortingPriority;
if((transform && transform._sortingEnabled)){
++sortingLevel;
}
// Save opacity
const parentOpacity = this._pOpacity;
@@ -152,38 +155,49 @@ UI.prototype.walk = function(node: Node, level = 0, sortingPriority = 0){
// Render assembler update logic
if (render && render.enabledInHierarchy) {
if(stencilEnterLevel){
this.flushRendererCache();
render.fillBuffers(this);// for rendering
// Update cascaded opacity to vertex buffer
if (this._opacityDirty && render && !render.useVertexOpacity && render.renderData && render.renderData.vertexCount > 0) {
// HARD COUPLING
updateOpacity(render.renderData, opacity);
if(sortingLevel > 0){
if(stencilEnterLevel){
this.flushRendererCache();
render.fillBuffers(this);// for rendering
// Update cascaded opacity to vertex buffer
if (this._opacityDirty && render && !render.useVertexOpacity && render.renderData && render.renderData.vertexCount > 0) {
// HARD COUPLING
updateOpacity(render.renderData, opacity);
const buffer = render.renderData.getMeshBuffer();
if (buffer) {
buffer.setDirty();
}
}
}else{
this.rendererCache.push(render);
render.renderPriority = sortingPriority;
if(sortingPriority != 0){
this.rendererOrder = true;
}
if (this._opacityDirty && render && !render.useVertexOpacity && render.renderData && render.renderData.vertexCount > 0) {
render.renderOpacity = opacity;
}else{
render.renderOpacity = -1;
}
}
}else{
render.fillBuffers(this);
if(render.renderOpacity >= 0){
updateOpacity(render.renderData, render.renderOpacity);
const buffer = render.renderData.getMeshBuffer();
if (buffer) {
buffer.setDirty();
}
}
}else{
this.rendererCache.push(render);
render.renderPriority = sortingPriority;
if(sortingPriority != 0){
this.rendererOrder = true;
}
if (this._opacityDirty && render && !render.useVertexOpacity && render.renderData && render.renderData.vertexCount > 0) {
render.renderOpacity = opacity;
}else{
render.renderOpacity = -1;
}
}
}
if (children.length > 0 && !node._static) {
for (let i = 0; i < children.length; ++i) {
const child = children[i];
this.walk(child, level, sortingPriority);
this.walk(child, level, sortingPriority, sortingLevel);
}
}
@@ -210,5 +224,12 @@ UI.prototype.walk = function(node: Node, level = 0, sortingPriority = 0){
}
}
if((transform && transform._sortingEnabled)){
--sortingLevel;
if(sortingLevel <= 0){
this.flushRendererCache();
}
}
level += 1;
};

View File

@@ -4,15 +4,11 @@
*/
export enum SortingLayer {
//-- 自定义,在此之上,小于 DEFAULT 的层级
/**
* 默认层级,在没有应用排序的UI渲染上的默认层级 *不要修改此枚举*
* 默认层级,不能删除和修改此枚举
*/
DEFAULT = 0,
//-- 自定义,在此之下,大于 DEFAULT 的层级
// 测试定义,可以直接移除
TEST_LIST_ITEM = 1,
}