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

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

隨便寫的做耐久小教程——(4)常見bug與debug

2023-04-08 15:25 作者:_KomeijiKoishi  | 我要投稿

本教程是基于umbrella丶2修改果引擎制作的耐久引擎(稍加改動(dòng))的教程,該引擎gm版本為Gamemaker8。?


一.Gamemaker8的debug模式

正常運(yùn)行游戲與以debug模式運(yùn)行游戲

在你測(cè)試耐久的過(guò)程中,應(yīng)當(dāng)注意到了除了綠色的運(yùn)行按鈕外,還有一個(gè)紅色的運(yùn)行按鈕,這就是以debug模式運(yùn)行游戲的按鈕

在debug模式中,除了正常的游戲窗口,還會(huì)有一個(gè)如下圖所示的debug窗口

debug窗口

在這個(gè)窗口的上方,有Run,Watch,Tools三個(gè)選項(xiàng)和九個(gè)按鈕

1.Run

點(diǎn)開Run標(biāo)簽后,會(huì)發(fā)現(xiàn)里面的選項(xiàng)與下方的五個(gè)按鈕一模一樣,現(xiàn)在分別介紹每個(gè)按鈕的作用

Pause(暫停)

當(dāng)按下這一按鈕后,游戲進(jìn)程會(huì)停止

Run(繼續(xù))

在游戲進(jìn)程停止的狀態(tài)下按下該按鈕,游戲?qū)?huì)繼續(xù)運(yùn)行

Step(步進(jìn))

在游戲進(jìn)程停止的狀態(tài)下按下該按鈕,游戲?qū)?huì)運(yùn)行1幀后停止

Restart(重置游戲)和Stop(結(jié)束游戲)

在按下Restart按鈕后,游戲?qū)?huì)重置,相當(dāng)于重新啟動(dòng)游戲

在按下Stop按鈕后,游戲進(jìn)程將會(huì)結(jié)束


2.Watch

事實(shí)上watch作用不大,但為文章完整還是略加敘述

點(diǎn)開Run標(biāo)簽后,會(huì)發(fā)現(xiàn)里面的選項(xiàng)除了下方的四個(gè)按鈕,還有Load和Save兩個(gè)選項(xiàng),現(xiàn)在分別介紹其作用

Add(添加)

按下此按鈕后會(huì)出現(xiàn)該窗口

Add界面

填入對(duì)應(yīng)的全局變量/Object變量/函數(shù)返回值即可進(jìn)行變量監(jiān)視

注:當(dāng)具有多個(gè)相同obj時(shí),只會(huì)返回最早創(chuàng)建的obj的變量值

也可通過(guò)雙擊下方空白格子進(jìn)行變量添加
Change(更改),Delete(刪除),Clear(清空)

Change按鈕用于更改某一變量的名稱(也可雙擊顯示某一變量的格子)

Delete按鈕用于刪除無(wú)需監(jiān)視的變量(也可選中特定變量后按下Delete鍵)

Clear按鈕會(huì)清空所有監(jiān)視的變量值

