[Laya2.0]Label中设置延展和自动收缩导致卡死bug

回复

Layacnscj 发起了问题 • 1 人关注 • 0 个回复 • 9 次浏览 • 9 小时前 • 来自相关话题

cocos3.8.7中支持颜色混合

CocosCreatorGodChouyu 发表了文章 • 0 个评论 • 8 次浏览 • 9 小时前 • 来自相关话题

仅在cocos3.8.7中测试。
两种方法。
1.可以修改源码的情况下,修改BlendMode.ts文件的apply函数。
public static apply(node: Node, blendMode: BlendMode) {
let f = factors[<number>blendMode];
node.components.forEach(component => {
if (component instanceof UIRenderer) {
component["_srcBlendFactor"] = f[0];
component["_dstBlendFactor"] = f[1];
}
})
}2.不修改源码,覆盖GObject的setup_beforeAdd方法。随意一个脚本中添加并调用Init();
public static init() {
const factors = [
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //normal
[gfx.BlendFactor.ONE, gfx.BlendFactor.ONE], //none
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE], //add
[gfx.BlendFactor.DST_COLOR, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //mul
[gfx.BlendFactor.ONE, gfx.BlendFactor.ONE_MINUS_SRC_COLOR], //screen
[gfx.BlendFactor.ZERO, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //erase
[gfx.BlendFactor.ZERO, gfx.BlendFactor.SRC_ALPHA], //mask
[gfx.BlendFactor.ONE_MINUS_DST_ALPHA, gfx.BlendFactor.DST_ALPHA], //below
[gfx.BlendFactor.ONE, gfx.BlendFactor.ZERO], //off
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //custom1
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //custom2
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //custom2
];

const GObjectSetupBeforeAdd = fgui.GObject.prototype.setup_beforeAdd;
fgui.GObject.prototype.setup_beforeAdd = function (this: fgui.GObject, buffer: ByteBuffer, beginPos: number) {
GObjectSetupBeforeAdd.call(this, buffer, beginPos);
let f = factors[<number>this.blendMode];
this.node.components.forEach(component => {
if (component instanceof cc.UIRenderer) {
component["_srcBlendFactor"] = f[0];
component["_dstBlendFactor"] = f[1];
}
})
}
}
因为blend模块的相关代码没有导出,所以先这么处理。factors数组是从fgui源码中复制出来的。
_srcBlendFactor和_dstBlendFactor两个属性的cocos源码在cocos源码地址。
 
已经提交pr,谷主看到的话希望能合并一下。
  查看全部
仅在cocos3.8.7中测试。
两种方法。
1.可以修改源码的情况下,修改BlendMode.ts文件的apply函数。
public static apply(node: Node, blendMode: BlendMode) {
let f = factors[<number>blendMode];
node.components.forEach(component => {
if (component instanceof UIRenderer) {
component["_srcBlendFactor"] = f[0];
component["_dstBlendFactor"] = f[1];
}
})
}
2.不修改源码,覆盖GObject的setup_beforeAdd方法。随意一个脚本中添加并调用Init();
public static init() {
const factors = [
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //normal
[gfx.BlendFactor.ONE, gfx.BlendFactor.ONE], //none
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE], //add
[gfx.BlendFactor.DST_COLOR, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //mul
[gfx.BlendFactor.ONE, gfx.BlendFactor.ONE_MINUS_SRC_COLOR], //screen
[gfx.BlendFactor.ZERO, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //erase
[gfx.BlendFactor.ZERO, gfx.BlendFactor.SRC_ALPHA], //mask
[gfx.BlendFactor.ONE_MINUS_DST_ALPHA, gfx.BlendFactor.DST_ALPHA], //below
[gfx.BlendFactor.ONE, gfx.BlendFactor.ZERO], //off
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //custom1
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //custom2
[gfx.BlendFactor.SRC_ALPHA, gfx.BlendFactor.ONE_MINUS_SRC_ALPHA], //custom2
];

const GObjectSetupBeforeAdd = fgui.GObject.prototype.setup_beforeAdd;
fgui.GObject.prototype.setup_beforeAdd = function (this: fgui.GObject, buffer: ByteBuffer, beginPos: number) {
GObjectSetupBeforeAdd.call(this, buffer, beginPos);
let f = factors[<number>this.blendMode];
this.node.components.forEach(component => {
if (component instanceof cc.UIRenderer) {
component["_srcBlendFactor"] = f[0];
component["_dstBlendFactor"] = f[1];
}
})
}
}

因为blend模块的相关代码没有导出,所以先这么处理。factors数组是从fgui源码中复制出来的。
_srcBlendFactor和_dstBlendFactor两个属性的cocos源码在cocos源码地址
 
已经提交pr,谷主看到的话希望能合并一下。
 

控制器的动作如何停止

回复

CocosCreatorbimuziyan 发起了问题 • 1 人关注 • 0 个回复 • 24 次浏览 • 2 天前 • 来自相关话题

FGUI 编辑器插件如何获取文本和按钮的标题

回复

编辑器使用xiepeng888 发起了问题 • 1 人关注 • 0 个回复 • 40 次浏览 • 3 天前 • 来自相关话题

在编辑器中将滑动条属性中的最大值设置为0时可能会报错

回复

编辑器使用CursedOctopus 发起了问题 • 1 人关注 • 0 个回复 • 38 次浏览 • 2025-11-07 16:53 • 来自相关话题

关于发布后纹理集问题

回复

CocosCreatorwindshan 发起了问题 • 1 人关注 • 0 个回复 • 50 次浏览 • 2025-11-07 10:20 • 来自相关话题

编辑器插件如何添加新发布属性

回复

编辑器使用yangcg 发起了问题 • 1 人关注 • 0 个回复 • 64 次浏览 • 2025-11-05 10:54 • 来自相关话题

FairyEditor FPackage GetItemByPath用法

编辑器使用misakacirno 发表了文章 • 1 个评论 • 47 次浏览 • 2025-11-04 16:18 • 来自相关话题

路径为文件在Package中的相对路径,需要以/开头,无需带后缀名。
例如"/textures/shop/shop_icon_01"
路径为文件在Package中的相对路径,需要以/开头,无需带后缀名。
例如"/textures/shop/shop_icon_01"

关于分支发布后组件的型别消失问题

CocosCreator谷主 回复了问题 • 2 人关注 • 1 个回复 • 69 次浏览 • 2025-11-03 22:29 • 来自相关话题

导入的是jpg格式图片,如何导出jpg格式的图片。

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 67 次浏览 • 2025-11-03 22:20 • 来自相关话题

插件里FPackage中的ImportResource函数要怎么使用?

回复

编辑器使用misakacirno 回复了问题 • 1 人关注 • 3 个回复 • 228 次浏览 • 2025-11-03 17:25 • 来自相关话题

Fgui 插件Api CS.System.Array.CreateInstance()

Unity谷主 回复了问题 • 1 人关注 • 2 个回复 • 95 次浏览 • 2025-11-02 16:27 • 来自相关话题

列表中组件部分资源无法被裁剪

Unity谷主 回复了问题 • 2 人关注 • 2 个回复 • 61 次浏览 • 2025-11-02 16:26 • 来自相关话题

FairyGUI 在 Unity 中异步加载字体

Unityhwei 发表了文章 • 0 个评论 • 129 次浏览 • 2025-10-23 17:07 • 来自相关话题

如果你在开发小游戏,字体文件通常很大,并且需要在第一次运行时下载。这有可能会影响首屏加载性能。
 
为了解决这个问题,我们不用等待字体下载好,先提前显示 UI。
此时 UI 中的中文可能会无法显示。
不过没关系,等字体下载好再用下面这个函数来加载字体:
public static void SetFont(string name, Font font)
{
// 如果其他 UI 已经用过 name 字体,则获得该字体的动态字体对象,否则 GetFont 会自动返回一个默认动态字体。
var dynamicFont = FairyGUI.FontManager.GetFont(name) as FairyGUI.DynamicFont;
// 无论如何,更新这个字体背后的 Unity Font 对象
dynamicFont.nativeFont = font;
// version 变化会触发使用到这个字体的 UI 刷新
dynamicFont.version += 1;
}于是就做到了异步加载字体。
 
进一步优化:先用一个体积比较小的字体覆盖所有 UI 用到的字体,让中文先可读。然后等体积大的正式字体下载完毕再覆盖上去,提升画面效果。 查看全部
如果你在开发小游戏,字体文件通常很大,并且需要在第一次运行时下载。这有可能会影响首屏加载性能。
 
为了解决这个问题,我们不用等待字体下载好,先提前显示 UI。
此时 UI 中的中文可能会无法显示。
不过没关系,等字体下载好再用下面这个函数来加载字体:
public static void SetFont(string name, Font font)
{
// 如果其他 UI 已经用过 name 字体,则获得该字体的动态字体对象,否则 GetFont 会自动返回一个默认动态字体。
var dynamicFont = FairyGUI.FontManager.GetFont(name) as FairyGUI.DynamicFont;
// 无论如何,更新这个字体背后的 Unity Font 对象
dynamicFont.nativeFont = font;
// version 变化会触发使用到这个字体的 UI 刷新
dynamicFont.version += 1;
}
于是就做到了异步加载字体。
 
进一步优化:先用一个体积比较小的字体覆盖所有 UI 用到的字体,让中文先可读。然后等体积大的正式字体下载完毕再覆盖上去,提升画面效果。

插件API

编辑器使用残魂 回复了问题 • 2 人关注 • 1 个回复 • 209 次浏览 • 2025-10-15 16:54 • 来自相关话题

在cocos creator中3.8.4关联系统失效

CocosCreatorloop 回复了问题 • 2 人关注 • 2 个回复 • 162 次浏览 • 2025-10-13 20:31 • 来自相关话题

[插件]invalid arguments to ToHexString异常问题

编辑器使用cnscj 回复了问题 • 2 人关注 • 2 个回复 • 158 次浏览 • 2025-10-13 09:47 • 来自相关话题

Stage没有SetSize为屏幕的尺寸,而是设置为了一个小于屏幕的尺寸,在Unity正常捕获触摸,在其他平台触摸位置偏移较大

Unity谷主 回复了问题 • 2 人关注 • 1 个回复 • 149 次浏览 • 2025-10-12 10:07 • 来自相关话题

修改资源路径,引用这些资源的xml里的fileName不会马上更新,需要修改这个界面的任意属性才会更新

编辑器使用谷主 回复了问题 • 2 人关注 • 2 个回复 • 193 次浏览 • 2025-10-11 16:31 • 来自相关话题

creator 3.8.7引擎下,textinput的bug

CocosCreator谷主 回复了问题 • 2 人关注 • 1 个回复 • 179 次浏览 • 2025-10-11 16:26 • 来自相关话题