锁定节点怎么用?prefab 有bug?

  • Creator 版本: 3.3.2

  • 目标平台: mac

  • 重现方式:必现

在编辑器中,按描述是锁定了就无法选中节点,实际上还是可以愉快的移来移去

新版本的prefab也很奇怪,以Label为例,放到一个节点下,结构大体是:
父节点
– Label

可以通过修改父节点的面板对Label.string 进行修改
然后把整个保存成prefab拖动到场景使用,奇怪的事情发生了

Label.string. 改变了,但是运行时还是旧的值
此时如果打开其他场景再回来,会发现Label.string 的值被还原了(像是没保存的样子)

然后如果是直接在Label上修改,显示结果是正确的(只有在Label面板的修改才会触发保存?)

然后如果把这个节点取消prefab的关联,上述操作就不会出bug了(所以是prefab的bug?)

锁定节点是在场景上无法点击选中到这个节点,通过节点树还是可以选中的;
prefab 的那个问题,简单测试没有出现这个情况;
方便录个操作视频或者提供个简单的 demo 嘛?

PrefabTest.zip (1.3 MB)

操作视频:
链接: https://pan.baidu.com/s/1H-ynCuafB31we7Aay9cNgg 密码: q9gg

对了,LabelOutline 也有个小瑕疵,在编辑器界面,如果直接删除outline组件,编辑器页面是不会更新的,outline效果还在(运行时候是OK的),必须先把outline的enable关闭,然后再删除outline组件,编辑器才正确显示。

目前是只有在面板上改属性,编辑器才会发消息通知变化,其它时候是不知道的。

是不是prefab的问题? 实际上取消prefab关联后,即使不是直接在面板上改变属性,也是可以得到正确的结果的。

Prefab,需要能监听的到变化才能记录修改的信息,而你使用脚本修改属性,编辑器是没法监测到这个行为,这块我们后面要想办法解决 :joy:

大佬,又发现个问题,如果把属性标记为@property(CCBoolean),在面板上点击勾选时,该属性的set方法会收到2次消息通知

@property()
_clickable = false

@property(CCBoolean)
set clickable(v) {
    this._clickable = v
    this.count ++
    console.log(v)
    console.log(this.count)
}

get clickable() {
    return this._clickable
}

private count = 0

执行结果count每次增加2

测试了下,所有的@property,只要写了set方法,在面板上拖动资源或是节点过去(只要是修改了该属性的值)都会触发两次set方法

收到,这个是已知问题~

即将发布的 3.4 版本有修复了触发两次 setter 的问题,除了 input, colorpicker, slider 这三个有连续变动(比如滑动或上下箭头),和连续变动后停止的事件,会触发该 ui 元素的 change 和 confirm (即至少两次)以外,其他的类型设置比如 checkbox, select 都改为只触发一次 setter

大佬,Color属性好像也有点问题,只要写了@property(Color),脚本在面板上就报错了,时灵时不灵

大佬,再反馈个问题,3.3.2版本在Safari中打开,引擎加载报错:failed to load Web Audio,edge 和 chrome 以及wx内打开都正常。

猜测是这个原因:在已有序列化存档数据上改类型,大概率会报错

‘Safari’ 是什么版本,目前对 Safari 阻碍 web 发展有一些声音了,主要还是版本更新不及时。

我更新到了safari 最新的15.1版本,还是存在这个问题。color 那个问题,不做任何操作,只是定义一个@property(Color),脚本就挂了,我现在只能用enum自己写个类型替代着先 : (

color 这个问题,写法上代码截图看下

我录了个视频,您看一下:
链接: https://pan.baidu.com/s/1EJ4h7EroethRtJpdLeHaYw 密码: jdu4

你好,看了视频了,你定义了一个变量 color = Color.RED 它指向了一个只读的对象
image
所以导致不可修改,修改就报错。
你可以定义为一个新的 Color 对象,为 color = new Color()

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。