My Script组件Cube和Cylinder对象对于游戏的实际意义参数的作用C#游戏开发快速入门大学霸

My Script组件Cube和Cylinder对象对于游戏的实际意义参数的作用C#游戏开发快速入门大学霸

C#游戏开发快速入门

4.5  方法的参数My Script组件Cube和Cylinder对象对于游戏的实际意义参数的作用C#游戏开发快速入门大学霸

出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别方法的作用吧。既然C#的语法规定方法就应该这么写,肯定是有一定道理的。如果是上升到战略意义的道理,连作者也不是很明白,但是作者知道这对括号里可以添加“参数”。

4.5.1  参数的作用My Script组件Cube和Cylinder对象对于游戏的实际意义参数的作用C#游戏开发快速入门大学霸

要说明参数的作用,就必须从方法说起。方法可以处理变量中的数据,进而影响游戏对象的行为逻辑,这是本章前面一直在强调的。但是就前面脚本中一直在使用的,方法的括号里没有参数的情况而言,方法总是在处理特定变量里的数据。例如,下面是前面一个示例中定义的方法:

int AddTwoNumber()

{

return number1 + number2;

}

这个方法的括号里没有参数,它处理的数据总是变量number1和number2里的数据。既然这只是一个用于求和的方法,没有必要指定它只计算变量number1和number2里的数据和。如果有其它变量的数据也要求和的话,就只能再定义一个方法了。为方法引入参数就可以很好的解决这类的问题。

4.5.2  对于游戏的实际意义My Script组件Cube和Cylinder对象对于游戏的实际意义参数的作用C#游戏开发快速入门大学霸

开发者定义了一个方法,可以控制一个游戏对象的逻辑行为。如果其它对象也需要做出与之类似的行为,就没有必要再定义一个方法了。例如下面的游戏示例所做的那样。

(1)为游戏场景添加Cube、Cylinder和Directional light,这3个游戏对象。前两者将作为脚本方法控制行为逻辑的游戏对象,最后一个游戏对象负责游戏场景的照明。合理设置它们各自的位置,得到的Scene和Game视图,如图4-8所示。

图4-8  在Scene和Game视图里,查看各对象的相对位置,以及游戏视图的效果

(2)在Project视图里,新建脚本文件,命名为MyScript,打开此脚本并添加下面的代码:

01     using UnityEngine;

02     using System.Collections;

03

04     public class MyScript : MonoBehaviour

05     {

06              public GameObject myCube;

07              public GameObject myCylinder;

08              void OnGUI()

09              {

10                        //当鼠标左键按下的时候

11                       if(Input.GetMouseButton(0))

12                                 RotateObject (myCube);

13                        //当鼠标右键按下的时候

14                       if(Input.GetMouseButton(1))

15                                 RotateObject (myCylinder);

16              }

17              //改变游戏对象朝向的方法

18              void RotateObject(GameObject myObject)

19              {

20                       myObject.transform.Rotate(Vector3.right*100,Space.World);

21              }

22     }

q  脚本代码的18~21行,是有参数方法的定义部分。从代码来看,传入的参数是一个游戏对象,而方法中的语句,就是通过修改游戏对象Transform组件下的Rotation属性,实现改变游戏对象朝向的目地的;

q  脚本代码的12、15行,调用了两次方法RotateObject(),先后传入的参数也是不一样的;

(3)将脚本MyScript赋予Main Camera对象,并在后者的Inspector视图里,设置My Script组件里的My Cube和My Cylinder属性为游戏场景中的Cube和Cylinder对象,属性的设置方法是,直接拖动Hierarchy视图里的Cube和Cylinder对象到对应的属性框中即可,如图4-9所示。

图4-9  设置My Script组件下的属性My Script组件Cube和Cylinder对象对于游戏的实际意义参数的作用C#游戏开发快速入门大学霸

(4)运行游戏,在Game视图里,一直按下鼠标左键,读者会看到立方体对象在原地滚动。如果一直按下鼠标右键,那么原地滚动的就成了圆柱体。如果同时按住鼠标左键和右键,立方体和圆柱体就会同时滚动了,如图4-10所示。

图4-10  游戏效果展示图

(5)游戏中,控制游戏对象滚动的方法是RotateObject(),它是一个需要传入参数的方法。正是因为需要传入参数,所以它才能被用于游戏场景中,所有游戏对象滚动的行为逻辑控制中。而不只是单独的控制一个对象的行为逻辑。

Comments are closed.