🆙 你好,我是DorinXL,取自「荡影|

DorinXL

园龄:5年4个月粉丝:22关注:7

【Unity】Galgame视觉小说游戏 其脚本解释器的一种实现

【Unity】脚本解释器的一种实现

 

Galgame引擎/框架本身就是一个解释器,解释脚本读取配置文件,进行演出。

保存存档时要将当时脚本的运行状态保存下来,以便读档时继续执行,也就是脚本运行状态的序列化与反序列化。

——JomiXedYu http://www.imxqy.com/gamedev/unity/ugal.html#toc-8

 

前辈所言,我深以为然。

galgame的剧情,说白了就是指令操控内容。而这种文字游戏的卖点就是图像与剧情。程序显然写不出大量的剧情脚本,但是编剧也不一定会写程序。所以我决定将团队中编剧与程序彻底分离,让编剧只用excel表格就可以控制游戏流程。

这样做缺点也很明显,表格之间是不存在逻辑的。只能一行一行的取出数据,执行。

不过做一款视觉小说,这样的方法够用了,而且可以省下不少时间,规定一套逻辑执行语句也方便维护修改。

 

思路

大致来讲就是“制定规则——编剧写入excel——程序读取excel——执行”,很简单。

在这个基础上我们可以添加一些其他内容,比如目前我开发的流程为:

image-20210608202251817

我尝试写入excel一些数据,这个过程十分痛苦,就像便秘了好几天。而且会出现肉眼检查不到的错误。所以我写个小工具帮助编剧导入并保存数据到excel。

关于读取数据这部分,一开始我的选择是游戏运行时读excel,但是这样做感觉很累赘,不如直接写成json然后程序去读json来的快。

其实程序这方面还是有很多不足,软件的设计模式摸得不是很清楚,仍需努力(指先做出来再说)。

 

规则与小工具

image-20210608202651494

上面这张图是和编剧做好的指令规则约定以及这个小工具的界面,用选项可以帮助编剧不写入奇怪的符号或者不在范围内的规则。

因为是自己写的,所以后面制定新的规则或者需求了可以很快速的修改。

 

写入excel

用微软的com组件操作excel,保存的时候直接excel.Value赋值。

在unity中写个MenuItem,游戏运行前用JsonUtility.ToJson()创造j或者更新son文件。

 

读取Excel

直接JsonUtility.FromJson<>();

解析成一句一句话然后在游戏运行状态机需要解析的时候找到对应函数执行即可。

 

妄言妄听

如此这般,基本脚本解释器的思路就是这样。

回看代码,深觉自身不足,无论是设计模式还是安全架构,我负责的程序只能拿个40分。

本文作者:DorinXL

本文链接:https://www.cnblogs.com/DorinXL/p/14864367.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   DorinXL  阅读(736)  评论(2编辑  收藏  举报
👨‍💼
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.