level 13
智_囊_小_太
楼主
ini(我给他起了个非常文艺的名字叫旖旎)是比较简单易用的文本文件,通常用于离线保存一些数据之类的。关于ini的简单用法,这里小提两句:
关于ini的函数一共就10个,我们只说读取写入以及打开和关闭,一共是6个。
ini是个什么鬼嘞??
ini是一种文本格式,可用记事本来编辑,全称为
Initialization Files,即初始化文本文件。他可是软件运行的好帮手,我们运行的程序一些希望下次开启生效的设定,就是被存在ini里面的。
ini有如下格式及组成部分:

ini非常大的特色正如上图所示,其结构非常明晰,便于读取,这也正是适合新手使用的原因(至少TXT文件我现在还没读取明白呢)Section叫做节,一节内可以包含多个关键词,换句话说,节就是分类用的,但是,※节是必须的,没有节是不能有关键词的。
key叫做关键词,具有这种格式:
关键词=值
这种写法和变量赋值句很相似,但是,关键词并非变量,事实上,在整个ini中你也找不到所谓的变量,关键词我们可以理解为一个名签,或者,一个小抽屉。用来放各种存入的值,但是抽屉一多,就不知道哪个是哪个了,于是彼此之间要有一个名字,就是关键词啦
还有一个隐含结构是每行后面用分号(;)引领的部分,被称为ini的注释,注释符的作用域为分号处直至本行结尾处,ini只有行注释格式而没有块注释格式,当然,在GM的领域下,注释基本是用不到滴。
那么,我该如何在GameMaker里面使用ini嘞
GameMaker为我们提供了如下函数:
首先注意一点,你只能同时打开一个ini文件
ini_open(string:fname) 打开一个ini,这个函数在你需要读取ini之前是必用的,参数fname需为一个含文件后缀的文件名称字符串,
注意,ini文件必须和运行程序在同一目录下。官方文件中提到,当这个ini文件不存在时,会创建该名称的ini文件
ini_close() 关闭打开过的ini,此函数没有参数,会关闭当前的ini并保存。建议每次读取完写入完文件的时候茶余饭后老老少少都转(zhuǎi)一句,不使用这个语句不会报错,而在你不开ini的情况下使用该语句也不会报错。
ini文件如果没close的情况下就退出程序连续两次,则期间这个文件发生的全部变动将无效。
下面两个为写入函数:
ini_wirte_real(string:section , string:key , real:value) 向当前文件中的section节里面的key关键词内写入一个实数数据。
ini_write_string(string:section , string:key , string:string)向当前文件中的section节里面的key关键词内写入一个字符串。
接下来是相关的读取函数:
ini_read_real(string:section,string:key,real:default)返回当前文件中section节里面key关键词内的内容,若关键词不存在,则返回default的实数数据。
ini_read_string(string;section,string:key,string:default)同上,读取的内容为字符串,default值也相应的为字符串。
这6个函数,基本就全覆盖了(还有四个是删除关键词和节的以及返回该节和关键词是否存在的,具体详见F1)
注意
(这也就是我要说的内容之二)
官方文档内提到ini_open函数在该文件不存在的情况下可以创建该文件。但事实上,当你使用这个文件并不写入任何内容就ini_close的话,这个文件仍然没被创建,即直至写入第一个值的时候,这个文件才被创建。