Load(讀?。┖蚐ave(保存)

Save會(huì)將你所有進(jìn)行監(jiān)視的變量名稱存儲(chǔ)為一個(gè)txt文件,將上文監(jiān)視的三個(gè)變量Save后生成的txt文件如下圖所示:

在之后debug的過(guò)程中,可以通過(guò)Load此txt文件再次對(duì)這三個(gè)函數(shù)進(jìn)行監(jiān)視

load后的效果

注:Load的變量不會(huì)覆蓋Load前添加到監(jiān)視列表中的變量

注意:以上所有按鈕按下后都不會(huì)顯示確認(rèn)界面

3.Tools

Tools的選項(xiàng)都不以按鈕的形式呈現(xiàn)

①上半部分

Execute Code(執(zhí)行代碼)與Set Speed(設(shè)置游戲速度)

選中Execute Code選項(xiàng)后,會(huì)出現(xiàn)一個(gè)窗口

Execute Code窗口

它能夠執(zhí)行一次你輸入的代碼,但代碼必須只有一行,如:

with(player){x=400;y=608}

global.DebugNumber=point(400,304,player.x,player.y)

諸如此類


選中Set Speed選項(xiàng)后,會(huì)出現(xiàn)一個(gè)窗口

Set Speed窗口

里面默認(rèn)顯示目前的游戲幀率,你可以將其更改到其他數(shù)值,使游戲運(yùn)行速度增大/減小,不過(guò)對(duì)于該耐久引擎的debug并沒有什么用處


②中間部分

Show Global Variables(顯示全局變量)和Show Local Variables(顯示對(duì)象變量)

當(dāng)點(diǎn)擊Show Global Variables選項(xiàng)后,會(huì)出現(xiàn)下圖界面

Show Global Variables界面

其中,第一欄是關(guān)于鍵鼠的變量,第二欄是關(guān)于房間設(shè)置的變量,第三欄是關(guān)于游戲運(yùn)行狀態(tài)的變量,這三欄大多數(shù)是只能讀取,無(wú)法更改的

第四欄中,則是用戶自行定義的全局變量,即形如global.xxx的變量,其中,與耐久參數(shù)和引擎設(shè)置相關(guān)的全局變量位于第四欄最上方,與Fmod相關(guān)的全局變量位于第四欄中部(即前綴為dll_的所有變量,而在耐久進(jìn)行過(guò)程中設(shè)置的全局變量一般出現(xiàn)在第四欄最下方


當(dāng)點(diǎn)擊Show Local?Variables選項(xiàng)后,會(huì)出現(xiàn)下圖界面

Show Local Variables界面

在框中,我們可以填入某種obj的名稱或者某個(gè)obj的id

當(dāng)填入名稱時(shí),如果此種obj同時(shí)具有多個(gè),那么只會(huì)顯示最早創(chuàng)建的obj

確認(rèn)后,會(huì)顯示以下窗口

Show Local Variables界面

其中,第一欄是關(guān)于運(yùn)動(dòng)狀態(tài)的變量,第二欄是obj的id與物體、圖像變量,第三欄與path相關(guān),但本文并不提及path

與Show Global Variables界面類似,第四欄中為用戶自行定義的變量。因此,可以通過(guò)該方法對(duì)obj的變量進(jìn)行監(jiān)視

注:在此界面中,數(shù)組變量?jī)H會(huì)顯示編號(hào)為0的數(shù)組元素的值,如果要檢測(cè)某一數(shù)組變量的值,可以在Execute?Code界面輸入形如

global.Test=Variable[i]

的代碼,之后在Show Global Variables界面中查看


②下半部分

Show Instances(顯示所有Object)和Show Messages(顯示信息)

按下Show Instances選項(xiàng)后,會(huì)顯示如下界面

Show Instances界面

在界面中會(huì)顯示當(dāng)前房間所有的obj,當(dāng)游戲運(yùn)行時(shí),該界面會(huì)不斷刷新,因此應(yīng)當(dāng)在點(diǎn)擊暫停按鈕之后再查看這一界面

其中,第一列為obj的id編號(hào),第二列為obj的名稱,第三列為obj顯示的spr圖像(<underfined>表示沒有spr圖像)

Show Messages選項(xiàng)沒什么卵用,不用管它


4.其他

Debug界面下方小欄

在debug界面下方有這樣一欄,分別顯示游戲幀率,房間內(nèi)Object數(shù)量,鼠標(biāo)指向的obj的id

在暫停狀態(tài)下,通過(guò)mouse id,可以很方便的確定某個(gè)出錯(cuò)obj的id編號(hào)


此引擎在debug模式下,可以通過(guò)鼠標(biāo)左鍵點(diǎn)擊房間內(nèi)的任意位置的方式,將kid傳送到鼠標(biāo)處。


在debug模式下,變量debug_mode等于1

二.常見bug與debug的方法

本文僅提及常見的出現(xiàn)在iw耐久制作中的bug,對(duì)于特殊的或者代碼邏輯上的錯(cuò)誤,本文不予理會(huì)。

1.

當(dāng)游戲彈出這一窗口時(shí),請(qǐng)檢查music_init腳本中填寫的音樂文件名稱是否正確,是否包含后綴名,是否正確按照教程(1)進(jìn)行參數(shù)配置。


2.在時(shí)間軸中創(chuàng)建了一個(gè)彈幕,但是游戲過(guò)程中沒有出現(xiàn)

打開debug模式的Show Instances選項(xiàng),檢查這個(gè)obj是否存在

如果不存在,可能的原因有:

????1.創(chuàng)建函數(shù)中的obj名稱填寫錯(cuò)誤

????2.obj的銷毀代碼與需求不符(例如:銷毀代碼是在離開房間后銷毀,但是將obj創(chuàng)建在房間之外)

????3.彈幕源創(chuàng)建代碼出錯(cuò)

如果確認(rèn)obj存在,下一步復(fù)制這一obj的id,填入Show Local Variables中

在Show Local Variables界面查看以下參數(shù):

????1.坐標(biāo)是否位于房間之外

????2.visible(可見參數(shù))是否為0

????3.image_alpha(透明度)是否為0

如果正常,第三步打開此obj的界面,檢查是否具有繪制事件(當(dāng)具有繪制事件時(shí),obj不會(huì)顯示自身圖像)

最后,檢查此obj是否與背景同色


3.創(chuàng)建的obj/更改的spr等等出錯(cuò)或者與預(yù)想不同

若確認(rèn)名稱輸入無(wú)誤,嘗試將目標(biāo)資源名稱更改,查看代碼是否依然顯示淺黃色(一般情況下,GM8中的游戲資源顯示為淺黃色,在偏好設(shè)置中可以更改為其他顏色)。

若依然顯示為淺黃色,則可能是因?yàn)橛螒蛑芯哂型Y源,比如同時(shí)具有兩個(gè)名為bullet的obj之類


