使用Unity开发的朋友可能会遇到这样一个问题,那就是我在脚本中定义了一个公共全局变量并且赋值,但是运行后发现这个变量并不是这个值,这里就给大家解释一下原因。
代码如下:
public class Test : MonoBehaviour {
public int a = 10;
void Awake()
{
a = 20;
}
void Start () {
a = 30;
}
}
由于是public类型,所以变量a会在Unity面板中显示出来,如下图:
那么这个变量a的赋值顺序是怎样的呢?
1.首先a的值是定义时赋的值10。
2.然后a的值被Unity面板中的15替换。
3.然后a的值被Awake中的20替换。
4.然后a的值被Start中的30替换。
看到这个结果相信大家都知道原因了,要初始化的公共变量最好放到start中,而不要相信定义时的效果。当然你也可以使用[HideInInspector]让变量不显示在Unity面板中。