public修饰的属性值在具有初始化赋值的情况下,绑定场景物体后,在cs文件修改值不起作用,以Inspector面板序列化的值为准。
一、事因
如图可见:明明赋值的是(700, 200),怎么打印的是(150.0, 45.0)???
二、解密
细心的读者已经发现了VS Code顶部栏中间的“Test2”,这是笔者复盘的测试工程2。
在Test1工程的DataManager.cs中声明了m_Range的二维向量,并且赋值为(150, 45)
然后拷贝到Test2工程,并且直接绑定到场景的GameObject上!
再去打印的时候,就是步骤一的图示情况了~
说到这里,聪明的读者已经明白笔者想表达的意思了:
脚本中声明的public属性值在存在初始化赋值的情况下,我们“拖拽”其到场景物体上,就已经被unity序列化了,后面改动cs中的赋值是没有用的!只能在Inspector面板上改动。
写到这里笔者自己都笑了,简直和Error Pause一个级别的“bug”啊,0星,差评!
希望大家不要和笔者一样,犯这种低级错误~
ps:如果想要继续HideInInspector,就是不暴露在面板,但是想修改这个初始值,我们可以移除在GameObject上的绑定,再重新挂载即可啦~