【攻略】CSO lua零基礎小教室(四)淺談API

大家好 我是misk
上次教了大家表(table)的用法
照理來說,有了前三章的文章,您就能看懂API了
不過,我知道如果您從來沒碰過程序,絕對是看不太懂
就像是你會ABCDE到Z,但是如果拼在一起您就不會了
所以,這次除了跟大家說明API之外,還會講解數據型態
希望大家能學會。

另外,本人也不是什麼信息科的
所以有些部分如果有更詳細或錯誤的信息,還請您告知喔~
感恩!

如果還沒看過之前的文章,請前往:

淺談文件
1.project.json
簡單來說是將game.lua跟ui.lua包裝後運行的文件,你可能會問說:可不可以自己加入文件?
答案是可以的。
但我們目前不說明這個,應該說……我們也不太需要。
2.game.lua
這個文件主要是在管理:
遊戲規則
角色(玩家或怪物)
設備方塊
所以當您想到一個新想法時,卻對整體的程序架構還不熟悉,那就請您將這點記起來,方便您創建架構,寫出整齊的程序。
3.ui.lua
這個文件主要是在管理:
個人
屏幕介面
一樣,當你想了一個新想法,請將這點熟記。

運行方式
通常我們可以將game與ui的交互方式簡單的畫成一張圖。
沒錯,這樣的交互方式就很像是game.lua在發號施令,或是在控制遊戲,控制角色。而身為”角色”的玩家則是跟ui有關,例如按鍵盤這種”個人”的事情就是跟ui有關。
運行文件順序
如何測試優先順序?很簡單。
我們在game.lua中寫一行:print(“game”)
接著在ui.lua也寫一行:print(“UI”)
意思是說,如果程序跑到game,就會在上次說明的地方(在遊戲中按~就能看到)顯示”game”這句話,同樣的,如果程序跑到ui,就會印出”UI”這行字。
實現結果如下。
實驗結果顯示是先跑game.lua再跑ui.lua。
(此為順帶一提而已,對寫程序並沒什麼影響呵呵)

API說明
這邊再解釋一次API的意思,簡單來說就是遊戲跟程序之前交互的橋樑,例如說我們在編輯模式中,按下C鍵可以選擇您想創建的方塊,裝飾或設備方塊,而API就跟這些東西一樣,你可以選擇並使用,只是使用方式並不是創造槍,則是代碼。
接下來,請大家前往CSO API官網。
點進去後,請看左邊的Modules,我們目前只會說明game跟ui。
圖片紅框中的game跟ui就是它們的全部數據了,而下方有什麼Game.Entity、Game.Rule,這些都跟程序的"面向對象"有關,但是我們目前都會用"表"的方式讓大家盡量理解,其實意思很簡單,你可以想像成Game是一個箱子,裡面裝著Entity、Rule、Monster……等小箱子,而這些小箱子裡面又有很多的小小箱子……,等等會出現Game.EntityBlock當例子(就跟表的概念差不多)。
請注意:Modules中的UI只能在ui.lua中使用,而Game只能在Game.lua中使用。
例子:我們點擊Game.EntityBlock。
進去後你會看到4個新東西(小小箱子的分類),分別有Tables,Fields,Methods,Event Callback,這邊一一解釋。
Tables
意思是說這個下方的數據型態都是表(table),我們可以點Game.EntityBlock.position,它會導引你到這裡。
這邊它都會詳細解釋這個表之中的元素有哪些,例如這裡就表示這個表”Game.EntityBlock.position”中有三個,分別為x, y, z的元素。而括弧之中的int指的是整數,意思是說,你之後在使用或設置時,這些元素都要是整數,不然可能會無法運行。
Field
這個是程序中”面向對象”的東西,這邊您不需要太了解這個,因為這比較難,這邊用舉例的方式解說。
上方是用Game.EntityBlock做例子,你會問:這是什麼?
其實我們在遊戲中用的一個個設備方塊,都是個Game.EntityBlock,而這些設備方塊(Game.EntityBlock)其實可以說成是一個表(table)(目前先這樣解釋),而他們的元素呢,就是Field。
在例子中,Field有id、position、onoff,也就是說,您目前可以將Field當成是"表的元素"
Methods
這個一樣是面向對象的東西,這邊也一樣直接舉例。
在上方的例子,你會看到兩個東西,分別是
Game.EntityBlock:Create(position)
Game.EntityBlock:Event(arg, index)
沒錯,你只要看到()就表示這是一個函數,你可以使用Methods下方列出的函數,但這些不能重新聲明。
Event Callback
上方例子中有兩個函數,這些跟Methods不同的是:他們可以重新聲明。
也就是說,您可以在代碼中自己聲明您需要的函數內容,這就是跟Methods不同的地方。
以機器來做比較的話,Methods就是只能使用機器,而Event Callback就是你可以組裝機器,大約如此。

淺談面向對象
它跟表很像,所以我才想說先用表的方式讓大家理解,但畢竟這跟表不太一樣,所以還是稍微說明對象的原理。
剛剛提到Field跟Methods,而這些都跟面向對象有關,為了讓大家好懂一些,我用飲料機來說明。
飲料機為"對象"
Field就像是飲料機內的冰塊、可樂跟果汁(物品元素)
而Method就是倒出飲料機內的飲料(用函數做動作)

像剛剛的Game.EntityBlock例子中,我們可以使用Game.EntityBlock:Create(position)在程序中創建一個設備方塊(Game.EntityBlock對象),這樣我們就可以在程序中使用這個設備方塊的元素跟動作了。

非常感謝大家觀看,這次的章節算難,所以請大家多看幾遍喔嘿嘿。

然後這次好像沒有問題能出了 : (
本文來自網路,不代表3樓貓立場,轉載請註明出處:https://www.3loumao.org/5516.html?variant=zh-tw
返回頂部