1,582
个编辑
Happyvalley(讨论 | 贡献) (HIDE) |
小 (→vns文件: say的匹配正则) |
||
(未显示10个用户的14个中间版本) | |||
第1行: | 第1行: | ||
{{技术型}} | <!--如果你通过查看源代码发现了这里,那么恭喜你发现了查看内容的第二种方法。 | ||
-->{{技术型}} | |||
__NOINDEX__ | |||
{{Usercheck}} | |||
{{特殊页面导航}} | |||
*'''这只是对Story文件的格式分析,并不表示任何人可以曲解剧情。''' | *'''这只是对Story文件的格式分析,并不表示任何人可以曲解剧情。''' | ||
*'''本页面将保持孤立状态,严禁链入/引用!''' | *'''本页面将保持孤立状态,严禁链入/引用!''' | ||
==总论== | ==总论== | ||
在apk包中,所有关于剧情的部分都在\assets\app-data\story中,包含多个文件。不同的文件(夹)包含不同的作用。 | 在apk包中,所有关于剧情的部分都在\assets\app-data\story中,包含多个文件。不同的文件(夹)包含不同的作用。 | ||
第11行: | 第14行: | ||
===csb格式文件=== | ===csb格式文件=== | ||
*csb格式为cocos2dx的UI布局文件,定义了对应分支的界面布局,比较难以编辑(参考:[FlatBuffer https://google.github.io/flatbuffers/]) | *csb格式为cocos2dx的UI布局文件,定义了对应分支的界面布局,比较难以编辑(参考:[FlatBuffer https://google.github.io/flatbuffers/]) | ||
<!-- | |||
不过在某些情况下,可以通过 [csb2csd https://github.com/lyzz0612/csb2csd] 将csb文件转换为csd文件后使用旧版Cocos Studio打开csd文件便可编辑(发布时可发布为csb格式) | |||
--> | |||
===entries文件=== | ===entries文件=== | ||
第16行: | 第22行: | ||
格式 | 格式 | ||
{"entries": [{故事信息1},{故事信息2},……,{故事信息n}]} | |||
例子 | 例子 | ||
{ | { | ||
"entries": [{ | |||
"minor": 1, | |||
"requiredPack": "core", | |||
"storyType": "nvl", | |||
"clearSongId": "lumia", | |||
"clearCharaId": 0, | |||
"charIcon1": 0, | |||
"charIcon2": -1, | |||
"storyCgPath": "img/story/cg/1-1.jpg" | |||
}, | |||
{ | |||
"minor": 2, | |||
"requiredPack": "core", | |||
"requiredMinor": 1, | |||
"storyType": "nvl", | |||
"clearSongId": "memoryfactory", | |||
"clearCharaId": 0, | |||
"charIcon1": 0, | |||
"charIcon2": -1 | |||
}, | |||
{ | |||
"minor": 3, | |||
"requiredPack": "core", | |||
"requiredMinor": 2, | |||
"storyType": "nvl", | |||
"clearSongId": "pragmatism", | |||
"clearCharaId": 0, | |||
"charIcon1": 0, | |||
"charIcon2": -1 | |||
}, | |||
... | |||
] | |||
} | } | ||
归纳 | 归纳 | ||
第60行: | 第70行: | ||
"requirementAnomalyId": "requirementAnomalyID", | "requirementAnomalyId": "requirementAnomalyID", | ||
"clearCharaId": clearCharaId | "clearCharaId": clearCharaId | ||
"charIcon1": charIconId, | |||
"charIcon2": charIconId | |||
}, | }, | ||
] | ] | ||
第79行: | 第91行: | ||
*requirementAnomalyID(ansistring):需要[[解歌系统#特殊解歌系统|迷之解锁]]的曲目ID | *requirementAnomalyID(ansistring):需要[[解歌系统#特殊解歌系统|迷之解锁]]的曲目ID | ||
*clearCharaId(integer):解锁时需要采用的[[搭档]],ID编号参见[[曲包信息(packlist)格式]] | *clearCharaId(integer):解锁时需要采用的[[搭档]],ID编号参见[[曲包信息(packlist)格式]] | ||
*charIcon1(integer):显示在剧情中的搭档头像对应的搭档ID,-1为空 | |||
*charIcon2(integer):显示在剧情中的搭档头像对应的搭档ID,-1为空 | |||
===vn文件(story文件夹下)=== | ===vn文件(story文件夹下)=== | ||
格式 | 格式 | ||
{"requiredentriesID-requiredMinorID": {对应故事1},"requiredentriesID-requiredMinorID": {对应故事2},……} | |||
例子 | 例子 | ||
{ | { | ||
第115行: | 第126行: | ||
*文本内容的英文双引号为\",避免json转义 | *文本内容的英文双引号为\",避免json转义 | ||
*分页符为| | *分页符为| | ||
*双百分号%%用于特殊元素的展示,例如图片文件或字符注释 | |||
==vn文件夹== | ==vn文件夹== | ||
vn文件夹下包含所有不同语言下对应视觉小说模式的剧情的脚本文件,以及res文件夹,对应所需资源。 | vn文件夹下包含所有不同语言下对应视觉小说模式的剧情的脚本文件,以及res文件夹,对应所需资源。 | ||
第121行: | 第134行: | ||
===vns文件=== | ===vns文件=== | ||
vns为Arcaea中视觉小说模式的剧情的脚本文件,包含有以下指令 | vns为Arcaea中视觉小说模式的剧情的脚本文件,包含有以下指令 | ||
play <audio> <volume> [loop] | |||
*播放音频 (可以使用stop停止) | |||
*loop为循环至剧情结束,可选 | |||
stop <audio> <duration> | |||
*播放音频 | *停止音频 | ||
*loop为循环至剧情结束 | *duration为淡出时长 | ||
say <content> | |||
*显示剧情内容,每次say会清空屏幕已有剧情 ,注意双引号同样有转义;一个推荐的匹配正则是<code>(?<=say ")[\w\W]+?(?=(?<!\\)")</code> | |||
show <pic> <posX>:<posY> <anchorX>:<anchorY> <scaleX>:<scaleY> <transition> <superposition> [scale] | |||
*显示剧情内容,每次say会清空屏幕已有剧情 | |||
*显示图片 | *显示图片 | ||
*pos为图片锚点在图片上的位置,图片左下角为(0,0),右上角为(1,1) | *pos为图片锚点在图片上的位置,图片左下角为(0,0),右上角为(1,1) | ||
第141行: | 第148行: | ||
*scale为图片缩放比例,1为原始大小 | *scale为图片缩放比例,1为原始大小 | ||
**锚点为图片缩放过程中的原点 | **锚点为图片缩放过程中的原点 | ||
**不论设备分辨率如何,播放区域的比例在16:9和19.5:9之间,若屏幕比例在这之外会有黑边。原始大小指播放区域纵向分辨率为720时图片的大小 | |||
*transition为渐变效果 | *transition为渐变效果 | ||
* | *superposition为叠加方式 , 出 现 过的有normal,overlay和overlayplus | ||
*在结尾添加"scale" ,则原始大小变为播放区域横向分辨率为1280时图片的大小 | |||
hide <pic> [transition] | |||
*隐藏图片 | *隐藏图片 | ||
*transition为渐变效果,可选 | *transition为渐变效果,可选 | ||
move <pic> <dx>:<dy> <duration> <curve> | |||
*移动图片 | *移动图片 | ||
*dx:dy为移动的距离,单位为像素 | *dx:dy为移动的距离,单位为像素 | ||
第158行: | 第161行: | ||
*curve为移动过程使用的曲线 | *curve为移动过程使用的曲线 | ||
*transition:仅支持fade淡入淡出渐变,格式为fade(<duration>,<curve>) | *transition:仅支持fade淡入淡出渐变,格式为fade(<duration>,<curve>) | ||
*curve:支持linear | *curve:支持linear、sineout、sineinout 、cubicout ,详见[https://easings.net easings 一览] | ||
- | wait <duration> | ||
*进行下面的操作的等待时间 | |||
指令会依次执行,有下列特性 | |||
*show在内容完全显示并点击后结束执行 | |||
*wait只会在特定时间后结束执行 | |||
*其它指令都是“开始”某种画面变化,执行不占用时间,所以一串指令会同时执行 | |||
*移动可以叠加 | |||
*后显示的图片会在先显示的图片之上 | |||
{{Usercheck-end}} |
个编辑