成员变量变量的作用域C#游戏开发快速入门大学霸

成员变量变量的作用域C#游戏开发快速入门大学霸

C#游戏开发快速入门

成员变量变量的作用域C#游戏开发快速入门大学霸3.5.4  成员变量目前为止,示例脚本中声明的变量,也被称为“成员变量”(member variables)。因为它们被声明在类MyScript大括号的里面,方法大括号的外面。提及“成员变量”这个概念是因为,只有成员变量才可以作为组件的属性显示在组件下。

提示:成员变量声明的位置,因人而异,作者喜欢把它们写在类中所有方法的前面,并且写在一起,这样的话类中有哪些成员变量一目了然,例如:

01     using UnityEngine;

02     using System.Collections;

03

04     public class MyScript : MonoBehaviour

05     {

06              public int number1 = 2;

07              public float number2 = 4.7f;

08              public float number3 = 6.12f;

09              void Start()

10              {

11                       AddTwoNumbers();

12                       SubTwoNumbers();

13              }

14              void AddTwoNumbers()

15              {

16                       Debug.Log (number1 + number2);

17              }

18              void SubTwoNumbers()

19              {

20                       Debug.Log(number3 – number2);

21              }

22     }

但是也有人喜欢将成员变量分开写在它们第一次被方法使用的方法名的前面,例如成员变量变量的作用域C#游戏开发快速入门大学霸:

01     using UnityEngine;

02     using System.Collections;

03

04     public class MyScript : MonoBehaviour

05     {

06              public int number1 = 2;

07              public float number2 = 4.7f;

08              void Start()

09              {

10                       AddTwoNumbers();

11                       SubTwoNumbers();

12              }

13              void AddTwoNumbers()

14              {

15                       Debug.Log (number1 + number2);

16              }

17              public float number3 = 6.12f;

18              void SubTwoNumbers()

19              {

20                       Debug.Log(number3 – number2);

21              }

22     }

因人而异,读者可以选择自己喜欢的方式。以上两个脚本中实现的功能是一样的,即声明变量、初始化变量,最后将变量的运算结果输出到Console视图里,如图3-13所示。

图3-13  Console视图里,输出了变量的运算结果

3.5.5  变量的作用域成员变量变量的作用域C#游戏开发快速入门大学霸

变量的作用域(scope),可以被理解成“变量在脚本中的存在范围”。例如,对于下面的脚本:

01     using UnityEngine;

02     using System.Collections;

03

04     public class MyScript: MonoBehaviour

05     {

06              private string block1 = “Block 1 text”;

07              void Start()

08              {

09                       Debug.Log (block1);

10                       string block2 = “Block 2 text”;

11                       Debug.Log (block2);

12

13                       {

14                                 Debug.Log (block1);

15                                 Debug.Log (block2);

16                                 string block3 = “Block 3 text”;

17                                Debug.Log (block3);

18                       }

19              }

20     }

脚本中一共有3个作用域,分别以3个大括号为边界,即3个作用域的范围是:05~20、08~19和13~18。而变量的作用域,将从它被声明的位置开始,一直到它所处的作用域的末尾处。

q  脚本中一共声明了3个string类型的变量,分别位于脚本的06、10和16行。

q  变量block1的作用域是07~20行;

q  变量block2的作用域是11~19行;

q  变量block3的作用域是16~18行;

在Unity中,运行游戏,然后在Console视图里查看输出结果,如图3-14所示。

图3-14  Console视图的输出结果

如果脚本中,不小心在变量的作用域外使用了变量的话,Console视图会提示错误,错误信息大致是告诉你“变量在声明前不能使用”,即变量是不存在的。例如,在脚本09行插入下面的代码,Console视图提示的错误信息,如图3-15所示。

09                       Debug.Log (block2);

图3-15  在作用域外使用变量,所导致的错误的信息提示成员变量变量的作用域C#游戏开发快速入门大学霸

Comments are closed.