所有 meta 文件正常生成后或者 场景正常显示了
命令行怎么监听 插件的ready。
所有 meta 文件正常生成后或者 场景正常显示了
命令行怎么监听 插件的ready。
命令行就是命令启动了就打开了没有交互,要监听需要写编辑器插件,meta 正常生成去监听 asset-db:ready ,场景正常显示监听 scene:ready ,怎么监听看一下编辑器文档的广播监听消息怎么写。
通过插件监听 场景 ready 在返回给命令行 是这样么。
设置材质的setProperty没作用,正式版会合并这个pr?
啊 这样可以吗,之前遇到一个命令行打包资源异常问题,就是因为资源还未导入完成就开始了打包编译资源,现在我的做法是写了个延迟几分钟再开始打包…
之前的版本,
用 director.on(DirectorEvent.INIT, ()=>{}) 回调
来初始化东西是正常的,但现在用这个发现没有执行回调,
直接把这个写到挂载到scene的脚本上,没有执行
但如果改成BEFORE_SCENE_LAUNCH事件,就可以正常执行
这是机制有什么改变吗?
我后面自己写了个插件检测到导入spine图片就重新reimport 
莫名的好的。 估计编辑器的问题。
快四个月了,还没稳定吗
, 不是小步快走吗
3.8.7正式版预计啥时候发布?
cc v3.8.7-0731 版本, 有一个编辑器刷新的问题, 创建一个 pageview,添加一页数据,
importer 用了自定义 class 吗?可以详细描述一下问题
类似 官方 shader graph ,自定义了一种资源。 比如需要刷新一下资源(构建)调试工具进程。才能看到正确的 icon 。否则会报错 can not find importer … 扒拉扒拉。你们可以直接使用 shader graph extension 来测试这个问题。
/**
*
初始化shader材质
*/
private async initShaderMaterials(): Promise {
if (!this.icon) {
console.warn(“
DragonScale: icon组件不存在,无法初始化shader”);
return;
}
// 保存原始材质
this.originalMaterial = this.icon.customMaterial;
// 加载闪白材质
try {
// 加载材质资源
const materialPath = "white";
const material = await bundleMgr.loadAssetAsync(Constants.BUNDLE_NAME.Material, materialPath, Material);
if (material) {
this.whiteMaterial = material;
} else {
console.warn("⚠️ 闪白材质加载失败");
}
} catch (error) {
console.error("❌ 加载闪白材质出错:", error);
}
}
// 播放受击动画
playHitAnimation() {
if (this.isPlayingHitAnimation || !this.icon) return;
this.isPlayingHitAnimation = true;
// 🎨 使用shader实现闪白效果
this.playWhiteShaderAnimation();
}
/**
* 🎨 使用shader播放闪白动画
*/
private playWhiteShaderAnimation(): void {
if (!this.whiteMaterial || !this.icon) {
// 如果shader不可用,回退到颜色动画
this.playColorHitAnimation();
return;
}
// 保存原始材质
const originalMaterial = this.icon.customMaterial;
// 应用闪白材质
this.icon.customMaterial = this.whiteMaterial;
this.isUsingWhiteShader = true;
// 🎨 创建平滑的闪白过渡动画
this.playSmoothWhiteTransition(originalMaterial);
}
/**
* 🎨 播放平滑的闪白过渡动画
*/
private playSmoothWhiteTransition(originalMaterial: Material): void {
// 动画参数
const fadeInDuration = 0.08; // 淡入时间
const holdDuration = 0.04; // 保持时间
const fadeOutDuration = 0.08; // 淡出时间
const maxIntensity = 1; // 最大闪白强度
const maxScale = 1.2; // 最大放大倍数
// 保存原始缩放
const originalScale = this.node.scale.clone();
// 创建动画目标对象
const animationTarget = {
intensity: 0.0,
scale: 1.0
};
// 第一阶段:从透明到半白(淡入)+ 放大
tween(animationTarget)
.to(fadeInDuration, {
intensity: maxIntensity,
scale: maxScale
}, {
onUpdate: () => {
// 更新shader参数
if (this.whiteMaterial && this.icon) {
this.whiteMaterial.setProperty('whiteIntensity', animationTarget.intensity);
}
// 更新缩放
if (this.node && this.node.isValid) {
this.node.scale = new Vec3(
originalScale.x * animationTarget.scale,
originalScale.y * animationTarget.scale,
originalScale.z
);
}
}
})
// 第二阶段:保持半白状态 + 保持放大
.delay(holdDuration)
// 第三阶段:从半白到透明(淡出)+ 缩小
.to(fadeOutDuration, {
intensity: 0.0,
scale: 1.0
}, {
onUpdate: () => {
// 更新shader参数
if (this.whiteMaterial && this.icon) {
this.whiteMaterial.setProperty('whiteIntensity', animationTarget.intensity);
}
// 更新缩放
if (this.node && this.node.isValid) {
this.node.scale = new Vec3(
originalScale.x * animationTarget.scale,
originalScale.y * animationTarget.scale,
originalScale.z
);
}
}
})
.call(() => {
// 动画完成,恢复原始材质和缩放
if (this.icon && this.icon.isValid) {
this.icon.customMaterial = originalMaterial;
}
if (this.node && this.node.isValid) {
this.node.scale = originalScale;
}
this.isUsingWhiteShader = false;
this.isPlayingHitAnimation = false;
})
.start();
}
3.8.7的7月31日社区版shader有bug,代码里面已经加载好闪白的shader,然后在敌人受击的时候暂停可以看到shader已经加载了,但是页面上看不到闪白的效果,同样的代码和shader在3.8.6里面是没问题
自定义资源的方法我们还没有正式对外哦,不保证接口的稳定性,在正式推出的时候不一定是那样的,谨慎参考,仅供个人研究。
请问有解决节点复用 drawcall 升高吗?
问题版本:3.8.6
问题描述:节点从父节点 A回收后再复用加回父节点 A,drawcall 就会变高,猜测是渲染顺序之类变了?
验证方式:隐藏父节点 A 再激活,dc就恢复正常
测试方式:节点数量可能需要多一点,比较好观察