五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

一個(gè)人做游戲——打氣球手游(二)

2018-01-29 12:02 作者:楓2  | 我要投稿

先來(lái)看看上一期的坑

  1. 現(xiàn)在還沒(méi)有寫(xiě)計(jì)分的效果

  2. 氣球戳爆后的特效也沒(méi)有加入

好了,本次UP會(huì)填這些坑

計(jì)分與失敗的判定

我們來(lái)回顧一下,上一期的時(shí)候 點(diǎn)擊氣球后會(huì)在控制臺(tái)出現(xiàn)提示,注意下圖中的左下角提示。


那么如果要計(jì)分的話,也就是在控制臺(tái)顯示這段代碼里修改了。

不過(guò)在寫(xiě)這個(gè)功能之前有個(gè)經(jīng)驗(yàn)之談,那就是我們要盡多的把數(shù)據(jù)存儲(chǔ)在一個(gè)腳本代碼里,這是為了以后的方便,所以我們首先創(chuàng)建個(gè)叫g(shù)ameConfig的腳本,下圖有個(gè)小細(xì)節(jié),UP為什么一開(kāi)始沒(méi)有成功輸入上game,是因?yàn)檩斎肽J绞侵形?,記得一定要在輸入模式中途改成英文?/p>

然后我在gameconfig中加入了這個(gè)代碼

public static int scores;           //分?jǐn)?shù)

這里就涉及到新姿勢(shì)了,首先提一下int scores的的意思是定義一個(gè)叫做scores整數(shù)變量,這個(gè)曾經(jīng)UP有講解過(guò),所以就不在多提。

今天我們?cè)?span id="2s04ssssssss" class="color-purple-01">int scores前面加了個(gè)public static又是什么意思呢。

按照字面來(lái)理解就是共享與靜態(tài),不過(guò)這樣說(shuō)我相信肯定不會(huì)懂,如果以太專業(yè)的術(shù)語(yǔ)解釋也不是UP的風(fēng)格,所以我們還是用人類可理解的語(yǔ)言來(lái)說(shuō)明。

public用在變量前,意味著這個(gè)變量可跨腳本使用,如果不加這個(gè)在別的腳本里就無(wú)法調(diào)用,至于怎么調(diào)用,下面馬上就來(lái)。

static 的意思是在程序運(yùn)行期間,記錄的內(nèi)容無(wú)論你怎么切換場(chǎng)景都是不變的,如果不加static,你切換一個(gè)場(chǎng)景記錄就不見(jiàn)了。(有點(diǎn)像內(nèi)存的那種感覺(jué),只要不關(guān)機(jī)就會(huì)一直緩存這段內(nèi)容,如果關(guān)機(jī)了當(dāng)然就沒(méi)有了)

當(dāng)然,public static的內(nèi)容確實(shí)是常駐在內(nèi)存里的,所以不要寫(xiě)太多了就好,當(dāng)然,這個(gè)數(shù)據(jù)在內(nèi)存里占據(jù)1K都不到的空間吧,現(xiàn)在內(nèi)存動(dòng)不動(dòng)幾十個(gè)G的也不必太擔(dān)心這個(gè)啦。


回到了hitBall腳本中,UP加入了一句這個(gè),不過(guò)你會(huì)發(fā)現(xiàn)報(bào)錯(cuò)了,其實(shí)解決辦法也很容易,創(chuàng)建一個(gè)名叫Plugins的文件夾(注意英文大小寫(xiě)),把gameConfig拖進(jìn)去。


Plugins是什么意思呢,是Unity里的特殊文件夾,主要是用來(lái)放一些特殊插件的,尤其是需要調(diào)用功能的插件。

gameConfig.scores += 1;  意思是讓gameConfig腳本里的scores變量增加1;

X += Y 實(shí)際上就是省略寫(xiě)法的  X = X+Y ,也就是把X的值改變成X+Y,再次申明=不是等號(hào)是賦值,如果不了解程序里=這個(gè)意思   可以看看UP之前的文章,或者去搜索下程序基礎(chǔ)知識(shí),順帶的你還需要了解 ++ 兩個(gè)加號(hào)是什么意思,自己學(xué)習(xí)吧。

接下來(lái)UP把代碼改成了這樣,//是注釋,以前也講過(guò),這里用不上一些代碼了,但是UP又覺(jué)得未來(lái)可能有用,所以就注釋掉,而不是直接刪掉,這是寫(xiě)程序的經(jīng)驗(yàn),請(qǐng)學(xué)習(xí)。

print是什么意思就不再?gòu)?qiáng)調(diào)了,曾經(jīng)UP說(shuō)過(guò),要學(xué)會(huì)用unity寫(xiě)程序,這個(gè)是必會(huì)知識(shí)。

運(yùn)行程序,看看左下角,你有發(fā)現(xiàn)控制臺(tái)上輸出了什么嗎,UP就不再解釋了,相信到這里聰明的你自然明白這個(gè)是怎么實(shí)現(xiàn)的。

用UI顯示出來(lái)打印的分?jǐn)?shù)

于是UP回憶起了當(dāng)時(shí)寫(xiě)過(guò)的文章,雖然這個(gè)項(xiàng)目暫時(shí)放棄了,但是依然告知了如何做UI。

于是UP就使用了超能力,讓主界面瞬間產(chǎn)生了變化!(快醒醒,哦不,人不中二怎么做游戲)

這已經(jīng)是Unity里的了,不再是PSD文件了

接下來(lái)我們要新建個(gè)腳本,叫做mailUI,主界面UI,首先我們?cè)谝梦募锛?行

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

