import { _decorator, cclegacy, Color, Component, Director, director, dynamicAtlasManager, Label, macro, profiler, Scene, setDisplayStats, Toggle } from 'cc'; import { MultBatch2D } from './multTextures/MultTextures'; const { ccclass, property } = _decorator; //仅供测试使用,不用复制到项目 macro.CLEANUP_IMAGE_CACHE = false; dynamicAtlasManager.enabled = true; let isAutoBatch = true; let isMultexture = true; @ccclass('expbg') export class expbg extends Component { @property(Label) drawcall!:Label; @property(Label) fps!:Label; @property(Label) render!:Label; @property(Label) triangle!:Label; toggle:Array = []; protected start(): void { profiler.showStats(); this.toggle = this.node.getComponentsInChildren(Toggle)!; isMultexture = this.toggle[0].isChecked = MultBatch2D.enable; isAutoBatch = this.toggle[1].isChecked = dynamicAtlasManager.enabled; this.changeColor(); } changeColor(){ let all = isMultexture&&isAutoBatch; if(all){ this.drawcall.color = Color.GREEN; }else{ this.drawcall.color = isMultexture? new Color(255,100,0,255):Color.RED; } } btMultexture(){ isMultexture = this.toggle[0].isChecked; // _mulMaterial.enable = isMultexture; // resetRenders = !isMultexture; this.changeColor(); } btAutoBatch(){ isAutoBatch = this.toggle[1].isChecked; // dynamicAtlasManager.enabled = isAutoBatch; // resetRenders = !isAutoBatch; this.changeColor(); } btExit(){ director.loadScene('main'); } lateUpdate(dt:number){ let state = null; if(cclegacy.profiler.stats){ state = cclegacy.profiler.stats; }else{ state = cclegacy.profiler._stats; } let dc = state.draws.counter._value; let tris = state.tricount.counter._value; let fps = state.fps.counter._averageValue; let render = state.render.counter._averageValue; //director.root!.device.numDrawCalls; this.drawcall.string = "dc: " + dc; this.fps.string = 'fps: '+fps.toFixed(2); // this.triangle.string = "triangles: "+tris; this.render.string = 'render: '+render.toFixed(2); } } let renders:Set = new Set(); director.on(Director.EVENT_BEFORE_DRAW,()=>{ let resetRenders = false; if(MultBatch2D.enable != isMultexture){ MultBatch2D.enable = isMultexture; resetRenders = true; } if(dynamicAtlasManager.enabled != isAutoBatch){ dynamicAtlasManager.enabled = isAutoBatch; resetRenders = true; } if(resetRenders){ resetRenders = false; renders.forEach((render)=>{ if(render){ let rd = render.renderData; rd && render.markForUpdateRenderData(true); } }); } }); let UIMeshRenderer = cclegacy.UIMeshRenderer.prototype; let UIMeshDisable = UIMeshRenderer.onDisable; let UIMeshEnable = UIMeshRenderer.onEnable; UIMeshRenderer.onEnable = function(){ renders.add(this); UIMeshEnable.call(this); } UIMeshRenderer.onDisable = function(){ renders.delete(this); UIMeshDisable.call(this); } let UIRenderer = cclegacy.internal.UIRenderer.prototype; let UIDisable = UIRenderer.onDisable; let UIEnable = UIRenderer.onEnable; UIRenderer.onEnable = function(){ renders.add(this); UIEnable.call(this); } UIRenderer.onDisable = function(){ renders.delete(this); UIDisable.call(this); }