在学习unity3d之余看到这篇文章:https://blog.csdn.net/qq_39816832/article/details/80316758
按照案例尝试了一下
如上通过unity帮我们实例化且序列化脚本的ClassToSerialized对象的时候在编辑器中修改 id的值(100--->120)是会作用到print打印出来的。
如上在同位置手动new了一个ClassToSerialized对象,在unity中运行后的效果是一样的。
而如果在Start函数中使用new如下
这样的话我们在unity中的编辑模式修改id的值(100--->120)在运行状态的时候 打印出来的是100
在开头我阅读的文章中那位同学说 原因是Start函数是在字段赋值之后执行的 所以在编辑器中无论怎么改都没用
那我可不可以理解为在Start函数之前存在着编辑器对实例化出来的字段进行赋值的操作。并且该操作是在图一图二实例化出对象之后进行的,如果在那之前的话是不可能的连字段都没有定义,怎么可能会有赋值这一说法呢。
所以赋值操作应该位于字段声明后且在Start之前。
那么问题来了。。假如上述是成立的在图三中在start中前 声明了对象编辑器也对对象进行了赋值操作。那为啥unity运行后打印出来的是100而不是修改后的120.
这里需要注意的是我们在Start中new了一个新对象,此时我们所声明的对象的指针就已经变为了新new的对象了。而之后就在也没有出现编辑器对对象中的的字段进行赋值的操作了。
所以运行的结果是id为100。
先这样啦,如果哪里说的不对欢迎大佬指出。