GameMaker|Method 方法|程式基礎

閱讀時間約 5 分鐘

這篇內容,將會講解什麼是方法,以及與方法相關的知識。有了這些概念,各位會更容易理解,要如何設計程式碼。

本篇教學所使用的系統是Windows 10,如果有按鍵相關的說明,會用Windows的系統來解釋。如果你用的是Mac系統,再麻煩自行換成相對應的按鍵。

raw-image


前置知識


在學習本篇內容之前,最好具備以下的前置知識,以免看不懂這篇教學的內容。


定義Method


在物件(Object)當中,有兩種定義函式的方法,一個跟腳本函式(Script Function)一樣,另一個則是使用方法變數(Method Variable)。

以下是範例的程式碼:

//用此方法製作的,稱呼為Method,變數會呈現橘色
function method_random() {
//隨機改變座標的位置,但不會超出畫面
randomise() ;
id.x = irandom_range( 0 , room_width - sprite_get_width(0) ) ;
id.y = irandom_range( 0 , room_height - sprite_get_height(0) ) ;
}

//用此方法製作的,稱呼為Method Variable,變數會呈現紫色
method_variable_random = function() {
//隨機改變座標的位置,但不會超出畫面
randomise() ;
id.x = irandom_range( 0 , room_width - sprite_get_width(0) ) ;
id.y = irandom_range( 0 , room_height - sprite_get_height(0) ) ;
}

//兩種Method的使用方法,都是差不多的
method_random() ;
method_variable_random() ;


範例程式碼的截圖,各位可以觀察一下顏色:

定義Method的範例程式碼

定義Method的範例程式碼


Method Variable 方法變數


方法變數除了可以當成Method來用之外,他本身也是一種變數,換句話說,變數能做的事情,方法變數也能做。

一個最簡單的用法,就是把方法變數,定義成全域變數,那麼原本只能用在,特定物件裡的Method,就能拿去給其他的物件使用。

global.method_variable_random = function() {
//隨機改變座標的位置,但不會超出畫面
randomise() ;
id.x = irandom_range( 0 , room_width - sprite_get_width(0) ) ;
id.y = irandom_range( 0 , room_height - sprite_get_height(0) ) ;
}


跨區使用Method


一般來說,如果在物件上定義Method,通常就是給指定的物件使用,那麼物件之間,能不能跨區使用Method呢(物件A使用物件B的方法)?答案是可以的。

通常我們能用以下的方法,來實踐跨區使用的動作:

跨區使用Method的範例

跨區使用Method的範例


不過Method有個特性,就是Method裡的任何參數,都是「綁」在定義的物件上。

以上面的範例來說,即便我們讓obj_circle來呼叫obj_block的Method,最終改變座標的,依然會是obj_block的實體,obj_circle並不會產生反應。

那有沒有方法,是能把參數,更換到呼叫Method的物件上呢?答案有是有的。

//將obj_block裡的Method,轉換到obj_circle的實體上,以下兩種程式碼都能使用
//注意參數裡的函式,或是方法變數,都不能加上括號
circle_random = method( id , obj_block.method_random ) ;
circle_random = method( id , obj_block.method_variable_random ) ;

//呼叫方法
circle_random() ;


使用函式時要注意括號


也許各位有注意到,我在上一段的程式碼中,有註明不能加上括號,如果加上了,程式就會跳出錯誤,而無法正常的執行。

為了解釋這個現象,各位可以查看以下的程式碼:

function number_plus_ten() {
//此函式,最終會回傳數值100的實數資料
var number = 90 ;
number = number + 10 ;
return number ;
}

//呼叫number_plus_ten,讓get_return的數值變成100
get_return = number_plus_ten() ;

//不呼叫number_plus_ten,讓method_variable變成方法變數
method_variable = number_plus_ten ;


簡單來說,只要有用括號,就表示要「執行」函式,如果我們要把函式(或方法變數),當成參數來使用,那就是不需要加括號的(因為不用執行)。

但如果是要進行賦值,就得看用途來決定了。

備註:這邊之所以說是函式,是因為Script Function和Method,都得注意這點,這並不是Method的專利。




🔔如果內容對你有幫助,可以按個喜歡,這樣就能讓更多人,接觸到這些棒棒的內容🔔


✨祝各位也能開心的做出好遊戲✨

