有个BUG

改了这种带下划线滴值,无法编译和生效,要改变这个数值除非重新定义变量名称。为这个BUG换了很多次最新版还是不行。

1赞

接宝地问一句,一直不清楚自己写逻辑的时候变量前加_是什么意思?只是习惯?

这是因为你的脚本属性会被存储。 建议做法,在onLoad里面, 再this._rx1 = 0.75 一次。 不要依赖属性列表赋值。

_rx1: {
    default: 0.75,
    serializable: false
}

默认不会在属性管理器里面显示,并且表明这是私有成员变量

请问这个 serializable: false 是什么意思?

serializable的文档链接

1赞

这是用专业名词解释专业名词,看了还是不懂啊。。。

什么叫序列化?

意思是这里面 _rx2 不能在 场景.fire 里读取出值,而 _rx1,_rx2 都能直接导给场景对吧?好像有点明白了。

另外

solar light 也是你滴颜色啊,哈哈哈哈,非常感谢大佬。。

我把 ctrl + f 改变成了 F4,弥补了这个颜色唯一滴不足,现在很好。。。

序列化的名词解释将在下个版本更新,谢谢反馈。
https://github.com/cocos-creator/creator-docs/pull/134/files

设计这个序列化意义何在?

目的应该是保存你在场景编辑器中填写的属性值,可以在下次打开该场景时恢复吧,不然每次打开都要重新设置一遍,那估计这个编辑器也没人会用了(关键是那么多属性值,也没人会全都记得啊~~~~)

我估计,楼主还是没太理解序列化和反序列化的作用。楼主可以这样理解,序列化有点类似游戏中的Save,将目前内存中的程序状态,以一定的数据格式(XML、json或其他自定义格式)保存到文件中;反序列化则是Load操作,将之前保存的文件内容解析出来,这样就能恢复到上次保存时的程序状态了

那我在js脚本中写明值意义何在?反而引来了歧义和操作上滴困惑疑问。

望所有东西简单,理解无障碍。

谢谢各位滴回答

脚本写的是默认值啊,脚本刚添加到节点上的时候的默认值,这样不用每次用到脚本的时候把每个属性都设置一遍。

楼上正解。比如你有个组件,里面有个属性prop1。这个组件在11个位置都用到了,其中10个位置prop1的值都是0.75,而第11个位置prop1的值需要改成0.6,如果你设置了默认值,那么就只用在编辑器中修改第11个位置的prop1的值就好了。当然,前提是prop1属性可以在编辑器中进行编辑,如果是像楼主这样以’_'开头,那就只能在程序的onLoad中修改了,编辑器中是看不到的

楼上正解。’_'开头的变量虽然默认隐藏,但也可以像serializable一样用visible: true来显示的

定义组件后,有可能使用者是策划或者其它程序员,那他们不一定知道这些值在编辑器里要设置成多少比较合适。如果全部都默认是 0,那么用起来就很不方便。如果你定义了默认值,那只要组件一拖到场景里就能直接跑,岂不是很爽?

还是那个策划,他拖到场景后,跑出来效果如果不满意,可以在编辑器里修改,修改完保存一下场景就能看到了~ 不需要劳烦程序员去改代码,这就是序列化的意义——用于实现数据驱动。

欢迎咨询

我说两点:
1、

我不知道是我理解问题还是使用问题,你说这个没错,但是要像这种:

不加下划线滴,这样很方便策划修改,OK,这个没问题。

但是,

这种带下划线滴属性,设计之初不就是为了不能随便修改吗?所以才要加 “_” ,供脚本内部使用就行,OK,在脚本内部存在一个问题,就是在这里赋值显得毫无意义:

非得要在onLoad里再去赋下值,但是!又不是完全无意义,你第一次赋值,程序是里是会生效并且记录下来了,但是问题在于第一次记录下来后,假设你不知道在onLoad去改这个值,以后你再怎样改这个值,这个值都会是你第一次 ctrl+s 滴时候滴那个值。。这才是问题,我最开始遇到这个问题,我是一直以为Creator失灵了,因为这个情况滴发生很超乎我滴预期。当然,也许是我理解问题,我现在可能还没理解到这个中底蕴。

2、

我要为这个论坛点个赞,有2个原因:1’论坛界面、功能,做得很好,特别是这个功能,虽然不同于很多其他论坛,但真做得很好。2‘cocos 团队,正是你们每个人滴耐心回答,对每一个人滴每一个问题,让这个论坛有了生命,向他们点赞:
等等等等,我给他们点赞!

1赞

不应该在 onLoad 赋值,在 onLoad 赋值说明根本就不需要序列化,非序列化的话就不会需要重复赋值。
在 properties 中赋值私有属性,是有意义的,和公有属性一样可以提供给组件的其它使用者一些辅助信息。
并不是说编辑器不可见,就不能编辑私有属性。编辑器可以通过公有的一些 getset,或者插件直接调用组件的 API 来间接修改私有属性。