Unity踩坑之脚本无法初始化public字段

问题描述

在脚本中public的字段,设置了初始值,却在unity的Inspector窗口无法正确加载



这是为什么呢?


问题原因

在Unity中,当你在脚本中设置一个公共(public)字段的初始值时,该值会显示在Inspector窗口中。然而,有时候你可能会遇到Inspector窗口中显示的值与你设置的初始值不一致的情况。这可能是由以下几个原因导致的:

  • 脚本实例化顺序:如果有多个脚本同时设置同一个字段的初始值,它们的实例化顺序可能会影响最终的值。Unity默认情况下会按照脚本在游戏对象上的顺序进行实例化,因此后面的脚本可能会覆盖前面的脚本设置的值。你可以通过在脚本上使用[SerializeField] 特性来控制字段的序列化顺序,或者在脚本的Awake()或Start()方法中手动设置字段的值来解决这个问题。

  • 预设(Prefab)的实例化:如果你在Inspector窗口中修改了预设的字段值,并将该预设拖放到场景中创建实例,那么实例化后的对象会继承预设中的值,而不是在脚本中设置的初始值。

  • 重置字段值:有时,当你在Inspector窗口中手动修改了字段的值,并且之后再运行游戏或重新编译脚本时,Unity会将字段值重置为Inspector窗口中的值,而不是在脚本中设置的初始值。这是为了确保你在编辑器中进行的修改能够保留下来,以方便调试和迭代。

解决方法

  • 在Inspector窗口重置值


自行修改你想要的值

  • 控制序列化顺序

在脚本中添加[SerializeField] 特性


后话

这个是很多新手都会踩坑的问题,后面多注意即可,非必要就不使用public,而是使用protected/private

Enjoy ~

猜你喜欢

转载自blog.csdn.net/a924282761/article/details/131148155