免費、開心、簡單,這是我做教學的理念,我希望透過我的行動,讓人們找回自我學習的快樂,讓那些資源稀少的自學者們,也能朝著自己的夢想來前進。讓我們一起開心的做出遊戲吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
default methods 似乎也引起不小的討論,因為 default methods 加上可以實作多個介面,已經有點像 C++ 的多重繼承了,只差在沒辦法繼承成員變數而已,是好是壞就看怎麼使用了。我個人覺得還蠻方便的
Thumbnail
在 Vue 中,methods和computed是用於定義元件的行為和計算屬性。本文將介紹methods和computed屬性的使用方法和區別,並通過實際範例來幫助你理解。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們列出所有體重>100公斤的動物的名字,並且必須依照體重weight作降序排列。 題目的原文敘述 測試範例 Example 1: Input: DataFrame animals: +----------+-
Thumbnail
方法確效,如其名,就是確認方法是否符合預期的使用目的。詳見 ICH Q2 (R1) 或分析確效作業指導手冊 (fda.gov.tw)
*刻意練習from啾啾鞋:沒天賦也能成為高手 *18則有趣管理定律-酒與污水/木桶定律 *為何disney在巴黎瀕臨破產在東京卻大受歡迎-將別人創新引進自己組織時,一定要再脈絡化,而不是削足適履,將創新模式生搬硬套,而是在修訂創新內涵時,同時修訂既有做法不合理地方,並結合原有優勢,產生全新做法。
Thumbnail
This article explores how YouTube can be used to learn four popular methods in multi-criteria decision-making (MCDM): AHP, ANP, DEMATEL, and DANP. It
Thumbnail
二、「差異」的挑戰:重新定義女性主義立足點 三、真理與方法:邁向新典範
Thumbnail
◉寫在最前面: 之所以會想要翻譯這篇文章,是這禮拜張君玫老師的社會學理論課程就是上這一篇文章,而每堂課老師都有要求寫一篇課前memo。在寫memo的過程中,因為文章很好看,忍不住就把這篇文一起翻譯出來了。 ◉原文連結:https://www.jstor.org/stable/3175275
Thumbnail
中國的儒家傳統思想提倡尊長,認為年紀大的人,閱歷豐富,比起年少輕狂的我們,更有對人生的智慧。好萊塢教父的故事卻不是這樣,一位是退休的好萊塢演員,一位是盛名一時的王牌經紀人,兩個年過半百的老人,卻仍然對人生感到一頭霧水。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
default methods 似乎也引起不小的討論,因為 default methods 加上可以實作多個介面,已經有點像 C++ 的多重繼承了,只差在沒辦法繼承成員變數而已,是好是壞就看怎麼使用了。我個人覺得還蠻方便的
Thumbnail
在 Vue 中,methods和computed是用於定義元件的行為和計算屬性。本文將介紹methods和computed屬性的使用方法和區別,並通過實際範例來幫助你理解。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們列出所有體重>100公斤的動物的名字,並且必須依照體重weight作降序排列。 題目的原文敘述 測試範例 Example 1: Input: DataFrame animals: +----------+-
Thumbnail
方法確效,如其名,就是確認方法是否符合預期的使用目的。詳見 ICH Q2 (R1) 或分析確效作業指導手冊 (fda.gov.tw)
*刻意練習from啾啾鞋:沒天賦也能成為高手 *18則有趣管理定律-酒與污水/木桶定律 *為何disney在巴黎瀕臨破產在東京卻大受歡迎-將別人創新引進自己組織時,一定要再脈絡化,而不是削足適履,將創新模式生搬硬套,而是在修訂創新內涵時,同時修訂既有做法不合理地方,並結合原有優勢,產生全新做法。
Thumbnail
This article explores how YouTube can be used to learn four popular methods in multi-criteria decision-making (MCDM): AHP, ANP, DEMATEL, and DANP. It
Thumbnail
二、「差異」的挑戰:重新定義女性主義立足點 三、真理與方法:邁向新典範
Thumbnail
◉寫在最前面: 之所以會想要翻譯這篇文章,是這禮拜張君玫老師的社會學理論課程就是上這一篇文章,而每堂課老師都有要求寫一篇課前memo。在寫memo的過程中,因為文章很好看,忍不住就把這篇文一起翻譯出來了。 ◉原文連結:https://www.jstor.org/stable/3175275
Thumbnail
中國的儒家傳統思想提倡尊長,認為年紀大的人,閱歷豐富,比起年少輕狂的我們,更有對人生的智慧。好萊塢教父的故事卻不是這樣,一位是退休的好萊塢演員,一位是盛名一時的王牌經紀人,兩個年過半百的老人,卻仍然對人生感到一頭霧水。