gameplay refine
1. 优化 ResolutionAdapter 的分辨率适配问题 2. 调整 SpriteCache 的资源路径拼接 3. 引入 StoryDirector 做各玩法的胶水 4. 导入和改名资源便于代码查询路径
|
|
@ -98,4 +98,4 @@ crashlytics-build.properties
|
||||||
/Android
|
/Android
|
||||||
/bin
|
/bin
|
||||||
/.omc
|
/.omc
|
||||||
|
/.omx
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,9 @@
|
||||||
# int string DialogUIMode int
|
# int string DialogUIMode int
|
||||||
# 对话编号 策划备注 对话标识 对话形式 章节编号
|
# 对话编号 策划备注 对话标识 对话形式 章节编号
|
||||||
1001 第一章介绍 Ch1_Time01 Mask 1.001
|
1001 第一章介绍 Ch1_Time01 Mask 1.001
|
||||||
1002 第一章主流程 Ch1_Dialog_LiJie01 BottomBox 1.002
|
1002 第一章主流程 Ch1_LiJie BottomBox 1.002
|
||||||
1003 第一章玩法开始前闲聊 Ch1_Dialog_Foreman01 BottomBox 1.003
|
1003 Ch1_Narrator01 BottomBox 1.003
|
||||||
1004 Ch1_Dialog_LiJie02 BottomBox 1.004
|
1004 Ch1_Dialog_LiJie03 BottomBox 1.004
|
||||||
1005 Ch1_Dialog_Foreman02 BottomBox 1.005
|
|
||||||
1006 Ch1_Narrator01 BottomBox 1.006
|
|
||||||
1007 Ch1_Dialog_LiJie03 BottomBox 1.007
|
|
||||||
1008 Ch1_Dialog_Player01 BottomBox 1.008
|
1008 Ch1_Dialog_Player01 BottomBox 1.008
|
||||||
1009 Ch1_Dialog_LiJie04 BottomBox 1.009
|
1009 Ch1_Dialog_LiJie04 BottomBox 1.009
|
||||||
1010 Ch1_Dialog_LiJie05 BottomBox 1.01
|
1010 Ch1_Dialog_LiJie05 BottomBox 1.01
|
||||||
|
|
|
||||||
|
|
@ -4,51 +4,51 @@
|
||||||
# 对话行编号 策划备注 说话人Id 表情 显示人名 说话朝向 说话内容 演出效果 章节Id 对话Id
|
# 对话行编号 策划备注 说话人Id 表情 显示人名 说话朝向 说话内容 演出效果 章节Id 对话Id
|
||||||
100100001 Id规则为 Time None 时间 0 元祐七年,北宋汴京。 None 1.00100001 1001.00001
|
100100001 Id规则为 Time None 时间 0 元祐七年,北宋汴京。 None 1.00100001 1001.00001
|
||||||
100200001 第1位数为章节Id LiJie None 李诫 0 工头呢,工头呢,这是发生的什么事! None 1.00200001 1002.00001
|
100200001 第1位数为章节Id LiJie None 李诫 0 工头呢,工头呢,这是发生的什么事! None 1.00200001 1002.00001
|
||||||
100300001 第2-4位数为对话Id GongTou None 工头 0 李官人啊,这...,我也不知...,啊! None 1.00300001 1003.00001
|
100200002 第2-4位数为对话Id GongTou None 工头 1 李官人啊,这...,我也不知...,啊! None 1.00200002 1002.00002
|
||||||
100300002 第5-9位数为对话行Id GongTou None 工头 0 定是那可恶的老鼠将这木材咬了去,或是这阴雨的天气染湿了榫头...。 None 1.00300002 1003.00002
|
100200003 第5-9位数为对话行Id GongTou None 工头 1 定是那可恶的老鼠将这木材咬了去,或是这阴雨的天气染湿了榫头...。 None 1.00200003 1002.00003
|
||||||
100400001 LiJie None 李诫 0 那这木制松软、一掰就弯的木材是什么,我又不是不认识, None 1.00400001 1004.00001
|
100200004 LiJie None 李诫 0 那这木制松软、一掰就弯的木材是什么,我又不是不认识, None 1.00200004 1002.00004
|
||||||
100400002 LiJie None 李诫 0 大殿建筑用的都是上好的楠木,那这柳木是哪里来的你解释下。 None 1.00400002 1004.00002
|
100200005 LiJie None 李诫 0 大殿建筑用的都是上好的楠木,那这柳木是哪里来的你解释下。 None 1.00200005 1002.00005
|
||||||
100500001 GongTou None 工头 0 这...定是工人中出现了偷鸡摸狗的小人,李官人大可放心, None 1.00500001 1005.00001
|
100200006 GongTou None 工头 1 这...定是工人中出现了偷鸡摸狗的小人,李官人大可放心, None 1.00200006 1002.00006
|
||||||
100500002 GongTou None 工头 0 我一定将这小人找出来...。 None 1.00500002 1005.00002
|
100200007 GongTou None 工头 1 我一定将这小人找出来...。 None 1.00200007 1002.00007
|
||||||
100600001 Other None 旁白 0 你是新入将作监的画图令史,今日正是你当值的第一天。 None 1.00600001 1006.00001
|
100300001 Other None 旁白 0 你是新入将作监的画图令史,今日正是你当值的第一天。 None 1.00300001 1003.00001
|
||||||
100700001 LiJie None 李诫 0 你便是新任的画图令史? None 1.00700001 1007.00001
|
100300002 LiJie None 李诫 1 你便是新任的画图令史? None 1.00300002 1003.00002
|
||||||
100700002 LiJie None 李诫 0 来得正好。 None 1.00700002 1007.00002
|
100300003 LiJie None 李诫 1 来得正好。 None 1.00300003 1003.00003
|
||||||
100800001 Player None 玩家 0 属下正是,见过李主簿。 None 1.00800001 1008.00001
|
100300004 Player None 玩家 0 属下正是,见过李主簿。 None 1.00300004 1003.00004
|
||||||
100900001 LiJie None 李诫 0 方才工地塌架,你也有所耳闻。 None 1.00900001 1009.00001
|
100300005 LiJie None 李诫 1 方才工地塌架,你也有所耳闻。 None 1.00300005 1003.00005
|
||||||
100900002 LiJie None 李诫 0 这工头竟拿柳木来替代楠木,企图瞒天过海,结果却落得如此下场, None 1.00900002 1009.00002
|
100300006 LiJie None 李诫 1 这工头竟拿柳木来替代楠木,企图瞒天过海,结果却落得如此下场, None 1.00300006 1003.00006
|
||||||
100900003 LiJie None 李诫 0 幸好方才无人员伤亡,才让这工头躲过一劫。 None 1.00900003 1009.00003
|
100300007 LiJie None 李诫 1 幸好方才无人员伤亡,才让这工头躲过一劫。 None 1.00300007 1003.00007
|
||||||
101000001 LiJie None 李诫 0 如今营造无尺、用料无度,劣木充良、偷工减料已成大患。 None 1.01000001 1010.00001
|
100300008 LiJie None 李诫 1 如今营造无尺、用料无度,劣木充良、偷工减料已成大患。 None 1.00300008 1003.00008
|
||||||
101000002 LiJie None 李诫 0 而我们的职责,就是尽早发现这般祸患,防止酿成更大的问题。 None 1.01000002 1010.00002
|
100300009 LiJie None 李诫 1 而我们的职责,就是尽早发现这般祸患,防止酿成更大的问题。 None 1.00300009 1003.00009
|
||||||
101100001 LiJie None 李诫 0 无规矩,则屋不立;无准绳,则工不正。 None 1.01100001 1011.00001
|
100300010 LiJie None 李诫 1 无规矩,则屋不立;无准绳,则工不正。 None 1.0030001 1003.0001
|
||||||
101100002 LiJie None 李诫 0 你也要牢记。 None 1.01100002 1011.00002
|
100300011 LiJie None 李诫 1 你也要牢记。 None 1.00300011 1003.00011
|
||||||
101200001 Player None 玩家 0 是,李主簿。 None 1.01200001 1012.00001
|
100300012 Player None 玩家 0 是,李主簿。 None 1.00300012 1003.00012
|
||||||
101300001 LiJie None 李诫 0 你既为画图令史,第一要务便是识木、辨材、熟用器具。 None 1.01300001 1013.00001
|
100300013 LiJie None 李诫 1 你既为画图令史,第一要务便是识木、辨材、熟用器具。 None 1.00300013 1003.00013
|
||||||
101400001 LiJie None 李诫 0 现在随我去库房,我来带你认识水准、绳墨、曲尺、方斗这些营造根本之器。 None 1.01400001 1014.00001
|
100300014 LiJie None 李诫 1 现在随我去库房,我来带你认识水准、绳墨、曲尺、方斗这些营造根本之器。 None 1.00300014 1003.00014
|
||||||
101500001 LiJie None 李诫 0 待你熟习测量与料例,我便亲自带你到工地监工核验,杜绝此类祸事再发。 None 1.01500001 1015.00001
|
100300015 LiJie None 李诫 1 待你熟习测量与料例,我便亲自带你到工地监工核验,杜绝此类祸事再发。 None 1.00300015 1003.00015
|
||||||
101600001 Player None 玩家 0 属下遵命。 None 1.01600001 1016.00001
|
100300016 Player None 玩家 0 属下遵命。 None 1.00300016 1003.00016
|
||||||
101700001 Other None 旁白 0 你正式踏入将作监,一段以法度正营造的历程,自此开始。 None 1.01700001 1017.00001
|
100300017 Other None 旁白 0 你正式踏入将作监,一段以法度正营造的历程,自此开始。 None 1.00300017 1003.00017
|
||||||
101800001 LiJie None 李诫 0 这里是库房,存放着营造时用到的所有工具。 None 1.01800001 1018.00001
|
100400001 LiJie None 李诫 1 这里是库房,存放着营造时用到的所有工具。 None 1.00400001 1004.00001
|
||||||
101900001 Subtitle None 字幕 0 檀木质地,刻度以朱砂标注,一端为方、一端为折,刻有 “材份” 刻度。 None 1.01900001 1019.00001
|
100400002 Subtitle None 字幕 0 檀木质地,刻度以朱砂标注,一端为方、一端为折,刻有 “材份” 刻度。 None 1.00400002 1004.00002
|
||||||
102000001 LiJie None 李诫 0 你看,构屋先定 “方”,柱枋是否垂直、斗拱是否方正,全凭这曲尺核验。 None 1.02000001 1020.00001
|
100400003 LiJie None 李诫 1 你看,构屋先定 “方”,柱枋是否垂直、斗拱是否方正,全凭这曲尺核验。 None 1.00400003 1004.00003
|
||||||
102100001 LiJie None 李诫 0 此前工地偷换木料,若早以曲尺量其形制,便知柳木径寸不足,断断用不得啊。 None 1.02100001 1021.00001
|
100400004 LiJie None 李诫 1 此前工地偷换木料,若早以曲尺量其形制,便知柳木径寸不足,断断用不得啊。 None 1.00400004 1004.00004
|
||||||
102200001 LiJie None 李诫 0 此乃方斗,也叫墨斗,配绳墨使用。 None 1.02200001 1022.00001
|
100400005 LiJie None 李诫 1 此乃方斗,也叫墨斗,配绳墨使用。 None 1.00400005 1004.00005
|
||||||
102200002 LiJie None 李诫 0 绳墨牵直,以墨斗弹线,便知木料是否平直、墙体是否端正。 None 1.02200002 1022.00002
|
100400006 LiJie None 李诫 1 绳墨牵直,以墨斗弹线,便知木料是否平直、墙体是否端正。 None 1.00400006 1004.00006
|
||||||
102300001 Subtitle None 字幕 0 方斗为楠木所制,斗身刻 “将作监” 款识,墨仓密封,绳墨以生丝浸松烟墨制成,耐磨不褪。 None 1.02300001 1023.00001
|
100400007 Subtitle None 字幕 0 方斗为楠木所制,斗身刻 “将作监” 款识,墨仓密封,绳墨以生丝浸松烟墨制成,耐磨不褪。 None 1.00400007 1004.00007
|
||||||
102400001 LiJie None 李诫 0 营造之事,“直” 为要。 None 1.02400001 1024.00001
|
100400008 LiJie None 李诫 1 营造之事,“直” 为要。 None 1.00400008 1004.00008
|
||||||
102400002 LiJie None 李诫 0 工头偷工减料,常以歪木充数,若以绳墨弹线,歪直立现,断无蒙混可能。 None 1.02400002 1024.00002
|
100400009 LiJie None 李诫 1 工头偷工减料,常以歪木充数,若以绳墨弹线,歪直立现,断无蒙混可能。 None 1.00400009 1004.00009
|
||||||
102500001 Player None 玩家 0 那这是何物? None 1.02500001 1025.00001
|
100400010 Player None 玩家 0 那这是何物? None 1.0040001 1004.0001
|
||||||
102600001 LiJie None 李诫 0 这是水准,也名 “水尺”,测地势高低、屋基平正之用。 None 1.02600001 1026.00001
|
100400011 LiJie None 李诫 1 这是水准,也名 “水尺”,测地势高低、屋基平正之用。 None 1.00400011 1004.00011
|
||||||
102700001 Subtitle None 字幕 0 青铜制的水准器,形制为长槽,内盛水,槽侧刻刻度,槽端有通气孔,是宋代成熟的水准测量工具。 None 1.02700001 1027.00001
|
100400012 Subtitle None 字幕 0 青铜制的水准器,形制为长槽,内盛水,槽侧刻刻度,槽端有通气孔,是宋代成熟的水准测量工具。 None 1.00400012 1004.00012
|
||||||
102800001 LiJie None 李诫 0 汴京地势多洼,营建房宇先以水准定基址 None 1.02800001 1028.00001
|
100400013 LiJie None 李诫 1 汴京地势多洼,营建房宇先以水准定基址 None 1.00400013 1004.00013
|
||||||
102800002 LiJie None 李诫 0 若基址倾斜,纵是木料精良,也难逃倾颓之祸。 None 1.02800002 1028.00002
|
100400014 LiJie None 李诫 1 若基址倾斜,纵是木料精良,也难逃倾颓之祸。 None 1.00400014 1004.00014
|
||||||
102900001 LiJie None 李诫 0 水之性平,这水准便是借水定平。 None 1.02900001 1029.00001
|
100400015 LiJie None 李诫 1 水之性平,这水准便是借水定平。 None 1.00400015 1004.00015
|
||||||
103000001 LiJie None 李诫 0 除了这些器具,库房更藏有 “料例” 册籍, None 1.03000001 1030.00001
|
100400016 LiJie None 李诫 1 除了这些器具,库房更藏有 “料例” 册籍, None 1.00400016 1004.00016
|
||||||
103000002 LiJie None 李诫 0 楠木、樟木、杉木各等用料定额,大木作、小木作各工序用工之数,皆在册中。 None 1.03000002 1030.00002
|
100400017 LiJie None 李诫 1 楠木、樟木、杉木各等用料定额,大木作、小木作各工序用工之数,皆在册中。 None 1.00400017 1004.00017
|
||||||
103100001 LiJie None 李诫 0 你既为画图令史,识器是第一步,更要知 “器以定法、法以量料”。 None 1.03100001 1031.00001
|
100400018 LiJie None 李诫 1 你既为画图令史,识器是第一步,更要知 “器以定法、法以量料”。 None 1.00400018 1004.00018
|
||||||
103100002 LiJie None 李诫 0 这些工具,是规矩的具象,料例是制度的准绳,二者相合,才能堵贪弊、正营造。 None 1.03100002 1031.00002
|
100400019 LiJie None 李诫 1 这些工具,是规矩的具象,料例是制度的准绳,二者相合,才能堵贪弊、正营造。 None 1.00400019 1004.00019
|
||||||
103200001 LiJie None 李诫 0 今日先熟其形、知其用。 None 1.03200001 1032.00001
|
100400020 LiJie None 李诫 1 今日先熟其形、知其用。 None 1.0040002 1004.0002
|
||||||
103200002 LiJie None 李诫 0 明日随我去工地,以器验工,看看那些贪弊工头还能藏多少猫腻。 None 1.03200002 1032.00002
|
100400021 LiJie None 李诫 1 明日随我去工地,以器验工,看看那些贪弊工头还能藏多少猫腻。 None 1.00400021 1004.00021
|
||||||
103300001 Player None 玩家 0 是,李主簿。 None 1.03300001 1033.00001
|
100400022 Player None 玩家 0 是,李主簿。 None 1.00400022 1004.00022
|
||||||
103400001 LiJie None 李诫 0 这工地是谁负责! None 1.03400001 1034.00001
|
103400001 LiJie None 李诫 0 这工地是谁负责! None 1.03400001 1034.00001
|
||||||
103500001 GongTou None 工头 0 李主簿,您怎么又来了… None 1.03500001 1035.00001
|
103500001 GongTou None 工头 0 李主簿,您怎么又来了… None 1.03500001 1035.00001
|
||||||
103600001 LiJie None 李诫 0 我不来,怎知你们又在如何糊弄? None 1.03600001 1036.00001
|
103600001 LiJie None 李诫 0 我不来,怎知你们又在如何糊弄? None 1.03600001 1036.00001
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
# int string string bool bool
|
# int string string bool bool
|
||||||
# 界面编号 策划备注 资源名称 界面组名称 是否允许多个界面实例 是否暂停被其覆盖的界面
|
# 界面编号 策划备注 资源名称 界面组名称 是否允许多个界面实例 是否暂停被其覆盖的界面
|
||||||
1 弹出框 DialogForm Dialog True False
|
1 弹出框 DialogForm Dialog True False
|
||||||
|
2 BgForm Default False False
|
||||||
100 主菜单 MenuForm Default False True
|
100 主菜单 MenuForm Default False True
|
||||||
101 设置 SettingForm Default False True
|
101 设置 SettingForm Default False True
|
||||||
102 关于 AboutForm Default False True
|
102 关于 AboutForm Default False True
|
||||||
|
|
|
||||||
|
|
@ -122,354 +122,7 @@ NavMeshSettings:
|
||||||
debug:
|
debug:
|
||||||
m_Flags: 0
|
m_Flags: 0
|
||||||
m_NavMeshData: {fileID: 0}
|
m_NavMeshData: {fileID: 0}
|
||||||
--- !u!1 &203844586
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 203844589}
|
|
||||||
- component: {fileID: 203844588}
|
|
||||||
- component: {fileID: 203844587}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Directional Light
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &203844587
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 203844586}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Version: 3
|
|
||||||
m_UsePipelineSettings: 1
|
|
||||||
m_AdditionalLightsShadowResolutionTier: 2
|
|
||||||
m_LightLayerMask: 1
|
|
||||||
m_RenderingLayers: 1
|
|
||||||
m_CustomShadowLayers: 0
|
|
||||||
m_ShadowLayerMask: 1
|
|
||||||
m_ShadowRenderingLayers: 1
|
|
||||||
m_LightCookieSize: {x: 1, y: 1}
|
|
||||||
m_LightCookieOffset: {x: 0, y: 0}
|
|
||||||
m_SoftShadowQuality: 1
|
|
||||||
--- !u!108 &203844588
|
|
||||||
Light:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 203844586}
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 10
|
|
||||||
m_Type: 1
|
|
||||||
m_Shape: 0
|
|
||||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
|
||||||
m_Intensity: 1
|
|
||||||
m_Range: 10
|
|
||||||
m_SpotAngle: 30
|
|
||||||
m_InnerSpotAngle: 21.80208
|
|
||||||
m_CookieSize: 10
|
|
||||||
m_Shadows:
|
|
||||||
m_Type: 2
|
|
||||||
m_Resolution: -1
|
|
||||||
m_CustomResolution: -1
|
|
||||||
m_Strength: 1
|
|
||||||
m_Bias: 0.05
|
|
||||||
m_NormalBias: 0.4
|
|
||||||
m_NearPlane: 0.2
|
|
||||||
m_CullingMatrixOverride:
|
|
||||||
e00: 1
|
|
||||||
e01: 0
|
|
||||||
e02: 0
|
|
||||||
e03: 0
|
|
||||||
e10: 0
|
|
||||||
e11: 1
|
|
||||||
e12: 0
|
|
||||||
e13: 0
|
|
||||||
e20: 0
|
|
||||||
e21: 0
|
|
||||||
e22: 1
|
|
||||||
e23: 0
|
|
||||||
e30: 0
|
|
||||||
e31: 0
|
|
||||||
e32: 0
|
|
||||||
e33: 1
|
|
||||||
m_UseCullingMatrixOverride: 0
|
|
||||||
m_Cookie: {fileID: 0}
|
|
||||||
m_DrawHalo: 0
|
|
||||||
m_Flare: {fileID: 0}
|
|
||||||
m_RenderMode: 0
|
|
||||||
m_CullingMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_RenderingLayerMask: 1
|
|
||||||
m_Lightmapping: 4
|
|
||||||
m_LightShadowCasterMode: 0
|
|
||||||
m_AreaSize: {x: 1, y: 1}
|
|
||||||
m_BounceIntensity: 1
|
|
||||||
m_ColorTemperature: 6570
|
|
||||||
m_UseColorTemperature: 0
|
|
||||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_UseBoundingSphereOverride: 0
|
|
||||||
m_UseViewFrustumForShadowCasterCull: 1
|
|
||||||
m_ShadowRadius: 0
|
|
||||||
m_ShadowAngle: 0
|
|
||||||
--- !u!4 &203844589
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 203844586}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
|
||||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
|
||||||
--- !u!1 &223482651
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 223482652}
|
|
||||||
- component: {fileID: 223482654}
|
|
||||||
- component: {fileID: 223482653}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Bg
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &223482652
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 223482651}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 2070240951}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!114 &223482653
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 223482651}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_Sprite: {fileID: 21300000, guid: d339ce9c4958967469068a30e0753b30, type: 3}
|
|
||||||
m_Type: 0
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
m_PixelsPerUnitMultiplier: 1
|
|
||||||
--- !u!222 &223482654
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 223482651}
|
|
||||||
m_CullTransparentMesh: 1
|
|
||||||
--- !u!1 &1160234425
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1160234427}
|
|
||||||
- component: {fileID: 1160234426}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Global Volume
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &1160234426
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1160234425}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_IsGlobal: 1
|
|
||||||
priority: 0
|
|
||||||
blendDistance: 0
|
|
||||||
weight: 1
|
|
||||||
sharedProfile: {fileID: 11400000, guid: 352998f9edeef2348a887c5a2e7dc5d1, type: 2}
|
|
||||||
--- !u!4 &1160234427
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1160234425}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &2070240947
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 2070240951}
|
|
||||||
- component: {fileID: 2070240950}
|
|
||||||
- component: {fileID: 2070240949}
|
|
||||||
- component: {fileID: 2070240948}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Canvas
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &2070240948
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2070240947}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_IgnoreReversedGraphics: 1
|
|
||||||
m_BlockingObjects: 0
|
|
||||||
m_BlockingMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
--- !u!114 &2070240949
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2070240947}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_UiScaleMode: 1
|
|
||||||
m_ReferencePixelsPerUnit: 100
|
|
||||||
m_ScaleFactor: 1
|
|
||||||
m_ReferenceResolution: {x: 2048, y: 1152}
|
|
||||||
m_ScreenMatchMode: 0
|
|
||||||
m_MatchWidthOrHeight: 0
|
|
||||||
m_PhysicalUnit: 3
|
|
||||||
m_FallbackScreenDPI: 96
|
|
||||||
m_DefaultSpriteDPI: 96
|
|
||||||
m_DynamicPixelsPerUnit: 1
|
|
||||||
m_PresetInfoIsWorld: 0
|
|
||||||
--- !u!223 &2070240950
|
|
||||||
Canvas:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2070240947}
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_RenderMode: 0
|
|
||||||
m_Camera: {fileID: 0}
|
|
||||||
m_PlaneDistance: 100
|
|
||||||
m_PixelPerfect: 0
|
|
||||||
m_ReceivesEvents: 1
|
|
||||||
m_OverrideSorting: 0
|
|
||||||
m_OverridePixelPerfect: 0
|
|
||||||
m_SortingBucketNormalizedSize: 0
|
|
||||||
m_VertexColorAlwaysGammaSpace: 0
|
|
||||||
m_AdditionalShaderChannelsFlag: 0
|
|
||||||
m_UpdateRectTransformForStandalone: 0
|
|
||||||
m_SortingLayerID: 0
|
|
||||||
m_SortingOrder: -10000
|
|
||||||
m_TargetDisplay: 0
|
|
||||||
--- !u!224 &2070240951
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 2070240947}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 0, y: 0, z: 0}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 223482652}
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
|
||||||
m_AnchorMax: {x: 0, y: 0}
|
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
|
||||||
m_Pivot: {x: 0, y: 0}
|
|
||||||
--- !u!1660057539 &9223372036854775807
|
--- !u!1660057539 &9223372036854775807
|
||||||
SceneRoots:
|
SceneRoots:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_Roots:
|
m_Roots: []
|
||||||
- {fileID: 203844589}
|
|
||||||
- {fileID: 1160234427}
|
|
||||||
- {fileID: 2070240951}
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@ public partial class GameEntry : MonoBehaviour
|
||||||
public static CombineComponent Combine { get; private set; }
|
public static CombineComponent Combine { get; private set; }
|
||||||
public static DialogComponent Dialog { get; private set; }
|
public static DialogComponent Dialog { get; private set; }
|
||||||
public static AIChatComponent AIChat { get; private set; }
|
public static AIChatComponent AIChat { get; private set; }
|
||||||
|
public static StoryDirectorComponent StoryDirector { get; private set; }
|
||||||
|
public static SpriteCacheComponent SpriteCache { get; private set; }
|
||||||
|
|
||||||
private static void InitCustomComponents()
|
private static void InitCustomComponents()
|
||||||
{
|
{
|
||||||
|
|
@ -24,5 +26,7 @@ public partial class GameEntry : MonoBehaviour
|
||||||
Combine = UnityGameFramework.Runtime.GameEntry.GetComponent<CombineComponent>();
|
Combine = UnityGameFramework.Runtime.GameEntry.GetComponent<CombineComponent>();
|
||||||
Dialog = UnityGameFramework.Runtime.GameEntry.GetComponent<DialogComponent>();
|
Dialog = UnityGameFramework.Runtime.GameEntry.GetComponent<DialogComponent>();
|
||||||
AIChat = UnityGameFramework.Runtime.GameEntry.GetComponent<AIChatComponent>();
|
AIChat = UnityGameFramework.Runtime.GameEntry.GetComponent<AIChatComponent>();
|
||||||
|
StoryDirector = UnityGameFramework.Runtime.GameEntry.GetComponent<StoryDirectorComponent>();
|
||||||
|
SpriteCache = UnityGameFramework.Runtime.GameEntry.GetComponent<SpriteCacheComponent>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -377,6 +377,7 @@ namespace CustomComponent
|
||||||
GameEntry.Event.Fire(this, CombineGuideMessageEventArgs.Create(_completeHint));
|
GameEntry.Event.Fire(this, CombineGuideMessageEventArgs.Create(_completeHint));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GameEntry.Event.Fire(this, CombineCompletedEventArgs.Create());
|
||||||
_onPuzzleCompleted.Invoke();
|
_onPuzzleCompleted.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -338,11 +338,20 @@ namespace CustomComponent
|
||||||
|
|
||||||
private void EndDialogInternal()
|
private void EndDialogInternal()
|
||||||
{
|
{
|
||||||
|
int chapterId = _formContext != null ? _formContext.ChapterId : _currentChapterId;
|
||||||
|
int dialogId = _formContext != null ? _formContext.DialogId : 0;
|
||||||
|
int lineId = _formContext != null ? _formContext.CurrentLineId : 0;
|
||||||
|
|
||||||
_isPlaying = false;
|
_isPlaying = false;
|
||||||
_currentLineIndex = -1;
|
_currentLineIndex = -1;
|
||||||
|
|
||||||
_formController.OnDialogEnded(_formContext);
|
_formController.OnDialogEnded(_formContext);
|
||||||
_formController.CloseUI();
|
_formController.CloseUI();
|
||||||
|
|
||||||
|
if (dialogId > 0)
|
||||||
|
{
|
||||||
|
GameEntry.Event.Fire(this, DialogCompletedEventArgs.Create(chapterId, dialogId, lineId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ApplyLineToContext(DRDialogLine lineRow, int lineIndex, int totalLines)
|
private void ApplyLineToContext(DRDialogLine lineRow, int lineIndex, int totalLines)
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ namespace GeometryTD.CustomComponent
|
||||||
[SerializeField] private Vector2 _referenceResolution = new Vector2(2560f, 1600f);
|
[SerializeField] private Vector2 _referenceResolution = new Vector2(2560f, 1600f);
|
||||||
[SerializeField] private bool _adaptUiCanvasToViewport = true;
|
[SerializeField] private bool _adaptUiCanvasToViewport = true;
|
||||||
[SerializeField] private bool _enableBlackMask = true;
|
[SerializeField] private bool _enableBlackMask = true;
|
||||||
|
[SerializeField] private bool _autoCollectSceneCanvases = true;
|
||||||
[SerializeField] private List<Transform> _uiRoots = new List<Transform>();
|
[SerializeField] private List<Transform> _uiRoots = new List<Transform>();
|
||||||
|
|
||||||
private readonly List<Canvas> _canvasBuffer = new List<Canvas>(32);
|
private readonly List<Canvas> _canvasBuffer = new List<Canvas>(32);
|
||||||
|
|
@ -29,6 +30,7 @@ namespace GeometryTD.CustomComponent
|
||||||
|
|
||||||
private bool _canvasCacheDirty = true;
|
private bool _canvasCacheDirty = true;
|
||||||
private bool _uiEventSubscribed;
|
private bool _uiEventSubscribed;
|
||||||
|
private bool _sceneEventSubscribed;
|
||||||
private bool _missingRootWarned;
|
private bool _missingRootWarned;
|
||||||
|
|
||||||
private Canvas _maskCanvas;
|
private Canvas _maskCanvas;
|
||||||
|
|
@ -163,18 +165,6 @@ namespace GeometryTD.CustomComponent
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_uiRoots == null || _uiRoots.Count == 0)
|
|
||||||
{
|
|
||||||
if (!_missingRootWarned)
|
|
||||||
{
|
|
||||||
_missingRootWarned = true;
|
|
||||||
Log.Warning(
|
|
||||||
"ResolutionAdapterComponent missing injected roots. Assign UI/HPBar root transforms in scene.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_canvasCacheDirty)
|
if (_canvasCacheDirty)
|
||||||
{
|
{
|
||||||
RebuildCanvasCache();
|
RebuildCanvasCache();
|
||||||
|
|
@ -200,9 +190,49 @@ namespace GeometryTD.CustomComponent
|
||||||
_trackedCanvases.Clear();
|
_trackedCanvases.Clear();
|
||||||
_trackedCanvasSet.Clear();
|
_trackedCanvasSet.Clear();
|
||||||
|
|
||||||
foreach (var root in _uiRoots)
|
bool hasValidRoot = false;
|
||||||
|
if (_uiRoots != null)
|
||||||
{
|
{
|
||||||
CollectCanvases(root);
|
foreach (var root in _uiRoots)
|
||||||
|
{
|
||||||
|
if (root == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
hasValidRoot = true;
|
||||||
|
CollectCanvases(root);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_autoCollectSceneCanvases || !hasValidRoot)
|
||||||
|
{
|
||||||
|
Canvas[] canvases = Resources.FindObjectsOfTypeAll<Canvas>();
|
||||||
|
foreach (Canvas canvas in canvases)
|
||||||
|
{
|
||||||
|
if (canvas == null || canvas == _maskCanvas || canvas.renderMode == RenderMode.WorldSpace)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
GameObject gameObject = canvas.gameObject;
|
||||||
|
if (!gameObject.scene.IsValid() || !gameObject.scene.isLoaded)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_trackedCanvasSet.Add(canvas))
|
||||||
|
{
|
||||||
|
_trackedCanvases.Add(canvas);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasValidRoot && !_autoCollectSceneCanvases && !_missingRootWarned)
|
||||||
|
{
|
||||||
|
_missingRootWarned = true;
|
||||||
|
Log.Warning(
|
||||||
|
"ResolutionAdapterComponent missing injected roots. Assign UI/HPBar root transforms in scene or enable auto collection.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -270,27 +300,46 @@ namespace GeometryTD.CustomComponent
|
||||||
|
|
||||||
private void TryEnsureUiEventSubscribed()
|
private void TryEnsureUiEventSubscribed()
|
||||||
{
|
{
|
||||||
if (_uiEventSubscribed || GameEntry.Event == null)
|
if (GameEntry.Event == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GameEntry.Event.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnUIFormChanged);
|
if (!_uiEventSubscribed)
|
||||||
GameEntry.Event.Subscribe(CloseUIFormCompleteEventArgs.EventId, OnUIFormChanged);
|
{
|
||||||
_uiEventSubscribed = true;
|
GameEntry.Event.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnUIFormChanged);
|
||||||
_canvasCacheDirty = true;
|
GameEntry.Event.Subscribe(CloseUIFormCompleteEventArgs.EventId, OnUIFormChanged);
|
||||||
|
_uiEventSubscribed = true;
|
||||||
|
_canvasCacheDirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_sceneEventSubscribed)
|
||||||
|
{
|
||||||
|
GameEntry.Event.Subscribe(LoadSceneSuccessEventArgs.EventId, OnSceneChanged);
|
||||||
|
_sceneEventSubscribed = true;
|
||||||
|
_canvasCacheDirty = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UnsubscribeUiEvents()
|
private void UnsubscribeUiEvents()
|
||||||
{
|
{
|
||||||
if (!_uiEventSubscribed || GameEntry.Event == null)
|
if (GameEntry.Event == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GameEntry.Event.Unsubscribe(OpenUIFormSuccessEventArgs.EventId, OnUIFormChanged);
|
if (_uiEventSubscribed)
|
||||||
GameEntry.Event.Unsubscribe(CloseUIFormCompleteEventArgs.EventId, OnUIFormChanged);
|
{
|
||||||
_uiEventSubscribed = false;
|
GameEntry.Event.Unsubscribe(OpenUIFormSuccessEventArgs.EventId, OnUIFormChanged);
|
||||||
|
GameEntry.Event.Unsubscribe(CloseUIFormCompleteEventArgs.EventId, OnUIFormChanged);
|
||||||
|
_uiEventSubscribed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_sceneEventSubscribed)
|
||||||
|
{
|
||||||
|
GameEntry.Event.Unsubscribe(LoadSceneSuccessEventArgs.EventId, OnSceneChanged);
|
||||||
|
_sceneEventSubscribed = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnUIFormChanged(object sender, GameEventArgs e)
|
private void OnUIFormChanged(object sender, GameEventArgs e)
|
||||||
|
|
@ -298,6 +347,12 @@ namespace GeometryTD.CustomComponent
|
||||||
_canvasCacheDirty = true;
|
_canvasCacheDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnSceneChanged(object sender, GameEventArgs e)
|
||||||
|
{
|
||||||
|
_canvasCacheDirty = true;
|
||||||
|
_missingRootWarned = false;
|
||||||
|
}
|
||||||
|
|
||||||
private void UpdateMaskLayout()
|
private void UpdateMaskLayout()
|
||||||
{
|
{
|
||||||
if (!_enableBlackMask)
|
if (!_enableBlackMask)
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace CustomComponent
|
||||||
{
|
{
|
||||||
_resource.LoadAsset
|
_resource.LoadAsset
|
||||||
(
|
(
|
||||||
AssetUtility.GetUIDialogAsset(assetName),
|
AssetUtility.GetUISpriteAsset(assetName),
|
||||||
Constant.AssetPriority.UIFormAsset,
|
Constant.AssetPriority.UIFormAsset,
|
||||||
new LoadAssetCallbacks(
|
new LoadAssetCallbacks(
|
||||||
(resourcePath, asset, duration, userData) =>
|
(resourcePath, asset, duration, userData) =>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 99c1d60910f24e37ba0cbd8109e63bd7
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace CustomComponent
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(menuName = "Story/Directive/Change Background", fileName = "Directive_ChangeBackground")]
|
||||||
|
public sealed class StoryChangeBackgroundDirectiveAsset : StoryDirectiveAsset
|
||||||
|
{
|
||||||
|
[SerializeField] private string _backgroundAssetName = string.Empty;
|
||||||
|
|
||||||
|
public override string ActionName => "ChangeBackground";
|
||||||
|
|
||||||
|
public override void Execute(StoryDirectorComponent director)
|
||||||
|
{
|
||||||
|
if (director == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
director.ExecuteChangeBackground(_backgroundAssetName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2d4b16a5d76140a1b952ad48774dd89a
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UI;
|
||||||
|
|
||||||
|
namespace CustomComponent
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public sealed class StoryCombineConfig
|
||||||
|
{
|
||||||
|
public bool AutoStart = true;
|
||||||
|
public List<CombineSlotContext> Slots = new List<CombineSlotContext>();
|
||||||
|
public List<CombinePartContext> Parts = new List<CombinePartContext>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4c53bd314c194677b10a2e7fa754fdbb
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace CustomComponent
|
||||||
|
{
|
||||||
|
public abstract class StoryDirectiveAsset : ScriptableObject
|
||||||
|
{
|
||||||
|
[SerializeField] private bool _enabled = true;
|
||||||
|
|
||||||
|
[SerializeField] private StoryTriggerType _triggerType = StoryTriggerType.DialogCompleted;
|
||||||
|
|
||||||
|
[SerializeField] [Tooltip("DialogCompleted 时为对话 Id;<=0 表示该触发类型下的任意 Id。")]
|
||||||
|
private int _triggerId = 0;
|
||||||
|
|
||||||
|
public bool IsEnabled => _enabled;
|
||||||
|
|
||||||
|
public StoryTriggerType TriggerType => _triggerType;
|
||||||
|
|
||||||
|
public int TriggerId => _triggerId;
|
||||||
|
|
||||||
|
public virtual string ActionName => GetType().Name;
|
||||||
|
|
||||||
|
public bool IsMatch(StoryTriggerType triggerType, int triggerId)
|
||||||
|
{
|
||||||
|
if (!_enabled || _triggerType != triggerType)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (triggerType == StoryTriggerType.DialogCompleted && _triggerId > 0 && _triggerId != triggerId)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void Execute(StoryDirectorComponent director);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2deed2f965a04cbab1c18d2e9b5d5845
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace CustomComponent
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(menuName = "Story/Directive/End Chapter", fileName = "Directive_EndChapter")]
|
||||||
|
public sealed class StoryEndChapterDirectiveAsset : StoryDirectiveAsset
|
||||||
|
{
|
||||||
|
[SerializeField] [Tooltip("<=0 则使用当前章节。")] private int _chapterId = 0;
|
||||||
|
|
||||||
|
public override string ActionName => "EndChapter";
|
||||||
|
|
||||||
|
public override void Execute(StoryDirectorComponent director)
|
||||||
|
{
|
||||||
|
if (director == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
director.ExecuteEndChapter(_chapterId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2b63fb6eb96e4d3193dd26b443f856c7
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace CustomComponent
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(menuName = "Story/Directive/Start Combine", fileName = "Directive_StartCombine")]
|
||||||
|
public sealed class StoryStartCombineDirectiveAsset : StoryDirectiveAsset
|
||||||
|
{
|
||||||
|
[SerializeField] private bool _useDefaultConfig = true;
|
||||||
|
|
||||||
|
[SerializeField] private StoryCombineConfig _combineConfig = new StoryCombineConfig();
|
||||||
|
|
||||||
|
public override string ActionName => "StartCombine";
|
||||||
|
|
||||||
|
public override void Execute(StoryDirectorComponent director)
|
||||||
|
{
|
||||||
|
if (director == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
StoryCombineConfig config = _useDefaultConfig ? null : _combineConfig;
|
||||||
|
director.ExecuteStartCombine(config);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 19a1150cd0fb4b648ad8232de4e38baa
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace CustomComponent
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(menuName = "Story/Directive/Start Dialog", fileName = "Directive_StartDialog")]
|
||||||
|
public sealed class StoryStartDialogDirectiveAsset : StoryDirectiveAsset
|
||||||
|
{
|
||||||
|
[SerializeField] private int _dialogId = 0;
|
||||||
|
|
||||||
|
public override string ActionName => "StartDialog";
|
||||||
|
|
||||||
|
public override void Execute(StoryDirectorComponent director)
|
||||||
|
{
|
||||||
|
if (director == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
director.ExecuteStartDialog(_dialogId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8e4367863f5042e1b5b0b3b3b7f62f5e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace CustomComponent
|
||||||
|
{
|
||||||
|
public enum StoryTriggerType
|
||||||
|
{
|
||||||
|
DialogCompleted = 0,
|
||||||
|
CombineCompleted = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2b9d79013962410681f2f29343902599
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,358 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Definition.Enum;
|
||||||
|
using Event;
|
||||||
|
using UI;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityGameFramework.Runtime;
|
||||||
|
|
||||||
|
namespace CustomComponent
|
||||||
|
{
|
||||||
|
[DisallowMultipleComponent]
|
||||||
|
public class StoryDirectorComponent : GameFrameworkComponent
|
||||||
|
{
|
||||||
|
[SerializeField] [Tooltip("按顺序执行。每个元素是一个 StoryDirectiveAsset 资产引用。")]
|
||||||
|
private List<StoryDirectiveAsset> _directives = new List<StoryDirectiveAsset>();
|
||||||
|
|
||||||
|
[SerializeField] private bool _allowRepeatTrigger = false;
|
||||||
|
|
||||||
|
[SerializeField] private bool _verboseLog = true;
|
||||||
|
|
||||||
|
[SerializeField] private string _backgroundAssetNamePrefix = string.Empty;
|
||||||
|
|
||||||
|
private readonly HashSet<string> _consumedDirectiveTokens = new HashSet<string>();
|
||||||
|
|
||||||
|
private BgFormController _bgFormController;
|
||||||
|
private int _bgRequestVersion;
|
||||||
|
private bool _isExecuting;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
GameEntry.Event.Subscribe(DialogCompletedEventArgs.EventId, OnDialogCompleted);
|
||||||
|
GameEntry.Event.Subscribe(CombineCompletedEventArgs.EventId, OnCombineCompleted);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
GameEntry.Event.Unsubscribe(DialogCompletedEventArgs.EventId, OnDialogCompleted);
|
||||||
|
GameEntry.Event.Unsubscribe(CombineCompletedEventArgs.EventId, OnCombineCompleted);
|
||||||
|
|
||||||
|
_bgFormController?.CloseUI();
|
||||||
|
_bgFormController = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetConsumedDirectives()
|
||||||
|
{
|
||||||
|
_consumedDirectiveTokens.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDialogCompleted(object sender, GameFramework.Event.GameEventArgs e)
|
||||||
|
{
|
||||||
|
if (!(e is DialogCompletedEventArgs args))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ExecuteDirectives(StoryTriggerType.DialogCompleted, args.DialogId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCombineCompleted(object sender, GameFramework.Event.GameEventArgs e)
|
||||||
|
{
|
||||||
|
if (!(e is CombineCompletedEventArgs))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ExecuteDirectives(StoryTriggerType.CombineCompleted, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExecuteDirectives(StoryTriggerType triggerType, int triggerId)
|
||||||
|
{
|
||||||
|
if (_isExecuting)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_isExecuting = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
for (int i = 0; i < _directives.Count; i++)
|
||||||
|
{
|
||||||
|
StoryDirectiveAsset directive = _directives[i];
|
||||||
|
if (directive == null || !directive.IsMatch(triggerType, triggerId))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
string directiveToken = BuildDirectiveToken(directive, i);
|
||||||
|
if (!_allowRepeatTrigger && _consumedDirectiveTokens.Contains(directiveToken))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ExecuteDirective(directive, triggerType, triggerId);
|
||||||
|
|
||||||
|
if (!_allowRepeatTrigger)
|
||||||
|
{
|
||||||
|
_consumedDirectiveTokens.Add(directiveToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_isExecuting = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string BuildDirectiveToken(StoryDirectiveAsset directive, int directiveIndex)
|
||||||
|
{
|
||||||
|
return $"{directive.GetInstanceID()}:{directiveIndex}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExecuteDirective(StoryDirectiveAsset directive, StoryTriggerType triggerType, int triggerId)
|
||||||
|
{
|
||||||
|
directive.Execute(this);
|
||||||
|
|
||||||
|
if (_verboseLog)
|
||||||
|
{
|
||||||
|
Log.Info("StoryDirector executed action '{0}' by trigger '{1}' ({2}).",
|
||||||
|
directive.ActionName, triggerType.ToString(), triggerId.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ExecuteStartDialog(int dialogId)
|
||||||
|
{
|
||||||
|
if (dialogId <= 0)
|
||||||
|
{
|
||||||
|
Log.Warning("StoryDirector start dialog skipped. dialogId must be positive.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GameEntry.Dialog == null)
|
||||||
|
{
|
||||||
|
Log.Warning("StoryDirector start dialog failed. Dialog component is missing.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GameEntry.Dialog.StartDialog(dialogId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ExecuteStartCombine(StoryCombineConfig config)
|
||||||
|
{
|
||||||
|
if (GameEntry.Combine == null)
|
||||||
|
{
|
||||||
|
Log.Warning("StoryDirector start combine failed. Combine component is missing.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CombineFormContext context = BuildCombineFormContext(config);
|
||||||
|
int? formSerialId = GameEntry.Combine.StartLevel(context);
|
||||||
|
if (!formSerialId.HasValue)
|
||||||
|
{
|
||||||
|
Log.Warning("StoryDirector start combine failed. Open combine UI failed.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ExecuteChangeBackground(string backgroundAssetName)
|
||||||
|
{
|
||||||
|
string assetName = string.IsNullOrWhiteSpace(backgroundAssetName)
|
||||||
|
? string.Empty
|
||||||
|
: backgroundAssetName.Trim();
|
||||||
|
if (string.IsNullOrEmpty(assetName))
|
||||||
|
{
|
||||||
|
Log.Warning("StoryDirector change background skipped. assetName is empty.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GameEntry.SpriteCache == null)
|
||||||
|
{
|
||||||
|
Log.Warning("StoryDirector change background failed. SpriteCache component is missing.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int requestVersion = ++_bgRequestVersion;
|
||||||
|
GameEntry.SpriteCache.GetSprite(_backgroundAssetNamePrefix + assetName,
|
||||||
|
sprite => { OnBackgroundLoaded(requestVersion, assetName, sprite); });
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnBackgroundLoaded(int requestVersion, string assetName, Sprite sprite)
|
||||||
|
{
|
||||||
|
if (requestVersion != _bgRequestVersion)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sprite == null)
|
||||||
|
{
|
||||||
|
Log.Warning("StoryDirector change background failed. Loaded sprite is null for '{0}'.", assetName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_bgFormController == null)
|
||||||
|
{
|
||||||
|
_bgFormController = new BgFormController();
|
||||||
|
}
|
||||||
|
|
||||||
|
_bgFormController.OpenUI(new BgFormContext
|
||||||
|
{
|
||||||
|
Sprite = sprite
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ExecuteEndChapter(int chapterId)
|
||||||
|
{
|
||||||
|
int finalChapterId = chapterId > 0
|
||||||
|
? chapterId
|
||||||
|
: (GameEntry.Dialog != null ? GameEntry.Dialog.CurrentChapterId : 0);
|
||||||
|
|
||||||
|
GameEntry.Event.Fire(this, StoryChapterEndedEventArgs.Create(finalChapterId));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static CombineFormContext BuildCombineFormContext(StoryCombineConfig config)
|
||||||
|
{
|
||||||
|
if (config != null && config.Slots != null && config.Slots.Count > 0)
|
||||||
|
{
|
||||||
|
return new CombineFormContext
|
||||||
|
{
|
||||||
|
Slots = CloneSlots(config.Slots),
|
||||||
|
Parts = CloneParts(config.Parts),
|
||||||
|
AutoStart = config.AutoStart
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return BuildDefaultCombineContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<CombineSlotContext> CloneSlots(List<CombineSlotContext> source)
|
||||||
|
{
|
||||||
|
var result = new List<CombineSlotContext>();
|
||||||
|
if (source == null)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < source.Count; i++)
|
||||||
|
{
|
||||||
|
CombineSlotContext slot = source[i];
|
||||||
|
if (slot == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Add(new CombineSlotContext
|
||||||
|
{
|
||||||
|
RequiredPartType = slot.RequiredPartType,
|
||||||
|
BuildOrder = slot.BuildOrder,
|
||||||
|
RequireStrictOrder = slot.RequireStrictOrder,
|
||||||
|
AnchoredPosition = slot.AnchoredPosition,
|
||||||
|
SizeDelta = slot.SizeDelta,
|
||||||
|
MechanicsExplanation = slot.MechanicsExplanation,
|
||||||
|
MismatchHint = slot.MismatchHint
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<CombinePartContext> CloneParts(List<CombinePartContext> source)
|
||||||
|
{
|
||||||
|
var result = new List<CombinePartContext>();
|
||||||
|
if (source == null)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < source.Count; i++)
|
||||||
|
{
|
||||||
|
CombinePartContext part = source[i];
|
||||||
|
if (part == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Add(new CombinePartContext
|
||||||
|
{
|
||||||
|
PartType = part.PartType,
|
||||||
|
PartDisplayName = part.PartDisplayName,
|
||||||
|
MechanicsExplanation = part.MechanicsExplanation,
|
||||||
|
LockAfterPlaced = part.LockAfterPlaced
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static CombineFormContext BuildDefaultCombineContext()
|
||||||
|
{
|
||||||
|
List<CombineSlotContext> slots = new List<CombineSlotContext>
|
||||||
|
{
|
||||||
|
new CombineSlotContext
|
||||||
|
{
|
||||||
|
RequiredPartType = CombinePartType.Dou,
|
||||||
|
BuildOrder = 0,
|
||||||
|
RequireStrictOrder = true,
|
||||||
|
AnchoredPosition = new Vector2(-320f, -160f),
|
||||||
|
SizeDelta = new Vector2(120f, 120f),
|
||||||
|
MechanicsExplanation = "Dou transfers upper load and works as the base node."
|
||||||
|
},
|
||||||
|
new CombineSlotContext
|
||||||
|
{
|
||||||
|
RequiredPartType = CombinePartType.Sheng,
|
||||||
|
BuildOrder = 1,
|
||||||
|
RequireStrictOrder = true,
|
||||||
|
AnchoredPosition = new Vector2(-320f, -20f),
|
||||||
|
SizeDelta = new Vector2(120f, 120f),
|
||||||
|
MechanicsExplanation = "Sheng raises layer height to form the bracket hierarchy."
|
||||||
|
},
|
||||||
|
new CombineSlotContext
|
||||||
|
{
|
||||||
|
RequiredPartType = CombinePartType.Gong,
|
||||||
|
BuildOrder = 2,
|
||||||
|
RequireStrictOrder = true,
|
||||||
|
AnchoredPosition = new Vector2(-320f, 120f),
|
||||||
|
SizeDelta = new Vector2(120f, 120f),
|
||||||
|
MechanicsExplanation = "Gong spreads force laterally through overhang."
|
||||||
|
},
|
||||||
|
new CombineSlotContext
|
||||||
|
{
|
||||||
|
RequiredPartType = CombinePartType.Qiao,
|
||||||
|
BuildOrder = 3,
|
||||||
|
RequireStrictOrder = true,
|
||||||
|
AnchoredPosition = new Vector2(-160f, 120f),
|
||||||
|
SizeDelta = new Vector2(120f, 120f),
|
||||||
|
MechanicsExplanation = "Qiao continues force transfer to the outer side."
|
||||||
|
},
|
||||||
|
new CombineSlotContext
|
||||||
|
{
|
||||||
|
RequiredPartType = CombinePartType.Ang,
|
||||||
|
BuildOrder = 4,
|
||||||
|
RequireStrictOrder = true,
|
||||||
|
AnchoredPosition = new Vector2(0f, 120f),
|
||||||
|
SizeDelta = new Vector2(120f, 120f),
|
||||||
|
MechanicsExplanation = "Ang uses leverage to redirect eave load inward."
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
List<CombinePartContext> parts = new List<CombinePartContext>
|
||||||
|
{
|
||||||
|
new CombinePartContext
|
||||||
|
{ PartType = CombinePartType.Dou, PartDisplayName = "Dou", LockAfterPlaced = true },
|
||||||
|
new CombinePartContext
|
||||||
|
{ PartType = CombinePartType.Sheng, PartDisplayName = "Sheng", LockAfterPlaced = true },
|
||||||
|
new CombinePartContext
|
||||||
|
{ PartType = CombinePartType.Gong, PartDisplayName = "Gong", LockAfterPlaced = true },
|
||||||
|
new CombinePartContext
|
||||||
|
{ PartType = CombinePartType.Qiao, PartDisplayName = "Qiao", LockAfterPlaced = true },
|
||||||
|
new CombinePartContext
|
||||||
|
{ PartType = CombinePartType.Ang, PartDisplayName = "Ang", LockAfterPlaced = true }
|
||||||
|
};
|
||||||
|
|
||||||
|
return new CombineFormContext
|
||||||
|
{
|
||||||
|
Slots = slots,
|
||||||
|
Parts = parts,
|
||||||
|
AutoStart = true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d899fa8b1598c1846bc3a03d11c83d04
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
using GameFramework;
|
||||||
|
using GameFramework.Event;
|
||||||
|
|
||||||
|
namespace Event
|
||||||
|
{
|
||||||
|
public class DialogCompletedEventArgs : GameEventArgs
|
||||||
|
{
|
||||||
|
public static readonly int EventId = typeof(DialogCompletedEventArgs).GetHashCode();
|
||||||
|
|
||||||
|
public override int Id => EventId;
|
||||||
|
|
||||||
|
public int ChapterId { get; private set; }
|
||||||
|
|
||||||
|
public int DialogId { get; private set; }
|
||||||
|
|
||||||
|
public int LastLineId { get; private set; }
|
||||||
|
|
||||||
|
public DialogCompletedEventArgs()
|
||||||
|
{
|
||||||
|
ChapterId = 0;
|
||||||
|
DialogId = 0;
|
||||||
|
LastLineId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DialogCompletedEventArgs Create(int chapterId, int dialogId, int lastLineId)
|
||||||
|
{
|
||||||
|
var args = ReferencePool.Acquire<DialogCompletedEventArgs>();
|
||||||
|
|
||||||
|
args.ChapterId = chapterId;
|
||||||
|
args.DialogId = dialogId;
|
||||||
|
args.LastLineId = lastLineId;
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Clear()
|
||||||
|
{
|
||||||
|
ChapterId = 0;
|
||||||
|
DialogId = 0;
|
||||||
|
LastLineId = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ff3fd581bec19164c8c5b03222e0ccec
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0cc1868d04d452c4ea1b26b3bb3faf41
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
using GameFramework;
|
||||||
|
using GameFramework.Event;
|
||||||
|
|
||||||
|
namespace Event
|
||||||
|
{
|
||||||
|
public class StoryChapterEndedEventArgs : GameEventArgs
|
||||||
|
{
|
||||||
|
public static readonly int EventId = typeof(StoryChapterEndedEventArgs).GetHashCode();
|
||||||
|
|
||||||
|
public override int Id => EventId;
|
||||||
|
|
||||||
|
public int ChapterId { get; private set; }
|
||||||
|
|
||||||
|
public StoryChapterEndedEventArgs()
|
||||||
|
{
|
||||||
|
ChapterId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StoryChapterEndedEventArgs Create(int chapterId)
|
||||||
|
{
|
||||||
|
var args = ReferencePool.Acquire<StoryChapterEndedEventArgs>();
|
||||||
|
args.ChapterId = chapterId;
|
||||||
|
return args;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Clear()
|
||||||
|
{
|
||||||
|
ChapterId = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 04884ea6e03d99345b9e4a9c60ccf913
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -66,9 +66,9 @@ namespace CustomUtility
|
||||||
return Utility.Text.Format("Assets/GameMain/UI/UISounds/{0}.wav", assetName);
|
return Utility.Text.Format("Assets/GameMain/UI/UISounds/{0}.wav", assetName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetUIDialogAsset(string assetName)
|
public static string GetUISpriteAsset(string assetName)
|
||||||
{
|
{
|
||||||
return Utility.Text.Format("Assets/GameMain/UI/Dialogs/{0}.prefab", assetName);
|
return Utility.Text.Format("Assets/GameMain/UI/{0}", assetName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f3d9a754557829043909b803afc50822
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
%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: 2d4b16a5d76140a1b952ad48774dd89a, type: 3}
|
||||||
|
m_Name: BG1001
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_enabled: 1
|
||||||
|
_triggerType: 0
|
||||||
|
_triggerId: 1001
|
||||||
|
_backgroundAssetName: BG_1.jpg
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fbe72cf66cec3ad4e9fb3167b291ce4f
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
%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: 8e4367863f5042e1b5b0b3b3b7f62f5e, type: 3}
|
||||||
|
m_Name: Dialog1001
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_enabled: 1
|
||||||
|
_triggerType: 0
|
||||||
|
_triggerId: 1001
|
||||||
|
_dialogId: 1002
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a6031366dd068b84b9797525616de223
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -525,8 +525,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 250, y: -40}
|
m_AnchoredPosition: {x: 200, y: -40}
|
||||||
m_SizeDelta: {x: 500, y: 80}
|
m_SizeDelta: {x: 400, y: 80}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!1 &4514918814497795030
|
--- !u!1 &4514918814497795030
|
||||||
GameObject:
|
GameObject:
|
||||||
|
|
@ -835,10 +835,10 @@ MonoBehaviour:
|
||||||
m_faceColor:
|
m_faceColor:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
rgba: 4294967295
|
rgba: 4294967295
|
||||||
m_fontSize: 80
|
m_fontSize: 72
|
||||||
m_fontSizeBase: 80
|
m_fontSizeBase: 80
|
||||||
m_fontWeight: 400
|
m_fontWeight: 400
|
||||||
m_enableAutoSizing: 0
|
m_enableAutoSizing: 1
|
||||||
m_fontSizeMin: 18
|
m_fontSizeMin: 18
|
||||||
m_fontSizeMax: 72
|
m_fontSizeMax: 72
|
||||||
m_fontStyle: 1
|
m_fontStyle: 1
|
||||||
|
|
@ -987,5 +987,5 @@ RectTransform:
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 1, y: 0}
|
m_AnchorMax: {x: 1, y: 0}
|
||||||
m_AnchoredPosition: {x: 0, y: 280}
|
m_AnchoredPosition: {x: 0, y: 280}
|
||||||
m_SizeDelta: {x: 0, y: 380}
|
m_SizeDelta: {x: -200, y: 380}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 2.1 MiB After Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 138 KiB |
|
|
@ -0,0 +1,149 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 77968dfed7b61334db617d490bb05477
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 2
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: brush_white_0
|
||||||
|
rect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 7
|
||||||
|
width: 600
|
||||||
|
height: 160
|
||||||
|
alignment: 0
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
tessellationDetail: 0
|
||||||
|
bones: []
|
||||||
|
spriteID: eaadb4ab1e82b3a47970d20bef28d0c0
|
||||||
|
internalID: -423439662
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable:
|
||||||
|
brush_white_0: -423439662
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -122,6 +122,52 @@ NavMeshSettings:
|
||||||
debug:
|
debug:
|
||||||
m_Flags: 0
|
m_Flags: 0
|
||||||
m_NavMeshData: {fileID: 0}
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &51490593
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 51490594}
|
||||||
|
- component: {fileID: 51490595}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: SpriteCache
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &51490594
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 51490593}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 119167776}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &51490595
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 51490593}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 42b4751aefa33c545a86f146a48536ee, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_pixelsPerUnit: 100
|
||||||
|
_defaultPivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!1 &119167775
|
--- !u!1 &119167775
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -156,6 +202,8 @@ Transform:
|
||||||
- {fileID: 434859534}
|
- {fileID: 434859534}
|
||||||
- {fileID: 1064285105}
|
- {fileID: 1064285105}
|
||||||
- {fileID: 1402371486}
|
- {fileID: 1402371486}
|
||||||
|
- {fileID: 2000155822}
|
||||||
|
- {fileID: 51490594}
|
||||||
m_Father: {fileID: 1852670053}
|
m_Father: {fileID: 1852670053}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &120093239
|
--- !u!1 &120093239
|
||||||
|
|
@ -248,143 +296,6 @@ MonoBehaviour:
|
||||||
m_PointerBehavior: 0
|
m_PointerBehavior: 0
|
||||||
m_CursorLockBehavior: 0
|
m_CursorLockBehavior: 0
|
||||||
m_ScrollDeltaPerTick: 6
|
m_ScrollDeltaPerTick: 6
|
||||||
--- !u!1 &188380256
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 188380260}
|
|
||||||
- component: {fileID: 188380259}
|
|
||||||
- component: {fileID: 188380258}
|
|
||||||
- component: {fileID: 188380257}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Camera
|
|
||||||
m_TagString: MainCamera
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!114 &188380257
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 188380256}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_RenderShadows: 1
|
|
||||||
m_RequiresDepthTextureOption: 2
|
|
||||||
m_RequiresOpaqueTextureOption: 2
|
|
||||||
m_CameraType: 0
|
|
||||||
m_Cameras: []
|
|
||||||
m_RendererIndex: -1
|
|
||||||
m_VolumeLayerMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 1
|
|
||||||
m_VolumeTrigger: {fileID: 0}
|
|
||||||
m_VolumeFrameworkUpdateModeOption: 2
|
|
||||||
m_RenderPostProcessing: 0
|
|
||||||
m_Antialiasing: 0
|
|
||||||
m_AntialiasingQuality: 2
|
|
||||||
m_StopNaN: 0
|
|
||||||
m_Dithering: 0
|
|
||||||
m_ClearDepth: 1
|
|
||||||
m_AllowXRRendering: 1
|
|
||||||
m_AllowHDROutput: 1
|
|
||||||
m_UseScreenCoordOverride: 0
|
|
||||||
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_RequiresDepthTexture: 0
|
|
||||||
m_RequiresColorTexture: 0
|
|
||||||
m_Version: 2
|
|
||||||
m_TaaSettings:
|
|
||||||
m_Quality: 3
|
|
||||||
m_FrameInfluence: 0.1
|
|
||||||
m_JitterScale: 1
|
|
||||||
m_MipBias: 0
|
|
||||||
m_VarianceClampScale: 0.9
|
|
||||||
m_ContrastAdaptiveSharpening: 0
|
|
||||||
--- !u!81 &188380258
|
|
||||||
AudioListener:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 188380256}
|
|
||||||
m_Enabled: 1
|
|
||||||
--- !u!20 &188380259
|
|
||||||
Camera:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 188380256}
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 2
|
|
||||||
m_ClearFlags: 1
|
|
||||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
|
||||||
m_projectionMatrixMode: 1
|
|
||||||
m_GateFitMode: 2
|
|
||||||
m_FOVAxisMode: 0
|
|
||||||
m_Iso: 200
|
|
||||||
m_ShutterSpeed: 0.005
|
|
||||||
m_Aperture: 16
|
|
||||||
m_FocusDistance: 10
|
|
||||||
m_FocalLength: 50
|
|
||||||
m_BladeCount: 5
|
|
||||||
m_Curvature: {x: 2, y: 11}
|
|
||||||
m_BarrelClipping: 0.25
|
|
||||||
m_Anamorphism: 0
|
|
||||||
m_SensorSize: {x: 36, y: 24}
|
|
||||||
m_LensShift: {x: 0, y: 0}
|
|
||||||
m_NormalizedViewPortRect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 0
|
|
||||||
y: 0
|
|
||||||
width: 1
|
|
||||||
height: 1
|
|
||||||
near clip plane: 0.3
|
|
||||||
far clip plane: 100
|
|
||||||
field of view: 60
|
|
||||||
orthographic: 0
|
|
||||||
orthographic size: 5
|
|
||||||
m_Depth: 0
|
|
||||||
m_CullingMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_RenderingPath: -1
|
|
||||||
m_TargetTexture: {fileID: 0}
|
|
||||||
m_TargetDisplay: 0
|
|
||||||
m_TargetEye: 3
|
|
||||||
m_HDR: 1
|
|
||||||
m_AllowMSAA: 1
|
|
||||||
m_AllowDynamicResolution: 0
|
|
||||||
m_ForceIntoRT: 0
|
|
||||||
m_OcclusionCulling: 1
|
|
||||||
m_StereoConvergence: 10
|
|
||||||
m_StereoSeparation: 0.022
|
|
||||||
--- !u!4 &188380260
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 188380256}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!4 &192213471 stripped
|
--- !u!4 &192213471 stripped
|
||||||
Transform:
|
Transform:
|
||||||
m_CorrespondingSourceObject: {fileID: 430602, guid: adb3eb1c35fcff14f89fba7b05c9d71c,
|
m_CorrespondingSourceObject: {fileID: 430602, guid: adb3eb1c35fcff14f89fba7b05c9d71c,
|
||||||
|
|
@ -1184,6 +1095,7 @@ MonoBehaviour:
|
||||||
_referenceResolution: {x: 2048, y: 1152}
|
_referenceResolution: {x: 2048, y: 1152}
|
||||||
_adaptUiCanvasToViewport: 1
|
_adaptUiCanvasToViewport: 1
|
||||||
_enableBlackMask: 1
|
_enableBlackMask: 1
|
||||||
|
_autoCollectSceneCanvases: 1
|
||||||
_uiRoots:
|
_uiRoots:
|
||||||
- {fileID: 934951765}
|
- {fileID: 934951765}
|
||||||
--- !u!1 &1852670052
|
--- !u!1 &1852670052
|
||||||
|
|
@ -1263,10 +1175,59 @@ Transform:
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 119167776}
|
m_Father: {fileID: 119167776}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &2000155821
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2000155822}
|
||||||
|
- component: {fileID: 2000155823}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: StroyDirector
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &2000155822
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2000155821}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 119167776}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &2000155823
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2000155821}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d899fa8b1598c1846bc3a03d11c83d04, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_directives:
|
||||||
|
- {fileID: 11400000, guid: fbe72cf66cec3ad4e9fb3167b291ce4f, type: 2}
|
||||||
|
- {fileID: 11400000, guid: a6031366dd068b84b9797525616de223, type: 2}
|
||||||
|
_allowRepeatTrigger: 0
|
||||||
|
_verboseLog: 1
|
||||||
|
_backgroundAssetNamePrefix: UISprites/Background/
|
||||||
--- !u!1660057539 &9223372036854775807
|
--- !u!1660057539 &9223372036854775807
|
||||||
SceneRoots:
|
SceneRoots:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_Roots:
|
m_Roots:
|
||||||
- {fileID: 1852670053}
|
- {fileID: 1852670053}
|
||||||
- {fileID: 120093242}
|
- {fileID: 120093242}
|
||||||
- {fileID: 188380260}
|
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,9 @@
|
||||||
# int string DialogUIMode int
|
# int string DialogUIMode int
|
||||||
# 对话编号 策划备注 对话标识 对话形式 章节编号
|
# 对话编号 策划备注 对话标识 对话形式 章节编号
|
||||||
1001 第一章介绍 Ch1_Time01 Mask 1.001
|
1001 第一章介绍 Ch1_Time01 Mask 1.001
|
||||||
1002 第一章主流程 Ch1_Dialog_LiJie01 BottomBox 1.002
|
1002 第一章主流程 Ch1_LiJie BottomBox 1.002
|
||||||
1003 第一章玩法开始前闲聊 Ch1_Dialog_Foreman01 BottomBox 1.003
|
1003 Ch1_Narrator01 BottomBox 1.003
|
||||||
1004 Ch1_Dialog_LiJie02 BottomBox 1.004
|
1004 Ch1_Dialog_LiJie03 BottomBox 1.004
|
||||||
1005 Ch1_Dialog_Foreman02 BottomBox 1.005
|
|
||||||
1006 Ch1_Narrator01 BottomBox 1.006
|
|
||||||
1007 Ch1_Dialog_LiJie03 BottomBox 1.007
|
|
||||||
1008 Ch1_Dialog_Player01 BottomBox 1.008
|
1008 Ch1_Dialog_Player01 BottomBox 1.008
|
||||||
1009 Ch1_Dialog_LiJie04 BottomBox 1.009
|
1009 Ch1_Dialog_LiJie04 BottomBox 1.009
|
||||||
1010 Ch1_Dialog_LiJie05 BottomBox 1.01
|
1010 Ch1_Dialog_LiJie05 BottomBox 1.01
|
||||||
|
|
|
||||||
BIN
数据表/Dialog.xlsx
|
|
@ -4,51 +4,51 @@
|
||||||
# 对话行编号 策划备注 说话人Id 表情 显示人名 说话朝向 说话内容 演出效果 章节Id 对话Id
|
# 对话行编号 策划备注 说话人Id 表情 显示人名 说话朝向 说话内容 演出效果 章节Id 对话Id
|
||||||
100100001 Id规则为 Time None 时间 0 元祐七年,北宋汴京。 None 1.00100001 1001.00001
|
100100001 Id规则为 Time None 时间 0 元祐七年,北宋汴京。 None 1.00100001 1001.00001
|
||||||
100200001 第1位数为章节Id LiJie None 李诫 0 工头呢,工头呢,这是发生的什么事! None 1.00200001 1002.00001
|
100200001 第1位数为章节Id LiJie None 李诫 0 工头呢,工头呢,这是发生的什么事! None 1.00200001 1002.00001
|
||||||
100300001 第2-4位数为对话Id GongTou None 工头 0 李官人啊,这...,我也不知...,啊! None 1.00300001 1003.00001
|
100200002 第2-4位数为对话Id GongTou None 工头 1 李官人啊,这...,我也不知...,啊! None 1.00200002 1002.00002
|
||||||
100300002 第5-9位数为对话行Id GongTou None 工头 0 定是那可恶的老鼠将这木材咬了去,或是这阴雨的天气染湿了榫头...。 None 1.00300002 1003.00002
|
100200003 第5-9位数为对话行Id GongTou None 工头 1 定是那可恶的老鼠将这木材咬了去,或是这阴雨的天气染湿了榫头...。 None 1.00200003 1002.00003
|
||||||
100400001 LiJie None 李诫 0 那这木制松软、一掰就弯的木材是什么,我又不是不认识, None 1.00400001 1004.00001
|
100200004 LiJie None 李诫 0 那这木制松软、一掰就弯的木材是什么,我又不是不认识, None 1.00200004 1002.00004
|
||||||
100400002 LiJie None 李诫 0 大殿建筑用的都是上好的楠木,那这柳木是哪里来的你解释下。 None 1.00400002 1004.00002
|
100200005 LiJie None 李诫 0 大殿建筑用的都是上好的楠木,那这柳木是哪里来的你解释下。 None 1.00200005 1002.00005
|
||||||
100500001 GongTou None 工头 0 这...定是工人中出现了偷鸡摸狗的小人,李官人大可放心, None 1.00500001 1005.00001
|
100200006 GongTou None 工头 1 这...定是工人中出现了偷鸡摸狗的小人,李官人大可放心, None 1.00200006 1002.00006
|
||||||
100500002 GongTou None 工头 0 我一定将这小人找出来...。 None 1.00500002 1005.00002
|
100200007 GongTou None 工头 1 我一定将这小人找出来...。 None 1.00200007 1002.00007
|
||||||
100600001 Other None 旁白 0 你是新入将作监的画图令史,今日正是你当值的第一天。 None 1.00600001 1006.00001
|
100300001 Other None 旁白 0 你是新入将作监的画图令史,今日正是你当值的第一天。 None 1.00300001 1003.00001
|
||||||
100700001 LiJie None 李诫 0 你便是新任的画图令史? None 1.00700001 1007.00001
|
100300002 LiJie None 李诫 1 你便是新任的画图令史? None 1.00300002 1003.00002
|
||||||
100700002 LiJie None 李诫 0 来得正好。 None 1.00700002 1007.00002
|
100300003 LiJie None 李诫 1 来得正好。 None 1.00300003 1003.00003
|
||||||
100800001 Player None 玩家 0 属下正是,见过李主簿。 None 1.00800001 1008.00001
|
100300004 Player None 玩家 0 属下正是,见过李主簿。 None 1.00300004 1003.00004
|
||||||
100900001 LiJie None 李诫 0 方才工地塌架,你也有所耳闻。 None 1.00900001 1009.00001
|
100300005 LiJie None 李诫 1 方才工地塌架,你也有所耳闻。 None 1.00300005 1003.00005
|
||||||
100900002 LiJie None 李诫 0 这工头竟拿柳木来替代楠木,企图瞒天过海,结果却落得如此下场, None 1.00900002 1009.00002
|
100300006 LiJie None 李诫 1 这工头竟拿柳木来替代楠木,企图瞒天过海,结果却落得如此下场, None 1.00300006 1003.00006
|
||||||
100900003 LiJie None 李诫 0 幸好方才无人员伤亡,才让这工头躲过一劫。 None 1.00900003 1009.00003
|
100300007 LiJie None 李诫 1 幸好方才无人员伤亡,才让这工头躲过一劫。 None 1.00300007 1003.00007
|
||||||
101000001 LiJie None 李诫 0 如今营造无尺、用料无度,劣木充良、偷工减料已成大患。 None 1.01000001 1010.00001
|
100300008 LiJie None 李诫 1 如今营造无尺、用料无度,劣木充良、偷工减料已成大患。 None 1.00300008 1003.00008
|
||||||
101000002 LiJie None 李诫 0 而我们的职责,就是尽早发现这般祸患,防止酿成更大的问题。 None 1.01000002 1010.00002
|
100300009 LiJie None 李诫 1 而我们的职责,就是尽早发现这般祸患,防止酿成更大的问题。 None 1.00300009 1003.00009
|
||||||
101100001 LiJie None 李诫 0 无规矩,则屋不立;无准绳,则工不正。 None 1.01100001 1011.00001
|
100300010 LiJie None 李诫 1 无规矩,则屋不立;无准绳,则工不正。 None 1.0030001 1003.0001
|
||||||
101100002 LiJie None 李诫 0 你也要牢记。 None 1.01100002 1011.00002
|
100300011 LiJie None 李诫 1 你也要牢记。 None 1.00300011 1003.00011
|
||||||
101200001 Player None 玩家 0 是,李主簿。 None 1.01200001 1012.00001
|
100300012 Player None 玩家 0 是,李主簿。 None 1.00300012 1003.00012
|
||||||
101300001 LiJie None 李诫 0 你既为画图令史,第一要务便是识木、辨材、熟用器具。 None 1.01300001 1013.00001
|
100300013 LiJie None 李诫 1 你既为画图令史,第一要务便是识木、辨材、熟用器具。 None 1.00300013 1003.00013
|
||||||
101400001 LiJie None 李诫 0 现在随我去库房,我来带你认识水准、绳墨、曲尺、方斗这些营造根本之器。 None 1.01400001 1014.00001
|
100300014 LiJie None 李诫 1 现在随我去库房,我来带你认识水准、绳墨、曲尺、方斗这些营造根本之器。 None 1.00300014 1003.00014
|
||||||
101500001 LiJie None 李诫 0 待你熟习测量与料例,我便亲自带你到工地监工核验,杜绝此类祸事再发。 None 1.01500001 1015.00001
|
100300015 LiJie None 李诫 1 待你熟习测量与料例,我便亲自带你到工地监工核验,杜绝此类祸事再发。 None 1.00300015 1003.00015
|
||||||
101600001 Player None 玩家 0 属下遵命。 None 1.01600001 1016.00001
|
100300016 Player None 玩家 0 属下遵命。 None 1.00300016 1003.00016
|
||||||
101700001 Other None 旁白 0 你正式踏入将作监,一段以法度正营造的历程,自此开始。 None 1.01700001 1017.00001
|
100300017 Other None 旁白 0 你正式踏入将作监,一段以法度正营造的历程,自此开始。 None 1.00300017 1003.00017
|
||||||
101800001 LiJie None 李诫 0 这里是库房,存放着营造时用到的所有工具。 None 1.01800001 1018.00001
|
100400001 LiJie None 李诫 1 这里是库房,存放着营造时用到的所有工具。 None 1.00400001 1004.00001
|
||||||
101900001 Subtitle None 字幕 0 檀木质地,刻度以朱砂标注,一端为方、一端为折,刻有 “材份” 刻度。 None 1.01900001 1019.00001
|
100400002 Subtitle None 字幕 0 檀木质地,刻度以朱砂标注,一端为方、一端为折,刻有 “材份” 刻度。 None 1.00400002 1004.00002
|
||||||
102000001 LiJie None 李诫 0 你看,构屋先定 “方”,柱枋是否垂直、斗拱是否方正,全凭这曲尺核验。 None 1.02000001 1020.00001
|
100400003 LiJie None 李诫 1 你看,构屋先定 “方”,柱枋是否垂直、斗拱是否方正,全凭这曲尺核验。 None 1.00400003 1004.00003
|
||||||
102100001 LiJie None 李诫 0 此前工地偷换木料,若早以曲尺量其形制,便知柳木径寸不足,断断用不得啊。 None 1.02100001 1021.00001
|
100400004 LiJie None 李诫 1 此前工地偷换木料,若早以曲尺量其形制,便知柳木径寸不足,断断用不得啊。 None 1.00400004 1004.00004
|
||||||
102200001 LiJie None 李诫 0 此乃方斗,也叫墨斗,配绳墨使用。 None 1.02200001 1022.00001
|
100400005 LiJie None 李诫 1 此乃方斗,也叫墨斗,配绳墨使用。 None 1.00400005 1004.00005
|
||||||
102200002 LiJie None 李诫 0 绳墨牵直,以墨斗弹线,便知木料是否平直、墙体是否端正。 None 1.02200002 1022.00002
|
100400006 LiJie None 李诫 1 绳墨牵直,以墨斗弹线,便知木料是否平直、墙体是否端正。 None 1.00400006 1004.00006
|
||||||
102300001 Subtitle None 字幕 0 方斗为楠木所制,斗身刻 “将作监” 款识,墨仓密封,绳墨以生丝浸松烟墨制成,耐磨不褪。 None 1.02300001 1023.00001
|
100400007 Subtitle None 字幕 0 方斗为楠木所制,斗身刻 “将作监” 款识,墨仓密封,绳墨以生丝浸松烟墨制成,耐磨不褪。 None 1.00400007 1004.00007
|
||||||
102400001 LiJie None 李诫 0 营造之事,“直” 为要。 None 1.02400001 1024.00001
|
100400008 LiJie None 李诫 1 营造之事,“直” 为要。 None 1.00400008 1004.00008
|
||||||
102400002 LiJie None 李诫 0 工头偷工减料,常以歪木充数,若以绳墨弹线,歪直立现,断无蒙混可能。 None 1.02400002 1024.00002
|
100400009 LiJie None 李诫 1 工头偷工减料,常以歪木充数,若以绳墨弹线,歪直立现,断无蒙混可能。 None 1.00400009 1004.00009
|
||||||
102500001 Player None 玩家 0 那这是何物? None 1.02500001 1025.00001
|
100400010 Player None 玩家 0 那这是何物? None 1.0040001 1004.0001
|
||||||
102600001 LiJie None 李诫 0 这是水准,也名 “水尺”,测地势高低、屋基平正之用。 None 1.02600001 1026.00001
|
100400011 LiJie None 李诫 1 这是水准,也名 “水尺”,测地势高低、屋基平正之用。 None 1.00400011 1004.00011
|
||||||
102700001 Subtitle None 字幕 0 青铜制的水准器,形制为长槽,内盛水,槽侧刻刻度,槽端有通气孔,是宋代成熟的水准测量工具。 None 1.02700001 1027.00001
|
100400012 Subtitle None 字幕 0 青铜制的水准器,形制为长槽,内盛水,槽侧刻刻度,槽端有通气孔,是宋代成熟的水准测量工具。 None 1.00400012 1004.00012
|
||||||
102800001 LiJie None 李诫 0 汴京地势多洼,营建房宇先以水准定基址 None 1.02800001 1028.00001
|
100400013 LiJie None 李诫 1 汴京地势多洼,营建房宇先以水准定基址 None 1.00400013 1004.00013
|
||||||
102800002 LiJie None 李诫 0 若基址倾斜,纵是木料精良,也难逃倾颓之祸。 None 1.02800002 1028.00002
|
100400014 LiJie None 李诫 1 若基址倾斜,纵是木料精良,也难逃倾颓之祸。 None 1.00400014 1004.00014
|
||||||
102900001 LiJie None 李诫 0 水之性平,这水准便是借水定平。 None 1.02900001 1029.00001
|
100400015 LiJie None 李诫 1 水之性平,这水准便是借水定平。 None 1.00400015 1004.00015
|
||||||
103000001 LiJie None 李诫 0 除了这些器具,库房更藏有 “料例” 册籍, None 1.03000001 1030.00001
|
100400016 LiJie None 李诫 1 除了这些器具,库房更藏有 “料例” 册籍, None 1.00400016 1004.00016
|
||||||
103000002 LiJie None 李诫 0 楠木、樟木、杉木各等用料定额,大木作、小木作各工序用工之数,皆在册中。 None 1.03000002 1030.00002
|
100400017 LiJie None 李诫 1 楠木、樟木、杉木各等用料定额,大木作、小木作各工序用工之数,皆在册中。 None 1.00400017 1004.00017
|
||||||
103100001 LiJie None 李诫 0 你既为画图令史,识器是第一步,更要知 “器以定法、法以量料”。 None 1.03100001 1031.00001
|
100400018 LiJie None 李诫 1 你既为画图令史,识器是第一步,更要知 “器以定法、法以量料”。 None 1.00400018 1004.00018
|
||||||
103100002 LiJie None 李诫 0 这些工具,是规矩的具象,料例是制度的准绳,二者相合,才能堵贪弊、正营造。 None 1.03100002 1031.00002
|
100400019 LiJie None 李诫 1 这些工具,是规矩的具象,料例是制度的准绳,二者相合,才能堵贪弊、正营造。 None 1.00400019 1004.00019
|
||||||
103200001 LiJie None 李诫 0 今日先熟其形、知其用。 None 1.03200001 1032.00001
|
100400020 LiJie None 李诫 1 今日先熟其形、知其用。 None 1.0040002 1004.0002
|
||||||
103200002 LiJie None 李诫 0 明日随我去工地,以器验工,看看那些贪弊工头还能藏多少猫腻。 None 1.03200002 1032.00002
|
100400021 LiJie None 李诫 1 明日随我去工地,以器验工,看看那些贪弊工头还能藏多少猫腻。 None 1.00400021 1004.00021
|
||||||
103300001 Player None 玩家 0 是,李主簿。 None 1.03300001 1033.00001
|
100400022 Player None 玩家 0 是,李主簿。 None 1.00400022 1004.00022
|
||||||
103400001 LiJie None 李诫 0 这工地是谁负责! None 1.03400001 1034.00001
|
103400001 LiJie None 李诫 0 这工地是谁负责! None 1.03400001 1034.00001
|
||||||
103500001 GongTou None 工头 0 李主簿,您怎么又来了… None 1.03500001 1035.00001
|
103500001 GongTou None 工头 0 李主簿,您怎么又来了… None 1.03500001 1035.00001
|
||||||
103600001 LiJie None 李诫 0 我不来,怎知你们又在如何糊弄? None 1.03600001 1036.00001
|
103600001 LiJie None 李诫 0 我不来,怎知你们又在如何糊弄? None 1.03600001 1036.00001
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
# int string string bool bool
|
# int string string bool bool
|
||||||
# 界面编号 策划备注 资源名称 界面组名称 是否允许多个界面实例 是否暂停被其覆盖的界面
|
# 界面编号 策划备注 资源名称 界面组名称 是否允许多个界面实例 是否暂停被其覆盖的界面
|
||||||
1 弹出框 DialogForm Dialog True False
|
1 弹出框 DialogForm Dialog True False
|
||||||
|
2 BgForm Default False False
|
||||||
100 主菜单 MenuForm Default False True
|
100 主菜单 MenuForm Default False True
|
||||||
101 设置 SettingForm Default False True
|
101 设置 SettingForm Default False True
|
||||||
102 关于 AboutForm Default False True
|
102 关于 AboutForm Default False True
|
||||||
|
|
|
||||||