且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Unity 5.x游戏开发实战》一2.3 对金币进行计数

更新时间:2021-11-08 02:04:36

本节书摘来异步社区《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,利用这个变量可以知道金币的总量。查询这个值就可以轻松地获得当前金币的总量。现在已经完成整个金币采集功能工作的第一步了。