【攻略】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
返回顶部