本节书摘来异步社区《Unity 5.x游戏开发实战》一书中的第2章,第2.3节,作者: Alan Thorn 译者: 李华峰 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.3 对金币进行计数
如果整个场景里只有一个金币,那么这个金币采集游戏就有些名不符实了。本游戏的核心设计思路就是在一个关卡中应该包含很多个金币,玩家应该在系统计时结束前收集完这些金币。现在,如果想要知道玩家是否将所有的金币都收集齐了,首先得先知道这个场景中总共有多少个金币。毕竟如果不知道金币的总量,也就无法知道是否已经将所有的金币收集全了。所以,第一个任务就是通过Coin类来轻松地知道任意时刻金币的总数。下面给出实现这一功能的Coin类,具体的如代码示例2.3所示。
代码示例2.3:
//-------------------------
using UnityEngine;
using System.Collections;
//-------------------------
public class Coin : MonoBehaviour
{
//-------------------------
//追踪scene中金币数量
public static int CoinCount = 0;
//-------------------------
// start()是初始化函数
void Start ()
{
//创建游戏对象, 增加金币的数量
++Coin.CoinCount;
}
//-------------------------
//当游戏对象被销毁时调用OnDestroy函数
void OnDestroy()
{
//减少金币数量
--Coin.CoinCount;
//检查剩余金币数量
if(Coin.CoinCount <= 0)
{
//玩家获得胜利
}
}
//-------------------------
}
//-------------------------
下面就代码示例2.3进行以下几点总结。
Coin类中有一个静态的成员变量——CoinCount。这个变量是静态的,可以被这个类的所有实例所共享。该变量中记录了场景中金币的总数,类中的每个实例都可以访问该变量。
每当场景中的一个金币游戏对象被创建时,就会自动调用Start()函数。在场景启动时调用Start函数就可以设定游戏初始的金币。每当初始化一个实例,这个函数就会将其中的变量CoinCount的值加1,从而完成对所有金币的计数。
每当一个游戏对象被销毁时,就会自动调用OnDestroy()函数。每当一个金币被销毁之后,这个函数就会将其中的变量CoinCount的值减1,从而将金币总量减少1个。
代码示例2.3中包含了一个变量CoinCount,利用这个变量可以知道金币的总量。查询这个值就可以轻松地获得当前金币的总量。现在已经完成整个金币采集功能工作的第一步了。