属性赋值问题

属性赋值
properties: {
_boxId: -1
}

在启动游戏后会变成初始值为0?

这里定义的只是属性的初始值,如果你在Creator里修改了属性的值,那么Creator会把你修改后的值保存下来,加载的时候加载的是你修改后的值。如果不希望Creator保存这个属性的值,而是每次都获得初始值-1,那就声明不要Creator序列化保存该属性:

properties: {
    _boxId: {
        default: -1,
        serializable: false
    }
}

那个…… _ 打头的好像不会被序列化……

_打头的只是默认不显示,还是会被序列化。我能想到三个它的值被改变的可能原因:

  1. 为_boxId设置过默认值为0,保存了场景。当你把默认值改为-1时,编辑器仍然加载的是0。
  2. Component用了editor属性executeInEditMode,最后一次保存的时候_boxId的值是0。
  3. 给_boxId设置了visible:true的属性,然后在Creator中将它的值修改为0并保存。

好腻害,大概是第一种。

:joy:因为我也被这个问题坑过,找了一小时不知道是什么Bug。。后来才想到。。