4.在耐久進(jìn)行的過(guò)程中,突然一瞬間跳過(guò)了好幾幀甚至幾十幀

基本上,遇見這種情況,可以確定是由于一個(gè)image_xscale或者image_yscale為零的物體與另一物體執(zhí)行碰撞事件,這一類物體參與碰撞事件時(shí),就會(huì)產(chǎn)生這一bug,通過(guò)其他方式避免即可


5.按下R后耐久bgm不播放,只有第一次進(jìn)入游戲能運(yùn)行
如果按下R后kid直接出現(xiàn)在耐久房間中,說(shuō)明你很可能在耐久房間中存了當(dāng),請(qǐng)自行刪除存檔再次測(cè)試,存檔在Data\Save文件夾內(nèi)


6.使用形如player.x=600的代碼,但是kid的位置并沒有變化

由于GML中獨(dú)特的固體(solid)特色,如果一個(gè)obj具有碰撞另一個(gè)obj的事件,并且其中一方是固體,那么這兩個(gè)obj重疊之后,會(huì)回到上一幀所處的位置。

因此,很有可能是因?yàn)?strong>kid移動(dòng)到的位置(加上速度位移)上有一個(gè)block,正常情況下,控制兩個(gè)obj不碰撞即可。如果要使兩個(gè)obj接觸成為可能,需要對(duì)引擎進(jìn)行修改,或許在后面的章節(jié)中會(huì)提及。


7.在創(chuàng)建彈幕的時(shí)候?qū)懥薸nst.num=1,在彈幕的create里寫了if num=1{……},但是并沒有執(zhí)行大括號(hào)里的代碼

創(chuàng)建事件是在Object創(chuàng)建的同時(shí)執(zhí)行,因此,形如:

inst=instance_create(x,y,obj)

inst.xxx=xxx

的代碼,執(zhí)行順序?yàn)椋?/p>

創(chuàng)建obj→執(zhí)行obj的create事件→為obj的xxx賦值


如果還有其他bug,可在評(píng)論區(qū)提出

至此,基本上足夠制作一個(gè)能夠稱為耐久的iw游戲了

下一章將簡(jiǎn)要討論部分與數(shù)學(xué)相關(guān)的彈幕類型

隨便寫的做耐久小教程——(4)常見bug與debug的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
岳普湖县| 顺义区| 庆安县| 商城县| 永福县| 高密市| 建瓯市| 多伦县| 淮安市| 丽江市| 读书| 遂川县| 贵定县| 内黄县| 沂水县| 广汉市| 定陶县| 兴仁县| 平山县| 黔东| 靖宇县| 富民县| 和平区| 怀宁县| 栖霞市| 神池县| 舟曲县| 牡丹江市| 象州县| 新野县| 万载县| 玛纳斯县| 南和县| 鸡西市| 高邑县| 微山县| 武汉市| 瑞安市| 东明县| 白城市| 徐汇区|