GameMaker|Variable Scope 變數範圍|程式基礎

更新於 發佈於 閱讀時間約 4 分鐘

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

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

raw-image


前置知識


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


Variable Scope的簡介


在變數的說明中,我們知道了變數有自己的作用區域,也理解了,不同區域的變數,能有相同的名稱。

因此,在GameMaker當中,變數能依照作用區域的不同,細分成不同作用域的變數。

接下來,我們將解釋,不同作用域的變數,他們各自的特性,以及適合他們的應用場景。


Instance Variable 實體變數


只能在實體範圍內使用的,稱之為實體變數,而這些變數,會在物件(Object)上面使用。你可能會有疑問,為何在物件上使用,卻被稱為實體變數呢?

在講解實體的教學中,我們已經知道,畫面中的所有物體,都是實體。而物件裡的所有設定,都只是用來複製的範本。

因此,在物件裡面的變數,最終都是給實體們做使用,所以才會稱呼為實體變數。


上面我們說到,實體變數的使用範圍,是在物件裡面,這包括了物件裡面的所有事件(Event)。

舉例來說,我們在Create的事件裡,建立了實體變數,那麼在Step的事件裡,就能使用這個變數,來進行邏輯運算,或是重新的賦值。


在不同的物件上面,能有相同名稱的實體變數,但他們會是相互獨立的,並且能各自擁有自己的數值。上述這點,已經有在變數的教學中舉例過,這裡就不再重複舉例。

另外,用同一個物件,所產生的不同實體,他們之間的實體變數,也是相互獨立的。關於這點的解釋,已經有在實體的教學中說明過,如果忘記了,可以回去參考。


Global Variable 全域變數


只要定義之後,整個遊戲專案,都能夠讀取和使用的變數。全域變數能在任何可以寫程式的地方,來進行賦值設定。

全域變數並不會像實體變數那樣,有名稱重複的狀況。只要有任何一個物件(或程式碼),對全域變數進行賦值,那其他地方讀取到的數值,就會跟著一起改變。


這邊舉個簡單的例子:

假設我們想設計一款,多人派對遊戲,所有的玩家,將會共用一條HP(生命值)。只要有玩家受到傷害,HP就會減少,此時我們就能把HP,設定成全域變數。

//將hp設定成全域變數
global.hp = 100 ;
全域變數的設定方法

全域變數的設定方法


在設計全域變數的時候,常常會搭配Script Function的功能來使用,我們能利用這個功能,來幫我們的全域變數,進行初始化的設定。

關於Script Function的用途,可以參考這篇教學:

GameMaker|Script Function 腳本函式|程式基礎


Local Variable 局部變數


上面我們所提到的實體變數和全域變數,他們有個特點,就是建立完之後,這個變數就會存放到記憶體裡面,等到要使用時,再從記憶體中取出。

而局部變數的特色,在於執行完特定的事件或函式之後,就會從記憶體中被刪除。也因為這種特色,局部變數通常被用在「用完一次就可以扔掉」的參數上。


局部變數的應用場景,通常都比較複雜,這邊我給不出什麼簡單的範例,因此,我只能告訴各位,要如何設定局部變數。

未來如果在實戰範例中,有使用到局部變數,會再跟各位解釋,為什麼要在那個範例中,使用局部變數。

那麼,以下是局部變數的設定方法:

//將hp設定成局部變數
var hp = 100 ;
局部變數的設定方法

局部變數的設定方法


【更新】關於局部變數的用法,可以參考Script Function的教學,裡面有講解到局部變數的應用:

GameMaker|Script Function 腳本函式|程式基礎


Constant 常數


常數是一種特殊的變數,會在遊戲一開始的時候設定一次,接著就永遠不能再改變他。

常數通常會用來存放,一些特殊的數值,以便我們能在遊戲中進行讀取(只能讀取,不能進行賦值的動作)。

在GameMaker當中,我們不能使用自訂的常數,但我們可以用Macro或Enum,來達成常數的效果。


關於常數的說明,我暫時只能提供到這裡,因為我還不熟悉,Macro和Enum的功能,也還不清楚要如何去應用他們。

未來如果我有使用到,也覺得他們很有用,那麼,我會再找個時間,補上相關的應用說明。


Built-in Variable 內建變數


在變數的教學中,我們已經有提到了內建變數,這邊只是要補充說明,內建變數也是有分不同的作用區域。

例如:x、y、speed,是屬於實體變數;fps、game_project_name,是屬於全域變數。




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


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

留言
avatar-img
留言分享你的想法!
avatar-img
開心做遊戲 Happy Making Game
11會員
68內容數
免費、開心、簡單,這是我做教學的理念,我希望透過我的行動,讓人們找回自我學習的快樂,讓那些資源稀少的自學者們,也能朝著自己的夢想來前進。讓我們一起開心的做出遊戲吧!
2024/08/12
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
2024/08/12
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「repeat迴圈」,以及與「repeat迴圈」相關的知識。包括repeat迴圈的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「repeat迴圈」,以及與「repeat迴圈」相關的知識。包括repeat迴圈的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
2024/08/11
這篇內容,將會講解什麼是「do until」,以及與「do until」相關的知識。包括do until的簡介、break、continue。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
Thumbnail
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
Thumbnail
  程式中很常會看到千奇百怪的運算式,這些運算式都隱藏著各種運算元和運算子,這些是什麼呢?讓我們來一探究竟。   運算元是指變數、常數這類(如:A、B、C、Data、123等),運算子是指運算符號(如:+、-、*、/、%、==、<、&&等這類型),這邊就要介紹C#的運算子以及怎麼使用。
Thumbnail
  程式中很常會看到千奇百怪的運算式,這些運算式都隱藏著各種運算元和運算子,這些是什麼呢?讓我們來一探究竟。   運算元是指變數、常數這類(如:A、B、C、Data、123等),運算子是指運算符號(如:+、-、*、/、%、==、<、&&等這類型),這邊就要介紹C#的運算子以及怎麼使用。
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
Thumbnail
這次分享的是常數、變數、宣告與初始化。 [常數]就是固定不變的數,如:PI=3.14 [變數]顧名思義就是會改變的數,如:y=2x (在數學中x確定後y才會確定,因此x為自變數,y為應變數,x、y都屬於變數) 一、常數   常數在定義的時候,一開始就必須指定好資料型別並且給予值,因為它在整個程式在執
Thumbnail
說明 重點 △定義變數 △文字的定義 △文字與數字的差別 △整數與浮點數 △signed(有號)與unsigned(無號)的區別 △e是什麼符號? 分類 △字元 △字串 △短整數 △整數 △長整數 △超長整數 △單精度浮點數 △雙精度浮點數 △長雙精度浮點數 應用 宣告與輸出 運算符 結論
Thumbnail
說明 重點 △定義變數 △文字的定義 △文字與數字的差別 △整數與浮點數 △signed(有號)與unsigned(無號)的區別 △e是什麼符號? 分類 △字元 △字串 △短整數 △整數 △長整數 △超長整數 △單精度浮點數 △雙精度浮點數 △長雙精度浮點數 應用 宣告與輸出 運算符 結論
Thumbnail
這篇文章為介紹C#基礎知識的一部分,如果你是直接開始寫程式的C#程式員,可以看看這篇文章補足一些基礎知識。
Thumbnail
這篇文章為介紹C#基礎知識的一部分,如果你是直接開始寫程式的C#程式員,可以看看這篇文章補足一些基礎知識。
Thumbnail
指標(Pointer)、參考(reference)
Thumbnail
指標(Pointer)、參考(reference)
Thumbnail
變數(variable)、型別(type)、初始化(initialize)、宣告
Thumbnail
變數(variable)、型別(type)、初始化(initialize)、宣告
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News