My Script组件Cube和Cylinder对象对于游戏的实际意义参数的作用C#游戏开发快速入门大学霸
My Script组件Cube和Cylinder对象对于游戏的实际意义参数的作用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.