好些人刚开始碰橙光制作器,一看到“人物属性字符串”这六个字就犯怵,其实这东西说白了就是把角色的各项数据装进一个像包裹一样的数组里,让游戏随时能调出来用。我一开始也绕晕了,后来摸索通了发现就那几件事。
先说你得明白什么叫字符串。在橙光里,字符串就是一段被引号包起来的文字,跟数字不一样。但人物属性偏偏有数字也有文字,这时候就得用分隔符把不同属性隔开,塞进同一个变量里。最常用的分隔符是逗号,也有人用斜杠或者竖线,反正你别跟属性值撞车就行。
举个例子吧。你的女主角有五个属性:体力、智慧、魅力、道德、金钱。你就可以这么写:
`$nvsheng = "100,80,90,70,500"`
这就是最基础的人物属性字符串。注意前面的$符号,在橙光脚本里这个是变量声明,后面游戏里随时可以改。读取的时候也简单,用split函数按逗号劈开:

`$tili = split($nvsheng, ",")[0]`
这么一行就能把体力值单独拿出来用了。split意思是分割,后面的[0]代表取分割后的第一块,记得是从0开始数的,第二个属性就要写[1],顺次往后排。
不过光会存还不够,你得让游戏里能改数值。比如剧情里女主角救了个小孩,道德加十点,写起来就是:
`$daode = int($nvsheng[3]) + 10`
这里面的int是把字符串转成数字,不加它直接算会得出奇怪的结果,字符串拼接和数字加法在橙光里完全两码事,新手十有八九栽在这儿。
保存的时候千万别忘了把新数值更新回原字符串。我有次没更新,结果游戏里角色怎么逛事件属性都不变,后来才发现自己改的是临时变量,原串根本没动。折腾了俩钟头就为这一行代码。
再往深了说,字符串的好处不止存档方便。你要是做多角色游戏,用字符串套字符串能省不少事。比如弄个全局变量存所有角色的数据:
`$allRole = "女一号#100,80,90,70,500|男一号#120,60,85,65,800"`
这里#后面算一个角色的数据包,|是角色间的分隔符。调取的时候先按|切出单个角色,再按#切开身份和数据,最后按逗号切属性。三层嵌套也不复杂,就是一层层剥洋葱的感觉。
还有种情况是属性本身带文字,比如称号、门派、亲密度描述。那字符串里就用引号包着,跟其他属性用分号隔开:
`$roleInfo = "青莲剑仙;东荒剑门;990;好感度:死生相托"`
这种写法适合做修仙或武侠题材。往后剧情判断的时候用indexOf搜一下就能触发特定事件,比写一堆if判断省力。
实战里最烦人的坑是你得保证每个属性在字符串里的位置永远固定。我那时候犯过傻,中途试过在中间加个新属性,导致后面所有取值序列全部错位。所以要么一开始就规划好所有属性,最多留一两个空格位以后备用,要么干脆用键值对格式。
键值对格式长这样:
`$role = "tili:100,zhihui:80,meili:90"`
读取的时候就不靠位置了,而是靠key名字。需要智力就写先split逗号,出来一组“zhihui:80”这样的片段,再按冒号分割取右边部分。这种写法的好处是哪怕属性顺序变了也不影响取用,坏处是处理起来稍微麻烦,要写个小的调用函数,橙光里能定义函数吗?能,用function关键字,但语法挺古早的,要多试几遍。
最后说一句,字符串别舍不得用。存读档的时候,系统一般只帮你存普通变量,数组有时候读档会丢,字符串就没这个毛病。你把重要信息全拼成字符串,存成全局变量,就很少出错。我做的几个作品都靠这个办法顶住存档压力,读者反馈没掉过档。
写代码这事最怕闭门造车,多看看别人作品里公开的脚本模块,有时候你想破头的难题,人家一行函数就解决了。橙光官方帮助文档里字符串相关的内容其实写得很细,就是藏得深,搜索时搜“变量处理”比搜“字符串”出来的东西要多。别怕试错,写坏了顶多重来,反正咱们做游戏的人,最不缺的就是从头再来的耐心。