dd
This commit is contained in:
137
assets/resources/expbg.ts
Normal file
137
assets/resources/expbg.ts
Normal file
@@ -0,0 +1,137 @@
|
||||
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<Toggle> = [];
|
||||
|
||||
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<any> = 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user