极速入门Gamemaker编程语言

极速入门Gamemaker编程语言

开篇废话

这文档适合已经会使用其他编程语言(C#、C\C++、java、python等)的游戏开发爱好者学习 (逛CSDN怎么会有不会编程的人呢) ,如果不会其他语言也可以看个大概,毕竟字不多,已经入门 GML 的新人也可以看看这个文档,或许能发现一些有趣的东西。

不建议元老巨佬等详细研究此文档,可能会看成《GML 急速出门》。

这份文档主要基于 GM 8.0,理论上大部分适用于GMS、GMS2,还请GMS、GMS2用户以实践为准。

文档写的略急促,如果发现有问题或讲错了敬请指出。

如果这文档反响不错,我打算完善好这个《GML极速入门》后再写些其他的极速入门系列,例如《Unity 急速转战 GM》或者反过来转。

作者联系方式:QQ 2293840045

目录

GM软件的基本の基本

软件的左边一列(GMS2默认在右边)的文件夹是游戏的资源,例如游戏的图片(sprites)、声音(Sounds)、脚本(Scripts)等,把准备好的素材导入到这里即可。

每一项资源可以再细分文件夹,这点随开发者喜好随意整就行。

资源经常要在代码中调用,所以资源的名称要符合标识符命名规则(例如数字不能开头不能包含特殊符号等)。

初学 GML 的时候可以建立一个游戏物体,添加 create (创建)事件,在这里面写代码(GM8和GMS要在右边找到代码小方块,拖到左边空白区域才行),然后创建一个房间,把这个物体放到房间里面。

觉得上面那个麻烦也可以新建房间,然后进房间设置,有个“房间创建代码”的按钮点开可以写代码,这里就像程序的 main 方法一样,一运行就执行。

GM中的面向对象

上面介绍的资源中,有一个 Objects ( GMS2 中文翻译可能叫“物体”)最为重要。

Object 可以直接理解为其他语言的 class ,而游戏中每生成一个物体,就是 new 了一次这个 class 的实例。

继承

GML 没有封装和多态(也可以说到处都是多态),但可以使用继承,在 object 物体编辑的面板上指定父物体即可。

这里的继承父物体是 class 继承父类的意思,而不是 Unity 中的物体父子级关系。

要注意,GML的继承和传统继承区别很大。

继承可以使子物体拥有父物体的变量,可以使子物体没有实现的事件由父物体实现。

很特殊的一点,传统的继承中,每 new 一个子类都会产生一个父类,而GM当中的父类可以永远不被实例化,但这并不影响子类继承父类成员。

重写

例如父物体在 step 事件中有x += 1代码,他的子物体如果没有自己的 step 事件,则这个子物体也会在 step 事件触发时运行x += 1

但如果这个子物体存在自己的 step 事件,则不会再运行x += 1了,如果想运行子物体的某个事件后(或前)再运行父物体的相同事件,则可以在子物体中需要运行父物体事件的位置调用event_inherited()方法,就等同于 java 的super.xxx()或者 C# 的 base.xxx()

即便子物体的 step 事件代码为一行注释,那么它也算作“子物体存在自己的 step 事件”。

至于为什么是一行注释而不是空代码呢,因为GM会自动删除没有代码(或注释)的事件,所以如果想“顶掉”父物体事件,写一行注释即可 //

基本的语法

GML的基础语法和C\C++、C#、Java这类语言极度相似,且作为一个专为游戏而生的语言,有相当多的特性用起来非常简单、舒服。

GML语言使用花括号{}表示代码块,语句结尾可以加分号;表示结束也可以直接换行。

和大部分语言一样使用点.引用成员,例如Player.hp=0就可以干掉玩家。

变量

GML是弱类型的语言,就是说使用变量无需指定数据类

  • 23
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值