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,是屬於全域變數。




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


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

免費、開心、簡單,這是我做教學的理念,我希望透過我的行動,讓人們找回自我學習的快樂,讓那些資源稀少的自學者們,也能朝著自己的夢想來前進。讓我們一起開心的做出遊戲吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
這篇內容,將透過實戰教學,介紹GameMaker中的Event。包括Event的簡介、Create的講解、Step的講解、Events的基本操作。
這篇內容,將透過實戰教學,介紹GameMaker中的Camera。包括Camera的簡介、設定Camera的方法、Viewport的介紹。
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
這篇內容,將透過實戰教學,介紹GameMaker中的Event。包括Event的簡介、Create的講解、Step的講解、Events的基本操作。
這篇內容,將透過實戰教學,介紹GameMaker中的Camera。包括Camera的簡介、設定Camera的方法、Viewport的介紹。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
這篇內容,將透過實戰教學,介紹GameMaker中的Event。包括Event的簡介、Create的講解、Step的講解、Events的基本操作。
Thumbnail
這篇內容,將透過實戰教學,介紹GameMaker中的Room。包括Room的簡介、調整寬高、圖層功能的概述、用Object來建立實體。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
就是指變數可以被訪問和使用的範圍,來說一下var、let和const的作用域差異。 var :function example() { console.log(x); // 輸出: undefined 因為變量提升造成的 var x = 5; } 函數作用域或全域作用域 可以重複宣告
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
這篇內容,將透過實戰教學,介紹GameMaker中的Event。包括Event的簡介、Create的講解、Step的講解、Events的基本操作。
Thumbnail
這篇內容,將透過實戰教學,介紹GameMaker中的Room。包括Room的簡介、調整寬高、圖層功能的概述、用Object來建立實體。
Thumbnail
這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
Thumbnail
這篇內容,將教你如何開啟新的GameMaker專案,並調整畫面佈局。也會講解,為何建議用英文語系,來進行遊戲開發。
就是指變數可以被訪問和使用的範圍,來說一下var、let和const的作用域差異。 var :function example() { console.log(x); // 輸出: undefined 因為變量提升造成的 var x = 5; } 函數作用域或全域作用域 可以重複宣告
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。