新手提问:
gamemaker吧
全部回复
仅看楼主
level 2
Frick♬ 楼主
1.GMS2如何读取hjson文件并转为结构体
2.GMS2如何调用文件打开系统(最好多平台支持)
[泪]新手懂得太少了,什么都不会
2025年05月12日 14点05分 1
level 1
新手为什么会需要这些?
2025年05月12日 23点05分 2
level 1
好吧,没有回应。
首先json文件在gamemaker中并不算是新手该碰的,因为在碰之前你必须得学习"文件系统、数组、结构体"
而"字符串"这个你有很大概率会用到(有些时候可能需要通过删减字符串来创建一个可用的新的结构体什么的)所以也得学习相关函数。
而你需要将json文件内的所有数据都保存在一个变量当中,也就是将其删除回车,从多行变成一行,我们一般是直接用string+string的格式。
然后大多数人都用的是For循环,但是如果是文件读取的话,每个文件内的行数量是不同的,所以你还得学习一些关于其他的循环函数,比如do循环。
当然,你可能需要知道break或者其他关于循环的终止、停止函数用法,虽然大多数读取json时用不到。
2025年05月13日 00点05分 3
文件导入问题我差不多懂了,现在我的问题就是我想导入的文件是一个hjson,但是GMS2貌似无法直接转换为结构
2025年05月13日 12点05分
@Frick♬ 我并不知道hjson格式与json有什么不同,因为我没使用过。 但是由于json导入至GMS中是用字符串导入的,所以我们可以试着将其他类型文件在读取时转成那样的格式,这样不管是什么文件都能变成数据结构体。 当然,如果hjson与json格式一样的话那就没有必要,只需要正常的创建脚本让其整个文件都读取在一个变量当中,然后用GMS内置函数转换成结构体
2025年05月13日 13点05分
@Frick♬ 如果要导入的文件满足hjson框架,建议先转换为json(甚至更加严格的格式),因为源数据格式越“非严格”,数据使用越困难。但如果这个hjson只是借个名字而并不符合这个类型的格式要求,那不光GMS2无法载入,连转换都是问题。
2025年05月15日 00点05分
@q糖豆p 这里就是我说可能需要string代码的部分了,因为GMS是通过一整串string来导入的,如果知道含义,那么可以在读取中一行一行改变读取的文本,然后使其看上去是json的格式(当然,会有些许麻烦),这种方式可以试着写个自己自定义格式的文件(闲着没事确实可以试试) 对了bor,hjson是什么啊,没怎么听过啊()
2025年05月15日 00点05分
level 1
然后调用文件打开系统...抱歉,有些不明白是什么意思?
2025年05月13日 00点05分 4
吧务
level 13
说起来,json和文件使用对于“新手”来说都有些超纲
==============================
json结构很,嗯,自由。咱更倾向于把数据转换成更规整的格式来使用,“把数据从自由格式转换到规整/紧凑格式”在咱的规划里是属于游戏制作过程的,不是游戏运行过程的。
如果题主和咱一样也会拿GM去做一些简易工具,而且现在正在尝试打开/解读json的话。咱之前用过的方法是把json当成文本来读取,然后根据回车、冒号、花括号等结构来拆解内容。至于已有函数/插件,咱没有尝试过,不保证实际效果。
==============================
“文件打开系统”有点不明所以,可能涉及这两个方面:
GM自带了2个函数调用windows/MAC的文件选择界面来进行选定(并返回给GM),两个函数分别用来打开/保存,但这只是负责选定文件(或者指定新文件名),并不负责实际的打开/保存动作,设计成两个函数也只是保存的时候好像会问“是否覆盖”之类的。这个只适用于win/MAC,如果是其他平台的话要单做。如果遇到了安卓这种不同代访问不同文件夹需要索要不同权限的就会很麻烦。
知道文件名以后通常就可以打开(注意安卓权限、桌面平台沙盒之类的问题),至于文件打开并使用内容,咱知道的打开方式有以下几种:
0、标准的可载入为素材的文件,比如用sprite add来载入图片jpg png文件
1、用ini文件来保存一些简单设置
2、常规形式的文本文件读写
3、二进制文件读写
4、将文件(或一部分)载入到buffer
2025年05月13日 01点05分 5
1