快四个月了,还没稳定吗
, 不是小步快走吗
3.8.7正式版预计啥时候发布?
cc v3.8.7-0731 版本, 有一个编辑器刷新的问题, 创建一个 pageview,添加一页数据,
我用箭头拉动带 mask 的节点向右移动, 然后 ctrl - z 撤销一下, mask的下 sprite 就不会显示
这个时候不管是直接修改 position 的数据还是直接移动位置,都不会显示, 只有重新设置 mask 的enabled 的值可以显示, 如果最开始是直接设置数值修改位置, 这个时候撤销是显示正常的
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就恢复正常
测试方式:节点数量可能需要多一点,比较好观察
我有尝试看源码调用一些 Sprite 和其基类 UIRenderer 的方法看能不能重置渲染,但没找到。有没什么接口是可以重置的?目前发现可以重置的方法就是重新激活父节点
你们都那么勇敢的吗测试版本就拿来做项目了
如果3.8.6没崩溃闪退的问题,我就不升级社区版了。。
ScrollView 的滚动事件如何区分 开始,滚动中,结束? @引擎组
距离7.31又快2周了,什么时候发版啊?
开始这个项目的时候用的是3.8.6,然后spine动画事件监听有问题,就转到3.8.7了,哪里知道又有新的BUG 
一样 为了用spine4.2 不得不用
听说是8月中,不是这周就是下周
请问v8升级到12.4可以吗?编译了个12.4版本的v8,但是运行时报沙箱配置错误。
我发现我家里和公司都是7月30号的版本。但是家里电脑比较low,启动较慢,是OK的。但是公司电脑比较强大。启动较快,就还是不行。我估计是时序问题。
如果用 scrollview.node.on() 来注册 事件的话。 scrollview 自带的scrollEvents=【】 作用是啥?而且,如果.on()注册也没没有生效,如果生效也不是不可以将就。 但是有时候不生效,麻烦引擎组重视一下 这个组建,挺重要的组建。@引擎组


