第三十六節(jié) 實現(xiàn)計分系統(tǒng)

到底是有多少功能,需要使用“系統(tǒng)”來形容冤议?其實功能非常簡單斟薇,使用“系統(tǒng)”來形容開發(fā)任務(wù)能夠讓你更加“系統(tǒng)化”的去開發(fā)這個功能,你就會考慮的更加全面恕酸。例如換一種說法:添加一個小小的計分功能堪滨,那么在開發(fā)過程中,這個功能可能得不到你的重視蕊温,然后就會很隨便的寫一下椿猎,實現(xiàn)功能即可。
我以前剛學(xué)編程的時候寿弱,我會在房間門口貼著“貝爾實驗室”犯眠,因為C語言是從這里誕生的,在房間敲代碼時專注度非常高症革。

那么筐咧,分析一下該“系統(tǒng)”該如何實現(xiàn)?

首先噪矛,需要顯示分?jǐn)?shù)的地方有2個:當(dāng)前分?jǐn)?shù)和最高分?jǐn)?shù)量蕊。
然后,更新分?jǐn)?shù)的地方有3個:
游戲啟動:從存檔讀取上一次分?jǐn)?shù)艇挨,沒有則設(shè)置為0
消除時:消除時增加分?jǐn)?shù)残炮,如果分?jǐn)?shù)高于歷史,則同時更新最高分
重置游戲時:當(dāng)前分?jǐn)?shù)歸零缩滨,最高分保存不變

按這么算势就,即使是最復(fù)雜的情況也可能不到10行代碼(不計算初始化對象)。所以直接寫在導(dǎo)演類中就可以了脉漏,不需要單獨分離一個類來處理苞冯。

開始實現(xiàn):

01.綁定對象

將場景中的“當(dāng)前分?jǐn)?shù)”和“最高分?jǐn)?shù)”對象拖動至導(dǎo)演類對應(yīng)的對象上:


02.添加成員

先添加“當(dāng)前分?jǐn)?shù)”和“最高分?jǐn)?shù)”對應(yīng)的腳本對象:

// 當(dāng)前分?jǐn)?shù)
public GameObject Score;
ScoreScreen _currentScore;
// 最高分?jǐn)?shù)
public GameObject HighScore;
ScoreScreen _highScore;

添加兩個表示分?jǐn)?shù)的成員變量。在添加這兩個變量時發(fā)現(xiàn)命名會與剛剛添加的腳本對象的引用產(chǎn)生沖突侧巨,經(jīng)過思索舅锄,決定添加一個后綴來區(qū)分,同時那些場景中對象引用的名稱也添加一個后綴與腳本名區(qū)分開來:
類似public GameObject ScreenMain;這種的變量名添加“Obj”司忱,腳本引用添加“Script”:

// 主屏幕
public GameObject ScreenMainObj;
ScreenMain _screenMainScript;
// 附加屏幕
public GameObject ScreenAttachedObj;
// 當(dāng)前分?jǐn)?shù)
public GameObject ScoreObj;
ScoreScreen _currentScoreScript;
// 最高分?jǐn)?shù)
public GameObject HighScoreObj;
ScoreScreen _highScoreScript;
// 關(guān)卡
public GameObject LevelObj;
// 暫停提示
public GameObject PauseHintObj;

記得修改變量名后皇忿,導(dǎo)演對象中的對象引用需要重新指定畴蹭。
然后這是新添加的兩個成員變量:

int _currentScore;          // 當(dāng)前分?jǐn)?shù)
int _highScore;             // 最高分?jǐn)?shù)
03.初始化新加的成員
// 初始化分?jǐn)?shù)
_currentScoreScript = ScoreObj.GetComponent<ScoreScreen>();
if (_currentScoreScript == null) return false;
_highScoreScript = HighScoreObj.GetComponent<ScoreScreen>();
if (_highScoreScript == null) return false;
_currentScoreScript.SetScore(_currentScore);
_highScoreScript.SetScore(_highScore);
04.在消除時更新分?jǐn)?shù)

為了讓計分看起來更精致,可以將更新分?jǐn)?shù)寫在ClearOnePoint()方法中鳍烁,這樣叨襟,計分就好像多了動畫一樣,而不是一下就跳到最終分?jǐn)?shù)老翘。

// 更新分?jǐn)?shù)
_currentScore++;
if (_currentScore > _highScore) _highScore = _currentScore;
_currentScoreScript.SetScore(_currentScore);
_highScoreScript.SetScore(_highScore);
05.計分規(guī)則

通過判斷消除的行數(shù)來修改增加的分?jǐn)?shù):
消除1行:每個點增加1分,共增加10分
消除2行:每個點增加2分锻离,共增加40分
消除3行:每個點增加3分铺峭,共增加90分
消除4行:每個點增加4分,共增加160分

// 更新分?jǐn)?shù)
switch (_needClearLines.Count)
{
    case 1: _currentScore += 1; break;
    case 2: _currentScore += 2; break;
    case 3: _currentScore += 3; break;
    case 4: _currentScore += 4; break;
}
if (_currentScore > _highScore) _highScore = _currentScore;
_currentScoreScript.SetScore(_currentScore);
_highScoreScript.SetScore(_highScore);

測試結(jié)果如下:


代碼鏈接:https://pan.baidu.com/s/1ji3nTes7Uwyn5KaqikBr8Q
提取碼:df5v

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汽纠,一起剝皮案震驚了整個濱河市卫键,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虱朵,老刑警劉巖莉炉,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碴犬,居然都是意外死亡絮宁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門服协,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绍昂,“玉大人,你說我怎么就攤上這事偿荷【接危” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵跳纳,是天一觀的道長忍饰。 經(jīng)常有香客問我,道長寺庄,這世上最難降的妖魔是什么艾蓝? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮斗塘,結(jié)果婚禮上饶深,老公的妹妹穿的比我還像新娘。我一直安慰自己逛拱,他們只是感情好敌厘,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朽合,像睡著了一般俱两。 火紅的嫁衣襯著肌膚如雪饱狂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天宪彩,我揣著相機(jī)與錄音休讳,去河邊找鬼。 笑死尿孔,一個胖子當(dāng)著我的面吹牛俊柔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播活合,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼雏婶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了白指?” 一聲冷哼從身側(cè)響起留晚,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎告嘲,沒想到半個月后错维,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡橄唬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年赋焕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仰楚。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡宏邮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缸血,到底是詐尸還是另有隱情蜜氨,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布捎泻,位于F島的核電站飒炎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏笆豁。R本人自食惡果不足惜郎汪,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闯狱。 院中可真熱鬧煞赢,春花似錦、人聲如沸哄孤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凝危,卻和暖如春波俄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛾默。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工懦铺, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人支鸡。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓冬念,卻偏偏與公主長得像,于是被迫代替她去往敵國和親牧挣。 傳聞我的和親對象是個殘疾皇子急前,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,970評論 6 13
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,101評論 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)浸踩。 注意:講述HT...
    kismetajun閱讀 27,486評論 1 45
  • 一叔汁、信用內(nèi)涵的界定 【】應(yīng)收應(yīng)付【】預(yù)收預(yù)付 二统求、信用的產(chǎn)生與信用形式的演進(jìn) (一)信用的產(chǎn)生 前提條件: 財產(chǎn)私...
    旋律sama閱讀 402評論 0 0
  • 剩一天考試了检碗,我很著急÷肓冢可我在你們的身上看不到著急折剃。 周四的我看到你們的測試卷,令我所有的驚喜期待都...
    楊琪雨閱讀 92評論 0 0