大家好 我是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物件),这样我们就可以在程式中使用这个装置方块的元素跟动作了。
非常感谢大家观看,这次的章节算难,所以请大家多看几遍喔嘿嘿。
然后这次好像没有问题能出了 : (
下一章: