GameMaker|Instance 實體|程式基礎

更新於 2024/08/11閱讀時間約 4 分鐘

這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。有了這些概念,各位會更容易理解,要如何設計程式碼。

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

raw-image


前置知識


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


Instance的簡介


當GameMaker在遊戲中,生成物體時,會利用物件(Object)裡面的設定,「複製」出一個相對應的實體(Instance),接著展示在畫面中。

換句話說,我們所看到的物體,全部皆為實體,而不是物件,物件只是這些實體的「範本」而已。

也因為物件只是範本,因此實際上,我們可以利用同一個物件,生成很多個「相同功能」的實體,例如:牆壁、地板、敵人。


另外,每個實體也都會有自己的參數,包括「自訂參數」和「內建參數」。即便是相同物件的實體,他們之間也能有不一樣的數值設定。

例如:用同個物件,所產生出來的敵人,他們能有不一樣的XY座標,也能擁有不一樣的HP(生命值)。


ID


為了辨別這些實體,GameMaker會給所有實體,一個專屬的ID,只要利用這個ID,我們就能準確的,去控制我們想要操控的實體。

這組ID是GameMaker自動生成的,一般我們不會記錄這串文字,如果要使用的話,通常會把它存到「變數」裡面,再拿這個變數,來進行邏輯運算。

//這樣就能把id,存放到​inst_id裡面
inst_id = id ;

當然,也不是所有情況,都需要把這個ID,存放到變數裡面,例如:想要改變實體的座標,可以這樣子做:

//將實體的座標設定成(10,10)​
id.x = 10 ;
id.y = 10 ;


物件改變會影響實體


在幼幼班的內容裡,我們是透過「改變物件的座標」,來讓方塊產生移動的,但這個方法,只適用於「一個」方塊的情況下。

因為只要改變物件的參數,那麼,「所有」相同物件的「實體」,就會一起改變參數。

狀況就像下面的這張GIF:

所有實體會一起改變座標

所有實體會一起改變座標


上面這個範例,所使用的程式碼,是長這個樣子:

//如果滑鼠的左鍵點下
if mouse_check_button_pressed(mb_left)
{
//如果滑鼠的座標,有和obj_block碰撞(有點擊到方塊的意思)
if position_meeting( mouse_x , mouse_y , obj_block )
{
//隨機改變obj_block的XY座標
randomise() ;
block_x = irandom_range( 0 , room_width - sprite_get_width(0)) ;
block_y = irandom_range( 0 , room_height - sprite_get_height(0)) ;
obj_block.x = block_x ;
obj_block.y = block_y ;
}
}


如果,我們希望兩個實體,能夠個別偵測,各自執行改變座標的功能,那要做的事情也很簡單,我們只要把obj_block的參數,全部換成id即可。

當我們點擊紅色方塊的實體時,這個id會自動帶入,紅色方塊實體的ID,藍色方塊也是如此。

改變後的程式碼如下:

//如果滑鼠的左鍵點下
if mouse_check_button_pressed(mb_left)
{
//如果滑鼠的座標,有和實體碰撞(有點擊到方塊的意思)
if position_meeting( mouse_x , mouse_y , id )
{
//隨機改變實體的XY座標
randomise() ;
block_x = irandom_range( 0 , room_width - sprite_get_width(0) ) ;
block_y = irandom_range( 0 , room_height - sprite_get_height(0) ) ;
id.x = block_x ;
id.y = block_y ;
}
}


改良之後,方塊們就能各自點擊,而不是一起變化了:

正常的點方塊遊戲

正常的點方塊遊戲




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


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

免費、開心、簡單,這是我做教學的理念,我希望透過我的行動,讓人們找回自我學習的快樂,讓那些資源稀少的自學者們,也能朝著自己的夢想來前進。讓我們一起開心的做出遊戲吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
這篇內容,將透過實戰教學,介紹GameMaker中的Event。包括Event的簡介、Create的講解、Step的講解、Events的基本操作。
這篇內容,將透過實戰教學,介紹GameMaker中的Camera。包括Camera的簡介、設定Camera的方法、Viewport的介紹。
這篇內容,將透過實戰教學,介紹GameMaker中的Room。包括Room的簡介、調整寬高、圖層功能的概述、用Object來建立實體。
這篇內容,將透過實戰教學,介紹GameMaker中的Object。包括如何建立新的Object、Object和Sprite的關係、設定Sprite參數。
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
這篇內容,將透過實戰教學,介紹GameMaker中的Event。包括Event的簡介、Create的講解、Step的講解、Events的基本操作。
這篇內容,將透過實戰教學,介紹GameMaker中的Camera。包括Camera的簡介、設定Camera的方法、Viewport的介紹。
這篇內容,將透過實戰教學,介紹GameMaker中的Room。包括Room的簡介、調整寬高、圖層功能的概述、用Object來建立實體。
這篇內容,將透過實戰教學,介紹GameMaker中的Object。包括如何建立新的Object、Object和Sprite的關係、設定Sprite參數。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
※ Object(物件) & Constructor Function(建構式函式) Object(物件)是什麼? 物件是一種「可以將資料、程式碼包含在其中」的資料結構。 Object(物件)的兩種創造方式: 匿名物件:直接使用"{}"。沒有特別的名字,直接從Object中繼承過來的一個物件
Thumbnail
剛剛調了第一層Rendering Mode渲染模式的參數 進入第二層#Opaque渲染參數介紹 搭配教材一起做好ㄌ,先下載檔案樹葉葉葉🌿🌿🌿 解壓縮後把他拖移進去ASSET裡面 點開剛剛LeafPack,找到Mesh>選擇FBX>找到後拖曳到遊戲編輯畫面 部份模型( Fbx&
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
※ Object(物件) & Constructor Function(建構式函式) Object(物件)是什麼? 物件是一種「可以將資料、程式碼包含在其中」的資料結構。 Object(物件)的兩種創造方式: 匿名物件:直接使用"{}"。沒有特別的名字,直接從Object中繼承過來的一個物件
Thumbnail
剛剛調了第一層Rendering Mode渲染模式的參數 進入第二層#Opaque渲染參數介紹 搭配教材一起做好ㄌ,先下載檔案樹葉葉葉🌿🌿🌿 解壓縮後把他拖移進去ASSET裡面 點開剛剛LeafPack,找到Mesh>選擇FBX>找到後拖曳到遊戲編輯畫面 部份模型( Fbx&
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