//--------上面是創(chuàng)建時(shí)自帶的,下面是我們加的-------//

using UnityEngine.UI;

using UnityEngine.Events;

加了UI的引用,才可以設(shè)置UI的文字變化,加了Events才可實(shí)現(xiàn)按鈕效果,所以先都加上來(lái)吧。

然后把mainUI腳本拖到Canvas上,這里就不截圖了,因?yàn)閁P已經(jīng)操作過(guò)許多這種操作了(其實(shí)主要還是B站專欄截圖即貼圖功能失效了,懶)

加入代碼

public GameObject socres;           //把UI中的scores拖進(jìn)來(lái)

然后在unity中拖:


可能有老司機(jī)說(shuō),可以用GameObject.Find這種功能查找模塊,不過(guò)有大神說(shuō),盡量不要用這個(gè)功能來(lái)執(zhí)行其他的操作,比較耗資源,所以UP就盡量不用了,除非是判斷某個(gè)物體是否存在于游戲場(chǎng)景中,否則不用。

我們?cè)赨pdate里加一段代碼:socres.GetComponent<Text>().text = gameConfig.scores.ToString();,然后運(yùn)行一下


是的,這段代碼的意思就是將gameConfig.scores所顯示的文字賦予給UI里的text。

點(diǎn)擊特效

其實(shí)這個(gè)要實(shí)現(xiàn)也很簡(jiǎn)單,我們需要了解unity里自帶的粒子效果編輯器。


創(chuàng)建粒子效果器

粒子效果器初始的效果是這樣的,我們改個(gè)顏色讓大家看的更清楚


這個(gè)工具挺復(fù)雜的,具體每一條的意思大家可以去搜索一下,最終UP也是瞎調(diào),搞出了個(gè)這樣的效果。


然后大家也應(yīng)該發(fā)現(xiàn)了,這個(gè)粒子效果器只是游戲里的一個(gè)組件,我們需要將其封裝起來(lái),不知大家還是否記得prefab,上一期里有提到。


現(xiàn)在我們封裝了2個(gè)組件了

然后我們改改腳本

之前我們有一段這個(gè)代碼,意思是點(diǎn)擊到氣球時(shí),清除氣球

                if (hit.collider.gameObject.transform.name == "redBall(Clone)")

                {

                    Destroy(hit.collider.gameObject);

                }

我們現(xiàn)在則需要在這一段代碼上增加新功能,在刪除氣球的同時(shí)增加爆炸特效。

其實(shí)這個(gè)實(shí)現(xiàn)方法,如果各位看過(guò)上一期,那么相信你應(yīng)該會(huì)怎么做了,就是這樣:

  • 先把生成一個(gè)氣球的代碼Instantiate(ball, new Vector2(Random.Range(-2.3f, 2.4f), -6), transform.rotation);復(fù)制過(guò)來(lái)

  • 然后創(chuàng)建一個(gè)gameObject組件叫做boomEffect

  • 把prefab拖進(jìn)boomEffect

  • 把上面那行代碼的ball改成boomEffect,再修改下位置 Instantiate(boomEffect, hit.collider.gameObject.transform.position, transform.rotation);。

  • 基本上使用復(fù)制粘貼技巧就完工了

之后運(yùn)行的效果是這樣的,但是會(huì)發(fā)現(xiàn)有BUG


我們來(lái)解決下BUG,其實(shí)最大的問(wèn)題是沒(méi)有關(guān)閉粒子效果器的loop模式,我們?cè)僬{(diào)節(jié)下參數(shù)。


有幾個(gè)關(guān)鍵參數(shù)已經(jīng)寫(xiě)出了名字

然后運(yùn)行


看起來(lái)好像完美了,實(shí)際還有個(gè)問(wèn)題,我們看看程序運(yùn)行畫(huà)面


有許多長(zhǎng)得像忍者鏢形狀的東西,其實(shí)這些就是粒子觸發(fā)器,如果存在太多的話也會(huì)影響游戲效率,所以我們要清除它。

新建腳本,寫(xiě)法如圖

可能有人會(huì)問(wèn),為什么還要寫(xiě)個(gè)load方法,不可以直接寫(xiě)在update里么,不可以,會(huì)報(bào)錯(cuò),具體為什么其實(shí)UP也不是很清楚,只知道必須要這樣寫(xiě)。

結(jié)尾

好了,到這里差不多可結(jié)束了,看起不多的文字UP可花了一個(gè)下午的時(shí)間才寫(xiě)完,那么我們依然要繼續(xù)為下一期挖坑。

  1. 失敗的功能怎么實(shí)現(xiàn)(其實(shí)都是用之前教的辦法復(fù)制粘貼就可以實(shí)現(xiàn)哦)

  2. 【策劃篇】如何讓游戲變得更有趣

因?yàn)榻貓D量不是很夠,所以有可能會(huì)不知道某些代碼寫(xiě)在什么地方,不過(guò)UP已經(jīng)把代碼放在git上了,大家可以去git看源文件。

一個(gè)人做游戲——打氣球手游(二)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
德清县| 固镇县| 拉孜县| 鹤庆县| 尉犁县| 沁水县| 安阳县| 太白县| 通化县| 中方县| 安龙县| 伊吾县| 将乐县| 卓资县| 莱芜市| 万宁市| 独山县| 兰州市| 山东| 香港 | 赣榆县| 吉木萨尔县| 定南县| 兖州市| 龙山县| 临澧县| 连平县| 贞丰县| 铜梁县| 南阳市| 开化县| 上犹县| 邻水| 莱阳市| 青阳县| 壶关县| 和田市| 专栏| 贵阳市| 龙口市| 靖江市|