《Genesis-3D開源遊戲引擎完整實例教程-2D射擊遊戲篇06:計分》

6.計分

計分概述:

分值計量直接反應玩家在遊戲中得到的成就感。所以,計分系統在遊戲中顯得尤其重要,有的反應在直接獲取的分數上,有的反應在殺敵數量上等。數組

計分原理:

原理圖,如圖6-1所示。函數


圖6-1

實現方法:

步驟1:網站

子彈擊中敵人。擊中敵人的條件參考4.碰撞檢測內容。ui

步驟2:spa

敵人死亡。相關代碼以下所示。3d

步驟3:
3.1計分器計分原理: code

(1)定義一個有九個格子的顯示器面板,面板從右到左用下角標標註爲0-8,每一個格子存放0-9十個數字。遊戲

(2)設定每消滅一個敵人,玩家獲取5分,將數值每次傳給一個變量var;將數值var傳給string數組。ip

(3)數組中有數值的位數,對應顯示器面板方格的下角標,使對應下角標方格的數字顯示,而且設定數字爲數組中對應的數值。遊戲開發

3.2代碼的實現: 

//定義存放數字的9個方格

_NumberSimulator = new UI_Number_Simulate(_windowName, "JuanZhouNumber", 9);

//設置現有分數

_NumberSimulator.SetNumber(ScriptRuntime.MarkMgr.Instance.GetMark(),true);

01 public class UI_Number_Simulate
02 {
03  private class NumberSimulate
04  {
05   FString _layoutname;
06   string _simulateID;
07   char _currentChar = 'a';
08   public NumberSimulate(FString layoutname, string simulateID)
09   //單位數字模擬器的構造函數
10   {
11    _layoutname = layoutname;                     
12    _simulateID = simulateID;
13       SetAllInvisible ();//隱藏全部數字
14   }      
15    
16   //爲每一位數字模擬器賦值
17  public void DoNumSimulate (char var)
18  {
19   if (_layoutname == null || _simulateID == null)
20   {
21        return;
22      }
23      if (_currentChar == var)
24   {
25        return;
26      }
27                
28      SetAllInvisible ();//首先隱藏全部數字
29      //根據傳入的數字,顯示相對應的UI數字
30   if (var == '0') {
31      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_0"true);
32      else if (var == '1') {
33      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_1"true);
34      else if (var == '2') {
35      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_2"true);
36      else if (var == '3') {
37      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_3"true);
38      else if (var == '4') {
39      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_4"true);
40      else if (var == '5') {
41      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_5"true);
42      else if (var == '6') {
43      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_6"true);
44      else if (var == '7') {
45      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_7"true);
46      else if (var == '8') {
47      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_8"true);
48      else if (var == '9') {
49      GUI.UIWidget.SetVisible (_layoutname, _simulateID + "_9"true);
50      }
51      _currentChar = var;
52  }
53  //隱藏全部數字
54  public void SetAllInvisible()
55    {
56      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_0"false);
57      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_1"false);
58      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_2"false);
59      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_3"false);
60      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_4"false);
61      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_5"false);
62      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_6"false);
63      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_7"false);
64      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_8"false);
65      GUI.UIWidget.SetVisible(_layoutname, _simulateID + "_9"false);
66    }
67        
68  private List<numbersimulate> _List = new List<numbersimulate>();
69  //UI_Number_Simulate的構造函數
70  public UI_Number_Simulate (FString layoutname, string simulateID, int size)
71   {
72   //根據傳入的位數,初始化ui數字模擬器
73   for (int i=0; i < size; i++)
74   {
75    NumberSimulate numSimulate = new NumberSimulate(layoutname, simulateID + i.ToString());
76    _List.Add(numSimulate);
77    numSimulate.SetAllInvisible();
78      }
79  }
80  
81        
82  //爲Ui數字模擬器設置數值
83  public void SetNumber (int num, bool numFromLeftToRight)
84  {
85   //將傳入的數字轉換爲string,根據數組的位數對應的char值設置對應的單位數字模擬器的數值
86   string numString = num.ToString ();
87   if (numFromLeftToRight)
88   {
89    numString = numString.PadRight (_List.Count, 'a');
90   }
91   else
92   {
93    numString = numString.PadLeft (_List.Count, 'a');
94   }
95   for(int i = 0; i < _List.Count; ++i)
96   {
97    _List[i].DoNumSimulate(numString[i]);
98   }
99  }</numbersimulate></numbersimulate>
1   


 

引擎官方網站:http://www.genesis-3d.com.cn/

官方論壇:http://bbs.9tech.cn/genesis-3d/

官方千人大羣:59113309   135439306

YY頻道-遊戲開發大講堂(徹底免費,按期開課):51735288 

Genesis-3D開源遊戲引擎:遊戲起源,皆因有我!!!

相關文章
相關標籤/搜索