Files
Echo/generate_texts.py
2026-07-08 20:42:51 +08:00

454 lines
12 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
import re
import uuid
texts = [
'''【文件编号:SHELTER-001 避难首日记录】
日期:204X.12.17
记录人:主角
【第 1 页】
凌晨 3 点 17 分,全城
防空警报拉响,最高
级预警
3 点 42 分,全员抵达
地堡,无人员掉队,
随身物资全部到位
4 点 05 分,地堡主门
关闭,ECHO-7 启动
全封闭安保模式
【第 2 页】
今日完成全员登记,
共 4 人,全部安全
启动基础供电系统,
通风系统全功率运行
,氧气浓度正常
ECHO-7 实时监控地
堡内外环境,无异常
情况
大伙都累坏了,今晚
轮流值班,先好好休
息''',
'''【文件编号:RULE-002 地堡生存守则补记】
日期:204X.12.25
记录人:朋友 A
【第 1 页】
躲进来已经一周了
,今天定了新的规矩
所有人轮流值班,每
天两人,负责巡检系
统和物资
每天的食物按配额分
配,不许私藏多吃,
尤其是 B 的零食
【第 2 页】
不许随便碰地堡的控
制面板,尤其是门禁
系统,有事找主角
每天必须记录物资消
耗情况,晚上统一汇
不许熬夜打牌超过 12
点,影响第二天值班
(说的就是 C 和 B
都好好遵守,我们才
能撑得更久''',
'''【文件编号:DAILY-012 罐头吐槽日记】
日期:2050.01.03
记录人:朋友 B
【第 1 页】
我真的要疯了!
连续吃了十八天的罐
头,现在闻到牛肉罐
头的味就想吐
之前囤货的时候还觉
得这个超好吃,现在
只想把剩下的全扔了
【第 2 页】
今天偷偷煮了一包火
锅底料,烫了点罐头
肉和土豆
大伙围着锅抢着吃的
时候,差点哭出来
这是我这半个月吃过
最好吃的东西
要是能出去,我第一
件事就是去吃顿牛油
火锅,涮满毛肚和鸭
肠,吃到撑''',
'''【文件编号:CHECK-003 通风系统巡检记录 03】
日期:2050.01.17
记录人:朋友 C
【第 1 页】
今日巡检全段通风管
道,共 12 个节点
3 号节点滤网积灰较
多,已更换新滤网
7 号节点管道有轻微
异响,拆开发现是一
只小老鼠
【第 2 页】
把小老鼠放出去了,
没想到地堡里还能闯
进来小生命
管道接口都检查了一
遍,无松动无漏气
和 ECHO-7 同步了巡
检数据,AI 更新了系
统记录
通风系统运行正常,
氧气浓度稳定在 21%
,一切良好''',
'''【文件编号:ECHO-RUN-011 全系统接入日志 V2.01】
记录主体:ECHO-7 安保系统
【第 1 页】
[2050.01.25 10:00:00]
全系统对接完成
地堡电力系统全权限
接入,自动调控正常
门禁系统全权限接入
,权限分级生效
【第 2 页】
[2050.01.25 14:00:00]
通风、温控、消防系
统全权限接入,联动
逻辑生效
物资管理系统对接完
成,库存数据同步更
【第 3 页】
[2050.01.25 23:59:59]
当日全系统运行稳定
无故障,无异常指令
核心安保功能正常启
已完成管理员(主角)
指令适配,随时响应
需求''',
'''【文件编号:SUPPLY-017 生存月度记录 02】
日期:2050.02.17
记录人:朋友 A
【第 1 页】
躲进地堡满两个月了
,今日完成全物资盘
饮用水剩余 87%,无
污染,可正常饮用
主食类物资剩余 92%
,按当前配额可支撑
18 个月以上
【第 2 页】
肉类罐头剩余 78%
水果罐头剩余 81%
零食类剩余 65%B
偷偷吃太多了)
药品、急救物资全部
完好,无损耗
燃料、电池等耗材剩
余 90%,足够使用
整体物资充足,只要
按配额使用,完全不
用担心短缺''',
'''【文件编号:DAILY-023 牌局烂账记录】
日期:2050.03.02
记录人:朋友 B
【第 1 页】
今天必须把 C 的烂账
记下来!
昨晚和 A、C 斗地主,
说好输一把一罐水果
罐头
C 连输八把,欠了我
五罐,欠了 A 三罐,
结果今天耍赖不认账
【第 2 页】
说什么昨晚喝了点啤
酒,不算数,还把自
己的罐头锁起来了
我和 A 追着他绕地堡
跑了三圈,最后还是
主角出面,他才不情
不愿的还了两罐
这个仇我记下了,下
次打牌必须把他赢到
连压缩饼干都不剩''',
'''【文件编号:DAILY-027 外出提议记录】
日期:2050.03.17
记录人:朋友 C
【第 1 页】
今天在通风口听了半
天,外面一点动静都
没有
轰炸声已经快一个月
没听到了,说不定战
争已经结束了
我们总不能一辈子躲
在这个地下的铁盒子
里吧
【第 2 页】
我想出去看看,看看
外面到底怎么样了
就算没结束,也可以
去附近的镇上找点新
鲜物资,总比天天吃
罐头强
晚上吃饭的时候跟大
伙提了,A 没说话,B
有点动摇,主角让我
再等等
我真的不想再等了''',
'''【文件编号:MEETING-007 团队会议记录 07】
日期:2050.03.22
记录人:主角
【第 1 页】
今日召开全员会议,
核心议题为外出探查
提议
参会人:主角、朋友 A
、朋友 B、朋友 C
C 提出外出探查周边
环境,确认外界局势
,补充物资
【第 2 页】
我与 A 持保留意见,
目前无法确认外界安
全性,贸然外出风险
过高
B 处于犹豫状态,既
想外出看看,又担心
遇到危险
最终约定,再观察一
个月,若外界持续无
异常,再商议外出事
ECHO-7 已加强对外
界环境的实时监测,
有异常会第一时间预
警''',
'''【文件编号:DAILY-031 深夜碎碎念】
日期:2050.04.09
记录人:朋友 B
【第 1 页】
今晚又失眠了,躺在
床上翻来覆去睡不着
地堡里的灯永远是那
个亮度,分不清白天
黑夜,每天都是一样
的流程,一样的饭菜
,一样的人
【第 2 页】
C 天天说要出去,其
实我也心动了
我想念阳光晒在身上
的感觉,想念街上的
人声鼎沸,想念妈妈
做的菜
可是我又害怕,害怕
外面全是废墟,害怕
出去了就再也回不来
我到底该怎么办啊,
跟着他们走,还是留
下来?''',
'''【文件编号:SUPPLY-032 离别物资整理记录】
日期:2050.06.16
记录人:主角
【第 1 页】
最终 A、B、C 还是决
定要离开,明天一早
出发
今天给他们整理了要
带走的物资,按三人
十五天的行程准备
压缩饼干 12 包,罐头
30 罐,饮用水 24 瓶,
装满了三个背包
【第 2 页】
给他们准备了急救包
,常用药品、止血材
料、抗生素都配齐了
还有防身的武器,充
满电的对讲机,和地
堡的频段保持同步
ECHO-7 会一直保持
信号监听,有情况随
时能联系
物资都检查了三遍,
只希望他们一路平安
,顺顺利利的''',
'''【文件编号:LEAVE-001 离别留言册】
日期:2050.06.18
记录人:朋友 A、B、C 联合
【第 1 页】
【朋友 A 留言】
主角,对不起,我们
还是决定走了
不是不相信你,也不
是不信 ECHO-7,只
是我们都想看看外面
的世界
物资我们留了一大半
给你,地堡的系统你
比谁都熟,照顾好自
【第 2 页】
【朋友 B 留言】
主角!我把我藏的最
后一箱零食放在你床
底下了!
不许说我乱吃东西啦
,留给你慢慢吃
要是我们在外面站稳
了,一定回来接你
你也要好好的,不许
天天熬夜调试代码,
记得按时吃饭
【第 3 页】
【朋友 C 留言】
兄弟,谢了这段时间
的照顾
等我出去看看情况,
要是安全了,第一个
回来给你带冰奶茶和
卤味
ECHO-7 会陪着你,
我们也会一直开着对
讲机
再见啦,我们一定会
再见面的''',
'''【文件编号:SHELTER-021 空堡首日记录】
日期:2050.06.19
记录人:主角
【第 1 页】
他们走了
早上六点的门,我送
他们到地堡口,看着
他们的身影消失在山
对讲机一直开着,他
们走了三个小时,还
在跟我报平安
【第 2 页】
地堡里一下子空了,
特别安静,只有 ECHO
-7 的运行声
今天巡检了所有系统
,电力、通风、门禁
都正常,物资也都清
点过了
ECHO-7 一直在问我
有没有什么需求,跟
往常一样,很贴心
【第 3 页】
说不难过是假的,但
我尊重他们的选择
我会守好这个地堡,
等他们回来
也会守好 ECHO-7
这是我花了好几年心
血做出来的,是我最
重要的作品
现在,只剩我和它了'''
]
template = '''%%YAML 1.1
%%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0a6a9ccc104e0964687925ed730d8d9f, type: 3}
m_Name: Before_Text%03d
m_EditorClassIdentifier:
id: 1001
displayName:
description:
icon: {fileID: 0}
pickupPrefab: {fileID: 0}
handModelPrefab: {fileID: 0}
itemType: 0
consumedResult: {fileID: 0}
thirstDelta: 0
hungerDelta: 0
sanityDelta: 0
isStackable: 0
maxStackSize: 1
useCustomHoldSettings: 0
holdPositionOffset: {x: 0, y: 0, z: 0}
holdRotationOffset: {x: 0, y: 0, z: 0}
holdScale: {x: 1, y: 1, z: 1}
showSpecialUseUI: 1
specialUseUIText:
specialUseSprite: {fileID: 0}
useSpecialUseUIPages: 1
specialUseUIPages:
%s'''
meta_template = '''fileFormatVersion: 2
guid: %s
MonoBehaviour:
icon: {instanceID: 0}
executionOrder: 0
'''
out_dir = r'e:\Unity\Unity Program\Test_2022\Assets\_Project\Data\Props\Text'
start_idx = 10
for i, text in enumerate(texts):
idx = start_idx + i
# Parse text into pages
lines = text.split('\n')
pages = []
current_page = []
header = []
in_page = False
for line in lines:
line = line.strip()
if not line:
continue
if re.match(r'^【第\s*\d+\s*页】', line):
if in_page:
pages.append('\n'.join(current_page))
current_page = []
in_page = True
continue
if not in_page:
header.append(line)
else:
current_page.append(line)
if current_page:
pages.append('\n'.join(current_page))
if header:
# Prepend header to the first page
if pages:
pages[0] = '\n'.join(header) + '\n' + pages[0]
else:
pages.append('\n'.join(header))
# Format pages into YAML
pages_yaml = ''
for p in pages:
p_escaped = p.replace('\n', '\\n').replace('"', '\\"')
pages_yaml += f' - text: "{p_escaped}"\n'
file_content = template % (idx, pages_yaml)
filepath = os.path.join(out_dir, f'Before_Text{idx:03d}.asset')
with open(filepath, 'w', encoding='utf-8') as f:
f.write(file_content)
metapath = filepath + '.meta'
if not os.path.exists(metapath):
new_guid = uuid.uuid4().hex
with open(metapath, 'w', encoding='utf-8') as f:
f.write(meta_template % new_guid)
print('Done')