《GML语言教程(中文版)》由会员分享,可在线阅读,更多相关《GML语言教程(中文版)(21页珍藏版)》请在金锄头文库上搜索。
1、目录GML语言概述5一个程序5变量6赋值语句6表达式6扩展变量7在其他对象中定位变量8数组10If语句10Repeat语句11While语句11Do语句11For语句12Switch语句12Break语句13Continue语句13Exit语句14函数14脚本14With结构15注释16GML中的函数与变量16数学运算单元16常数16实数函数16字符串处理函数18日期及时间处理19游戏运行20移动21路径22运动设计23碰撞检测26实例27解散实例28定时29房间30房间过渡31分数32产生事件33复杂的变量和函数36用户互动37键盘37鼠标40手柄40游戏绘制41精灵和图片41背景42绘制精
2、灵和背景43绘制形状45字体和文本47高级绘图函数48绘制表面51贴图53显示55窗口55视角58重绘屏幕59声音与音乐60基本声音函数61声音效果623D音效63CD音乐64信息窗口,最高分,以及弹出式窗口65溅射屏幕65弹出信息和询问框67最高分列表68资源69精灵69声音70背景70字体70路径71脚本71时间线72对象72房间72改变资源72精灵73声音74背景75字体76路径76脚本77时间线77对象77房间78文件、注册和执行方式79文件79注册82INI文件83执行程序83数据结构84堆栈85队列85列表86配对87优化队列87栅格88创建粒子90简单效果90粒子类型91粒子系统
3、94发射器95吸引器96破坏器97偏转器97转换器98烟火例子99多人游戏100创建连接100创建和加入联机102玩家102共享数据103消息1033D绘制104进入3D模式105简单绘制105绘制3D多边形106绘制基本形状107世界视角108转变110雾111灯光112创建模型113结束语114附录:使用DLL115Game Maker 语言 (GML)Game Maker内置一款编程语言。这个编程语言给你常规动作之外更多的自由度和控制力。这个语言我们把它简称为 GML (Game Maker Language)。在这一章我们会向你详细介绍有关GML的使用方法,提供一个系统提供的所有函数(
4、接近1000个)和变量来控制你的游戏中所有方面.1.GML语言概述Game Maker内置一款编程语言。让你在标准动作之外获得更多的自由度和控制力。这个语言我们简称它为 GML (Game Maker Language)。你可以在很多地方用这个语言编写代码。首先,当你定义脚本的时候。脚本就是一份GML程序。其次,当你在一个事件中添加新动作时。在编写代码动作时你也同样可以使用GML。第三,如果你想在一个动作中使用指定的一个值,你同样可以使用GML来表达。一段语句如下所说,并不是完整的程序,只是计算出结果的一段代码。 在本章中我们将向你描述GML的基本概念。当你希望学习使用GML时,这里有一些东西
5、你需要留意。首先,你的所有资源(精灵、对象、声音、等等)你必须使用一个以字母开头,全部由字母、数字或下划线组成的名称。不然的话你将无法在程序中正确的调用他们。确保所有资源都有不同的名字。同时也要注意不要将资源取名为 self、global或者其他保留字,因为这些字符在GML中有特殊含义(具体有哪些保留字将在后面详细论述). 一个程序 一个程序包括一套完整的指令,称为语句。一个程序必须以 开头,以 结尾。之间是 语句文本。每行语句必须以; 分号结尾。所以语句的通常形式应该是这样的 : ; ; .语句的样式可以有很多种,将在以下各章节论述 .变量 和其他语言一样,GML中也有变量。变量是存储信息的
6、一段内存空间。他们各有不同的名字 以便于你去调用他们。GML中的一个变量既可以存储一个真实数字,也可以存储一个字符串。 变量并不需要像其他语言一样需要预先声明。这里有大量内置的变量类型。一些相当常见比 如 mouse_x 和 mouse_y 定义鼠标当前位置。其他一些则定义我们扩展程序时使用的当前对 象例程。比如 x 和 y 定义当前例程的位置。一个变量的名称必须以字母打头,由字母、 数字或下划线组成(最长不超过64个字符)。当你在当前例程中使用新的变量时,在其他例 程的程序中是不可见的(即使是同一个对象的不同例程)。你仍然可以通过某种方法调用其 他例程里的变量,接着往下看.赋值语句 一段赋值
7、语句将一个值放入一个变量。形式如下 : = ;一个表达式可以是一个简单的数值,也可以是复杂的运算式。除了向一个变量赋值以外,同 样可以在当前变量值的基础上再次赋值,使用 +=的格式。当然,还有 -=,*= /= 或者更 加复杂的格式如 |=、&、=. 表达式表达式可以是数字(比如:4、3、5、6、等等),十六进制数字,或者是 $ 打头的标签( 比如 $00FFAA),单引号或双引号括起来的字符串(比如Hello或hello)或者其他更复 杂的表达式。表达式中有下列双标识符(优先度较高 ): & | : 组合是否值 (& = 和, | = 或, = 异或) =: 比较,结果为 true (1)
8、or false (0) | & : 二进制计算 (| = 二进制或, & = 二进制并, = 二进制异或) : 二进制加减 ( = shift right) + -: 加减 * / div mod: 乘,除,整除,取模 要注意,x div y 的值是 x/y 后的结果中跟0最接近的整数值。 mod 操作符返回调用者的 运算域。也就是说,x mod y = x - (x div y) * y。同时还有以下几个运算符 : !: 否, true 转换为 false 和 false 转换为 true -: 否定后面的数值 : 否定后面的数值进行二进制位取反(1变0,0变1) 数值中你可以使用数字、变
9、量、或者返回一个值的函数。 子程序可以在括号内书写。所有运算符都是为真实存在的值工作的。比较运算符同样可以对 字符串进行操作, + 可以连接字符串(在这里要注意,和其他语言不同,相加时参数和布 尔变量总是会被计算,即使第一个参数已经决定了结果)。 举例 一个使用子程序的例子. x = 23; color = $FFAA00; str = hello world; y += 5; x *= y; x = y 2; x = 23*(2+4) / sin(y); str = hello + world; b = (x 5) & !(x=2 | x=4);扩展变量 你通过对一个变量赋值来创建新的变量(
10、不需要事先进行声明)。如果你只是使用一个变量 的名称,它只会存储当前对象例程的内容。所以不用担心它会包含其他对象的内容(或者同 一对象的另一个例程)。你可以在另一个对象中设置和读取变量,通过在变量名前面添加对 象名称和一个句点.。 . 要创建一个全局变量,就是全部对象例程都可以调用的变量,使用global.变量名的格式。 以下是一个示例: if (global.doit) / do something global.doit = false; 或者你能声明全局变量,形式如下. globalvar , . ;一旦这样的声明被执行, 变量将一直是全局形式不需要再加全局变量前缀“global.”了. 而这仅仅只需要声明的代码块已被执行. 之后其他地方的这些变量就都会成为全局的. 有些时候你希望变量只在当前的代码段或者语句中使用。这种时候你必须避免浪费内存,并且确信这些变量名称不会带来混淆。同时这种变量也比全局变量速度更快。要使用这种变量 你必须在变量名前加入保留字 var和一个空格。这种声明看起来应该是这样的. var , . ;程序示例: