From 1fae93ee41ecd8ea3cc64e50506662cf281d057a Mon Sep 17 00:00:00 2001 From: SepComet <202308010230@stu.csust.edu.cn> Date: Sun, 26 Apr 2026 15:02:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96+=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Assets/GameMain/Configs/ResourceBuilder.xml | 2 +- Assets/GameMain/DataTables/DialogLine.txt | 80 +++--- Assets/GameMain/DataTables/UIForm.txt | 2 +- Assets/GameMain/Scenes/GameplayA.meta | 8 - Assets/GameMain/Scenes/GameplayA.unity | 266 ------------------ Assets/GameMain/Scenes/GameplayA.unity.meta | 7 - .../GameplayA/GlobalVolumeProfile.asset | 104 ------- .../GameplayA/GlobalVolumeProfile.asset.meta | 8 - Assets/GameMain/Scenes/Menu.unity | 211 ++++---------- .../ResolutionAdapterComponent.cs | 90 +++++- .../Scripts/Procedure/ProcedureMain.cs | 42 ++- .../Scripts/Procedure/ProcedureMenu.cs | 3 +- Assets/GameMain/Scripts/UI/UGuiGroupHelper.cs | 100 ++++++- .../Scripts/UI/View/BottomDialogForm.cs | 34 ++- Assets/GameMain/Scripts/UI/View/MenuForm.cs | 2 +- .../GameMain/Scripts/UI/View/SettingForm.cs | 46 ++- ...hangeBGM3001.asset => ChangeBGM2005.asset} | 4 +- ...01.asset.meta => ChangeBGM2005.asset.meta} | 0 ...hangeBGM4001.asset => ChangeBGM3005.asset} | 4 +- ...01.asset.meta => ChangeBGM3005.asset.meta} | 0 Assets/GameMain/UI/UIForms/MenuForm.prefab | 76 +++++ Assets/GameMain/UI/UIForms/SettingForm.prefab | 91 ++++-- Assets/Launcher.unity | 4 +- ProjectSettings/EditorBuildSettings.asset | 3 - ProjectSettings/ProjectSettings.asset | 10 +- 数据表/DialogLine.txt | 80 +++--- 数据表/DialogLine.xlsx | Bin 43988 -> 43979 bytes 数据表/UIForm.txt | 2 +- 数据表/UIForm.xlsx | Bin 10609 -> 10605 bytes 30 files changed, 583 insertions(+), 697 deletions(-) delete mode 100644 Assets/GameMain/Scenes/GameplayA.meta delete mode 100644 Assets/GameMain/Scenes/GameplayA.unity delete mode 100644 Assets/GameMain/Scenes/GameplayA.unity.meta delete mode 100644 Assets/GameMain/Scenes/GameplayA/GlobalVolumeProfile.asset delete mode 100644 Assets/GameMain/Scenes/GameplayA/GlobalVolumeProfile.asset.meta rename Assets/GameMain/StoryDirector/ChangeBGM/{ChangeBGM3001.asset => ChangeBGM2005.asset} (90%) rename Assets/GameMain/StoryDirector/ChangeBGM/{ChangeBGM3001.asset.meta => ChangeBGM2005.asset.meta} (100%) rename Assets/GameMain/StoryDirector/ChangeBGM/{ChangeBGM4001.asset => ChangeBGM3005.asset} (90%) rename Assets/GameMain/StoryDirector/ChangeBGM/{ChangeBGM4001.asset.meta => ChangeBGM3005.asset.meta} (100%) diff --git a/.gitignore b/.gitignore index 86d46d5..1da0c5a 100644 --- a/.gitignore +++ b/.gitignore @@ -103,3 +103,4 @@ crashlytics-build.properties /.dotnet /.claude /.codex +/bin.zip diff --git a/Assets/GameMain/Configs/ResourceBuilder.xml b/Assets/GameMain/Configs/ResourceBuilder.xml index 4462ffe..b5ebcbe 100644 --- a/Assets/GameMain/Configs/ResourceBuilder.xml +++ b/Assets/GameMain/Configs/ResourceBuilder.xml @@ -2,7 +2,7 @@ - 2 + 5 1 1 UnityGameFramework.Runtime.DefaultCompressionHelper diff --git a/Assets/GameMain/DataTables/DialogLine.txt b/Assets/GameMain/DataTables/DialogLine.txt index 5f312f8..db98e9f 100644 --- a/Assets/GameMain/DataTables/DialogLine.txt +++ b/Assets/GameMain/DataTables/DialogLine.txt @@ -13,7 +13,7 @@ 100300001 Other 旁白 0 你是新入将作监的画图令史,今日正是你当值的第一天。 None 1.00300001 1003.00001 100300002 LiJie 李诫 1 你便是新任的画图令史? None 1.00300002 1003.00002 100300003 LiJie 李诫 1 来得正好。 None 1.00300003 1003.00003 - 100300004 Player 玩家 0 属下正是,见过李主簿。 None 1.00300004 1003.00004 + 100300004 Player 我 0 属下正是,见过李主簿。 None 1.00300004 1003.00004 100300005 LiJie 李诫 1 方才工地塌架,你也有所耳闻。 None 1.00300005 1003.00005 100300006 LiJie 李诫 1 这工头竟拿柳木来替代楠木,企图瞒天过海,结果却落得如此下场, None 1.00300006 1003.00006 100300007 LiJie 李诫 1 幸好方才无人员伤亡,才让这工头躲过一劫。 None 1.00300007 1003.00007 @@ -21,11 +21,11 @@ 100300009 LiJie 李诫 1 而我们的职责,就是尽早发现这般祸患,防止酿成更大的问题。 None 1.00300009 1003.00009 100300010 LiJie 李诫 1 无规矩,则屋不立;无准绳,则工不正。 None 1.0030001 1003.0001 100300011 LiJie 李诫 1 你也要牢记。 None 1.00300011 1003.00011 - 100300012 Player 玩家 0 是,李主簿。 None 1.00300012 1003.00012 + 100300012 Player 我 0 是,李主簿。 None 1.00300012 1003.00012 100300013 LiJie 李诫 1 你既为画图令史,第一要务便是识木、辨材、熟用器具。 None 1.00300013 1003.00013 100300014 LiJie 李诫 1 现在随我去库房,我来带你认识水准、绳墨、曲尺、方斗这些营造根本之器。 None 1.00300014 1003.00014 100300015 LiJie 李诫 1 待你熟习测量与料例,我便亲自带你到工地监工核验,杜绝此类祸事再发。 None 1.00300015 1003.00015 - 100300016 Player 玩家 0 属下遵命。 None 1.00300016 1003.00016 + 100300016 Player 我 0 属下遵命。 None 1.00300016 1003.00016 100300017 Other 旁白 0 你正式踏入将作监,一段以法度正营造的历程,自此开始。 None 1.00300017 1003.00017 100400001 LiJie 李诫 1 这里是库房,存放着营造时用到的所有工具。 None 1.00400001 1004.00001 100400002 Subtitle 字幕 0 檀木质地,刻度以朱砂标注,一端为方、一端为折,刻有 “材份” 刻度。 EntityCue 1.00400002 1004.00002 @@ -36,7 +36,7 @@ 100400007 Subtitle 字幕 0 方斗为楠木所制,斗身刻 “将作监” 款识,墨仓密封,绳墨以生丝浸松烟墨制成,耐磨不褪。 EntityCueClose 1.00400007 1004.00007 100400008 LiJie 李诫 1 营造之事,“直” 为要。 None 1.00400008 1004.00008 100400009 LiJie 李诫 1 工头偷工减料,常以歪木充数,若以绳墨弹线,歪直立现,断无蒙混可能。 None 1.00400009 1004.00009 - 100400010 Player 玩家 0 那这是何物? EntityCue 1.0040001 1004.0001 + 100400010 Player 我 0 那这是何物? EntityCue 1.0040001 1004.0001 100400011 LiJie 李诫 1 这是水准,也名 “水尺”,测地势高低、屋基平正之用。 None 1.00400011 1004.00011 100400012 Subtitle 字幕 0 青铜制的水准器,形制为长槽,内盛水,槽侧刻刻度,槽端有通气孔,是宋代成熟的水准测量工具。 None 1.00400012 1004.00012 100400013 LiJie 李诫 1 汴京地势多洼,营建房宇先以水准定基址 EntityCueClose 1.00400013 1004.00013 @@ -48,14 +48,14 @@ 100400019 LiJie 李诫 1 这些工具,是规矩的具象,料例是制度的准绳,二者相合,才能堵贪弊、正营造。 None 1.00400019 1004.00019 100400020 LiJie 李诫 1 今日先熟其形、知其用。 None 1.0040002 1004.0002 100400021 LiJie 李诫 1 明日随我去工地,以器验工,看看那些贪弊工头还能藏多少猫腻。 None 1.00400021 1004.00021 - 100400022 Player 玩家 0 是,李主簿。 None 1.00400022 1004.00022 + 100400022 Player 我 0 是,李主簿。 None 1.00400022 1004.00022 100500001 LiJie 李诫 0 这工地是谁负责! None 1.00500001 1005.00001 100500002 GongTou 工头 1 李主簿,您怎么又来了… None 1.00500002 1005.00002 100500003 LiJie 李诫 0 我不来,怎知你们又在如何糊弄? None 1.00500003 1005.00003 100500004 LiJie 李诫 0 今日来便是要验工。 None 1.00500004 1005.00004 100500005 LiJie 李诫 0 你且取来昨日库房的曲尺、绳墨、水准,逐一核验梁柱基址。 None 1.00500005 1005.00005 - 100500006 Player 玩家 0 是,李主簿。 None 1.00500006 1005.00006 - 100500007 Player 玩家 0 李主簿,这根立柱偏斜三分,枋木榫口尺寸不符,根本无法咬合! None 1.00500007 1005.00007 + 100500006 Player 我 0 是,李主簿。 None 1.00500006 1005.00006 + 100500007 Player 我 0 李主簿,这根立柱偏斜三分,枋木榫口尺寸不符,根本无法咬合! None 1.00500007 1005.00007 100500008 GongTou 工头 1 这… None 1.00500008 1005.00008 100500009 GongTou 工头 1 … None 1.00500009 1005.00009 100500010 GongTou 工头 1 这只是小偏差,匠人凭手眼便可调整… None 1.0050001 1005.0001 @@ -67,8 +67,8 @@ 100500016 LiJie 李诫 0 今日我便教你按材份制放样、按标准榫卯拼装。 None 1.00500016 1005.00016 100500017 LiJie 李诫 0 先定材份,再画榫头长短、卯眼深浅,每一分都有定数。 None 1.00500017 1005.00017 100500018 LiJie 李诫 0 你来上手试试。 None 1.00500018 1005.00018 - 100600001 Player 玩家 0 原来如此… None 1.00600001 1006.00001 - 100600002 Player 玩家 0 对齐、卡紧、压实,竟如此稳固! None 1.00600002 1006.00002 + 100600001 Player 我 0 原来如此… None 1.00600001 1006.00001 + 100600002 Player 我 0 对齐、卡紧、压实,竟如此稳固! None 1.00600002 1006.00002 100600003 LiJie 李诫 0 这便是法度之力。 None 1.00600003 1006.00003 100600004 LiJie 李诫 0 构件按图预制,到工地只需精准拼装,既省工,又让贪弊者无可乘之机。 None 1.00600004 1006.00004 100600005 LiJie 李诫 0 往后所有构件,必须先以尺量、以图定、以榫卯合,不合格一律不准上架! None 1.00600005 1006.00005 @@ -103,7 +103,7 @@ 200200024 LiJie 李诫 0 都料匠,你敢应否? None 2.00200024 2002.00024 200200025 LaoDu 老都料匠 1 有何不敢! None 2.00200025 2002.00025 200200026 LaoDu 老都料匠 1 老身的手艺,还怕比不过一纸刻度? None 2.00200026 2002.00026 - 200200027 Player 玩家 0 属下必不负李丞所托! None 2.00200027 2002.00027 + 200200027 Player 我 0 属下必不负李丞所托! None 2.00200027 2002.00027 200200028 Other 旁白 0 一场关乎 “古法” 与 “新法” 的对决,就此展开; None 2.00200028 2002.00028 200200029 Other 旁白 0 而你手中的曲尺,不再只是验工的工具,更是书写营造法度的笔。 None 2.00200029 2002.00029 200300002 LiJie 李诫 0 今日便教你材份制的根本,这是重修《营造法式》的核心,也是拼出标准斗拱的关键。 None 2.00300002 2003.00002 @@ -113,25 +113,25 @@ 200300006 LiJie 李诫 0 殿宇大小、斗拱高低、榫卯长短,全由这八等材定尺,再无凭口传、靠手感的乱象。 None 2.00300006 2003.00006 200300007 LaoDu 老都料匠 1 不过是把口传的尺寸刻在木上,换个说法罢了,拼斗拱还得看手上功夫! None 2.00300007 2003.00007 200300008 LiJie 李诫 0 你且用这曲尺,量一量这五铺作斗拱的栌斗。 None 2.00300008 2003.00008 - 200300009 Player 玩家 0 回李丞,栌斗方三十二分,高二十分! None 2.00300009 2003.00009 + 200300009 Player 我 0 回李丞,栌斗方三十二分,高二十分! None 2.00300009 2003.00009 200300010 LiJie 李诫 0 没错。五铺作斗拱的华拱、耍头、罗汉枋,每一件构件、每一处榫卯,都有材份定数,半分不差。 None 2.0030001 2003.0001 200300011 LiJie 李诫 0 古法拼斗拱,榫头凭砍、卯眼凭凿,松紧全靠凑;按材份制, None 2.00300011 2003.00011 200300012 LiJie 李诫 0 榫头长 12 分、宽 6 分,卯眼深 10 分、宽 6 分,严丝合缝。 None 2.00300012 2003.00012 200300013 LiJie 李诫 0 先弹中线定基准,再按材份画榫卯轮廓,异地预制的构件,运到工地也能精准拼装。 None 2.00300013 2003.00013 - 200300014 Player 玩家 0 按尺标记,尺寸丝毫不差,原来榫卯可以如此精准! None 2.00300014 2003.00014 + 200300014 Player 我 0 按尺标记,尺寸丝毫不差,原来榫卯可以如此精准! None 2.00300014 2003.00014 200300015 LiJie 李诫 0 都料匠,你四十年手艺,可曾让百组斗拱的榫卯分毫不差? None 2.00300015 2003.00015 200300016 LiJie 李诫 0 可曾实现构件异地预制、现场速拼? None 2.00300016 2003.00016 200300017 LaoDu 老都料匠 1 …工地见真章! None 2.00300017 2003.00017 200300018 LaoDu 老都料匠 1 光说不练不算数! None 2.00300018 2003.00018 200300019 LiJie 李诫 0 你已掌握材份测量与榫卯标记,明日随我去五王邸工地,用这套法度, None 2.00300019 2003.00019 200300020 LiJie 李诫 0 拼出能服天下匠人的五铺作斗拱! None 2.0030002 2003.0002 - 200300021 Player 玩家 0 属下遵命! None 2.00300021 2003.00021 + 200300021 Player 我 0 属下遵命! None 2.00300021 2003.00021 200300022 Other 旁白 0 你终于懂了材份制的真谛,标准化的营造法度,即将在工地接受最严苛的检验。 None 2.00300022 2003.00022 200400001 LiJie 李诫 0 今日对决,只看三点:榫卯严合、拼装速度、构件通用,输者便认材份制为营造正途! None 2.00400001 2004.00001 200400002 LaoDu 老都料匠 1 老夫造了一辈子斗拱,闭眼都能拼! None 2.00400002 2004.00002 200400003 LaoDu 老都料匠 1 哪用得着什么刻度分份! None 2.00400003 2004.00003 200400004 LiJie 李诫 0 该你了,按材份制,一步一验,精准拼装。 None 2.00400004 2004.00004 - 200500001 Player 玩家 0 李丞,拼装完毕! None 2.00500001 2005.00001 + 200500001 Player 我 0 李丞,拼装完毕! None 2.00500001 2005.00001 200500002 LiJie 李诫 0 都看好了! None 2.00500002 2005.00002 200500003 LiJie 李诫 0 这就是口传手感与材份法度的差别! None 2.00500003 2005.00003 200500004 LiJie 李诫 0 按材份制预制的构件,异地生产、现场互换,百组斗拱皆可通用,省工三倍, None 2.00500004 2005.00004 @@ -145,7 +145,7 @@ 200500012 LaoDu 老都料匠 1 李官人,是老夫守旧迂腐了! None 2.00500012 2005.00012 200500013 LaoDu 老都料匠 1 这材份制,才是能护营造、利万民的真法度! None 2.00500013 2005.00013 200500014 LaoDu 老都料匠 1 往后,老夫愿按法式规矩做工! None 2.00500014 2005.00014 - 200500015 Player 玩家 0 材份定规,榫卯立心,营造之法,终于有了统一准绳! None 2.00500015 2005.00015 + 200500015 Player 我 0 材份定规,榫卯立心,营造之法,终于有了统一准绳! None 2.00500015 2005.00015 200500016 Other 旁白 0 一场对决,折服老匠,更定下了天下营造的模数根基;标准化的营造之路,自此彻底走通。 None 2.00500016 2005.00016 200600001 LaoDu 老都料匠 1 李丞,今日工地实测,让老身彻悟! None 2.00600001 2006.00001 200600002 LaoDu 老都料匠 1 口传终有尽,法度传千年,这材份制,老身服了! None 2.00600002 2006.00002 @@ -154,7 +154,7 @@ 200600005 LiJie 李诫 0 古法手艺是根,标准法度是纲,纲举目张,手艺才能代代不失。 None 2.00600005 2006.00005 200600006 LiJie 李诫 0 今日五铺作斗拱的材份模数、榫卯尺寸、拼装流程,皆是重修《营造法式》的核心实证。 None 2.00600006 2006.00006 200600007 LiJie 李诫 0 你今日以材份制拼斗拱,实测精准、榫卯稳固,足堪担当绘图重任。 None 2.00600007 2006.00007 - 200600008 Player 玩家 0 回李丞,五铺作斗拱材份、榫卯数据已全部归档,可作为官造标准! None 2.00600008 2006.00008 + 200600008 Player 我 0 回李丞,五铺作斗拱材份、榫卯数据已全部归档,可作为官造标准! None 2.00600008 2006.00008 200600009 LiJie 李诫 0 好! None 2.00600009 2006.00009 200600010 LiJie 李诫 0 自今日起,将作监所有大木作构件,皆按此标准备料、放样、拼装;我会奏报朝廷, None 2.0060001 2006.0001 200600011 LiJie 李诫 0 将材份制、榫卯标准、斗拱制度,逐一写入新修《营造法式》。 None 2.00600011 2006.00011 @@ -182,8 +182,8 @@ 300200015 LiJie 李诫 0 你随我五载,熟材份、通榫卯、验过工地、拼过斗拱。 None 3.00200015 3002.00015 300200016 LiJie 李诫 0 今日起,你便是图样编修的主事画图吏,与我一同,将这大宋营造的规矩, None 3.00200016 3002.00016 300200017 LiJie 李诫 0 一笔一画绘在纸上,立为天下准绳! None 3.00200017 3002.00017 - 300200018 Player 玩家 0 属下遵命! None 3.00200018 3002.00018 - 300200019 Player 玩家 0 定以材份为尺,以笔墨为工,绘精准图样,立万世法度,不负李丞所托! None 3.00200019 3002.00019 + 300200018 Player 我 0 属下遵命! None 3.00200018 3002.00018 + 300200019 Player 我 0 定以材份为尺,以笔墨为工,绘精准图样,立万世法度,不负李丞所托! None 3.00200019 3002.00019 300200020 LaoDu 老都料匠 1 李丞,老身虽愚钝,却也知这图样的紧要。 None 3.0020002 3002.0002 300200021 LaoDu 老都料匠 1 我手中有历代匠人传下的营造手谱,虽无规整刻度, None 3.00200021 3002.00021 300200022 LaoDu 老都料匠 1 却记了太庙、朱雀门的形制要诀,愿献出来,为编修图样尽一份力! None 3.00200022 3002.00022 @@ -211,8 +211,8 @@ 300300019 LiJie 李诫 0 先画平图,以这十字墨线为基准,栌斗居其中,先定其材份尺寸,再标斗拱间距。 None 3.00300019 3003.00019 300300020 LaoDu 老都料匠 1 大人,这五铺作斗拱的华拱,与罗汉枋交接处,榫头需稍收一分, None 3.0030002 3003.0002 300300021 LaoDu 老都料匠 1 不然拼装时易卡壳,老身造了几十年,这一点错不了,绘图时莫要漏了。 None 3.00300021 3003.00021 - 300300022 Player 玩家 0 属下记下了:三准为纲,三图为要,材份定数,形制合规,更要融老匠之法, None 3.00300022 3003.00022 - 300300023 Player 玩家 0 让图样既准法度,又合工用。 None 3.00300023 3003.00023 + 300300022 Player 我 0 属下记下了:三准为纲,三图为要,材份定数,形制合规,更要融老匠之法, None 3.00300022 3003.00022 + 300300023 Player 我 0 让图样既准法度,又合工用。 None 3.00300023 3003.00023 300300024 LiJie 李诫 0 不错,制图非为纸上定规,实为工地施工,徒有刻度而不合工用,也是虚图。 None 3.00300024 3003.00024 300300025 LiJie 李诫 0 今日你先定平图的基准与材份标注,我与都料匠在旁看顾,有疑便问,务必做到分毫无差。 None 3.00300025 3003.00025 300300026 Other 旁白 0 绘图室里,墨线为骨,材份为尺,朱砂为色。 None 3.00300026 3003.00026 @@ -226,13 +226,13 @@ 300400005 LaoDu 老都料匠 1 寿康殿偏轩我早年参与过修葺,面阔三间约一丈八尺,进深两间一丈二尺, None 3.00400005 3004.00005 300400006 LaoDu 老都料匠 1 原是小式殿宇,该用六等材,五铺作斗拱便够,只是当年无图样,全凭匠人手眼, None 3.00400006 3004.00006 300400007 LaoDu 老都料匠 1 如今按新法制图,正好见真章! None 3.00400007 3004.00007 - 300400008 Player 玩家 0 属下遵命! None 3.00400008 3004.00008 + 300400008 Player 我 0 属下遵命! None 3.00400008 3004.00008 300400009 LiJie 李诫 0 侧脚柱是官造定规,檐柱微倾二分,内柱微倾一分,既防屋宇侧倾,又显形制层次, None 3.00400009 3004.00009 300400010 LiJie 李诫 0 绘时柱脚需向内收,不可画成直柱! None 3.0040001 3004.0001 300400011 LaoDu 老都料匠 1 画图吏,偏轩是休憩之所,屋架举折不可太陡,不然檐角上翘过甚, None 3.00400011 3004.00011 300400012 LaoDu 老都料匠 1 失了精巧;梁枋与斗拱交接处,榫头需短三分,六等材料细,榫头过长易折。 None 3.00400012 3004.00012 - 300400013 Player 玩家 0 依材份定尺,按法度绘图,竟真能让纸上笔墨,化作宫中轩宇的模样, None 3.00400013 3004.00013 - 300400014 Player 玩家 0 连侧脚、举折这些细节,都分毫不差! None 3.00400014 3004.00014 + 300400013 Player 我 0 依材份定尺,按法度绘图,竟真能让纸上笔墨,化作宫中轩宇的模样, None 3.00400013 3004.00013 + 300400014 Player 我 0 连侧脚、举折这些细节,都分毫不差! None 3.00400014 3004.00014 300400015 LiJie 李诫 0 这便是实战制图的要义! None 3.00400015 3004.00015 300400016 LiJie 李诫 0 制图非为纸上好看,实为工地施工,既要合官造法度,又要贴施工实理, None 3.00400016 3004.00016 300400017 LiJie 李诫 0 你今日将材份制、老匠经验融于一图,才算真正掌了官式制图的门道! None 3.00400017 3004.00017 @@ -249,10 +249,10 @@ 300500002 LiJie 李诫 0 凡下料、拼装、立架,分毫皆按图中材份定数,老都料匠督工,画图吏验尺, None 3.00500002 3005.00002 300500003 LiJie 李诫 0 敢有私改尺寸、克扣物料者,按律处置! None 3.00500003 3005.00003 300500004 LaoDu 老都料匠 1 侧脚柱,六等材制,柱身微倾二分,尺寸合度! None 3.00500004 3005.00004 - 300500005 Player 玩家 0 李丞,五铺作斗拱构件,榫头长 6 分、卯眼深 5 分,皆按六等材定数, None 3.00500005 3005.00005 - 300500006 Player 玩家 0 榫卯严合,可拼装! None 3.00500006 3005.00006 - 300500007 Player 玩家 0 料例皆按图样定数,每一根木料、每一组构件都有标注,少一分一毫,皆可查对, None 3.00500007 3005.00007 - 300500008 Player 玩家 0 休要存贪念! None 3.00500008 3005.00008 + 300500005 Player 我 0 李丞,五铺作斗拱构件,榫头长 6 分、卯眼深 5 分,皆按六等材定数, None 3.00500005 3005.00005 + 300500006 Player 我 0 榫卯严合,可拼装! None 3.00500006 3005.00006 + 300500007 Player 我 0 料例皆按图样定数,每一根木料、每一组构件都有标注,少一分一毫,皆可查对, None 3.00500007 3005.00007 + 300500008 Player 我 0 休要存贪念! None 3.00500008 3005.00008 300500009 GongTou 工头 1 不敢不敢,画图吏明察,小人绝不敢乱来! None 3.00500009 3005.00009 300500010 LaoDu 老都料匠 1 按图施工,就是省心! None 3.0050001 3005.0001 300500011 LaoDu 老都料匠 1 往日拼斗拱,少则半日,多则一日,如今按图对榫,一刻便成,还无半分偏差, None 3.00500011 3005.00011 @@ -263,9 +263,9 @@ 300500016 LaoDu 老都料匠 1 老身活了大半辈子,今日才知,营造之事,有图有法,方能事半功倍。 None 3.00500016 3005.00016 300500017 LaoDu 老都料匠 1 这偏轩的构架,比当年无图营造时,牢固数倍,模样也更周正,往后我等匠人, None 3.00500017 3005.00017 300500018 LaoDu 老都料匠 1 必奉图样为圭臬! None 3.00500018 3005.00018 - 300500019 Player 玩家 0 材份定尺,图样定形,法立则工正,工正则屋固! None 3.00500019 3005.00019 - 300500020 Player 玩家 0 这寿康殿偏轩,便是新法营造的明证,往后天下营造,皆依此例, None 3.0050002 3005.0002 - 300500021 Player 玩家 0 便再无无规之乱、贪弊之害! None 3.00500021 3005.00021 + 300500019 Player 我 0 材份定尺,图样定形,法立则工正,工正则屋固! None 3.00500019 3005.00019 + 300500020 Player 我 0 这寿康殿偏轩,便是新法营造的明证,往后天下营造,皆依此例, None 3.0050002 3005.0002 + 300500021 Player 我 0 便再无无规之乱、贪弊之害! None 3.00500021 3005.00021 300500022 LiJie 李诫 0 寿康殿偏轩大木作功成,后续瓦作、小木作,皆依图样施工! None 3.00500022 3005.00022 300500023 LiJie 李诫 0 今日之功,画图吏主笔制图有功,老都料匠督工有方,匠人依图施工尽责,皆记功一次! None 3.00500023 3005.00023 400100001 Other 旁白 0 元符二年秋,寿康殿偏轩大木作如期功成, None 4.00100001 4001.00001 @@ -281,11 +281,11 @@ 400200009 LaoDu 老都料匠 1 曾与李大人争执于工地,如今见这三十六卷册籍,才知什么是真正的营造之法! None 4.00200009 4002.00009 400200010 LaoDu 老都料匠 1 这纸上的每一根墨线、每一个朱字,都是大人与画图吏的心血,是天下匠人的规矩, None 4.0020001 4002.0001 400200011 LaoDu 老都料匠 1 往后营造,再无无章可循之苦,这是大宋匠人的福分啊! None 4.00200011 4002.00011 - 400200012 Player 玩家 0 属下元祐七年入监,蒙大人教诲,始识水准、绳墨之器, None 4.00200012 4002.00012 - 400200013 Player 玩家 0 初知料例、材份之规;十载相伴,从工地验工到案头制图, None 4.00200013 4002.00013 - 400200014 Player 玩家 0 从拼斗拱、绘轩宇到参编法式,方悟营造之要,在法、在规、在传。 None 4.00200014 4002.00014 - 400200015 Player 玩家 0 这三十六卷法式,是大人的毕生所愿,是众匠人的心血所凝, None 4.00200015 4002.00015 - 400200016 Player 玩家 0 更是大宋营造的万世准绳,属下幸参与其中,此生无憾! None 4.00200016 4002.00016 + 400200012 Player 我 0 属下元祐七年入监,蒙大人教诲,始识水准、绳墨之器, None 4.00200012 4002.00012 + 400200013 Player 我 0 初知料例、材份之规;十载相伴,从工地验工到案头制图, None 4.00200013 4002.00013 + 400200014 Player 我 0 从拼斗拱、绘轩宇到参编法式,方悟营造之要,在法、在规、在传。 None 4.00200014 4002.00014 + 400200015 Player 我 0 这三十六卷法式,是大人的毕生所愿,是众匠人的心血所凝, None 4.00200015 4002.00015 + 400200016 Player 我 0 更是大宋营造的万世准绳,属下幸参与其中,此生无憾! None 4.00200016 4002.00016 400200017 NeiShi 内侍 1 圣旨到 —— 将作监少监李诫接旨! None 4.00200017 4002.00017 400200018 NeiShi 内侍 1 皇帝诏曰:古者营室,度以绳墨,程以功限,乃成万世之基。 None 4.00200018 4002.00018 400200019 NeiShi 内侍 1 将作监少监李诫,恪恭职守,十载编修,成《营造法式》三十六卷。 None 4.00200019 4002.00019 @@ -303,11 +303,11 @@ 400300005 LiJie 李诫 1 当年库房之内,教你识水准、曲尺, None 4.00300005 4003.00005 400300006 LiJie 李诫 1 只为让你知 “无规矩则屋不立”;今日法式行天下,工有规,料有例,图有准, None 4.00300006 4003.00006 400300007 LiJie 李诫 1 国用省,民力安,这便是我编修法式的初心啊。 None 4.00300007 4003.00007 - 400300008 Player 玩家 0 此非大人一人之功,却因大人一人而起。 None 4.00300008 4003.00008 - 400300009 Player 玩家 0 从立材份制破古法之囿,到绘官式图融匠艺于纸,再到定功限料例堵贪弊之源, None 4.00300009 4003.00009 - 400300010 Player 玩家 0 大人以十载心血,整肃天下营造,让匠艺有传,法度有立。 None 4.0030001 4003.0001 - 400300011 Player 玩家 0 属下幸蒙大人教诲,从初识器具的画图令史,到能独掌制图、监工的匠官, None 4.00300011 4003.00011 - 400300012 Player 玩家 0 十载相伴,所学所悟,终身受用。 None 4.00300012 4003.00012 + 400300008 Player 我 0 此非大人一人之功,却因大人一人而起。 None 4.00300008 4003.00008 + 400300009 Player 我 0 从立材份制破古法之囿,到绘官式图融匠艺于纸,再到定功限料例堵贪弊之源, None 4.00300009 4003.00009 + 400300010 Player 我 0 大人以十载心血,整肃天下营造,让匠艺有传,法度有立。 None 4.0030001 4003.0001 + 400300011 Player 我 0 属下幸蒙大人教诲,从初识器具的画图令史,到能独掌制图、监工的匠官, None 4.00300011 4003.00011 + 400300012 Player 我 0 十载相伴,所学所悟,终身受用。 None 4.00300012 4003.00012 400300013 LiJie 李诫 1 非独你我,这是老都料匠等百匠同心,是天下营造人共愿。 None 4.00300013 4003.00013 400300014 LiJie 李诫 1 你如今已能独当一面,往后将作监的营造法度,便要靠你与后生们传承。 None 4.00300014 4003.00014 400300015 LiJie 李诫 1 学馆里的年轻画图吏、匠人,皆如当年的你,需让他们知法度、守规矩、传匠艺, None 4.00300015 4003.00015 diff --git a/Assets/GameMain/DataTables/UIForm.txt b/Assets/GameMain/DataTables/UIForm.txt index 0dedbf8..27ef873 100644 --- a/Assets/GameMain/DataTables/UIForm.txt +++ b/Assets/GameMain/DataTables/UIForm.txt @@ -5,7 +5,7 @@ 1 弹出框 DialogForm Dialog True False 2 BgForm Default False False 100 主菜单 MenuForm Default False True - 101 设置 SettingForm Default False True + 101 设置 SettingForm Default False False 102 关于 AboutForm Default False True 103 组装玩法UI CombineForm Default False False 104 Mask对话UI MaskDialogForm Dialog False False diff --git a/Assets/GameMain/Scenes/GameplayA.meta b/Assets/GameMain/Scenes/GameplayA.meta deleted file mode 100644 index a2241e5..0000000 --- a/Assets/GameMain/Scenes/GameplayA.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7acc756222cd0df48a82e3ef2e6fc023 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/GameMain/Scenes/GameplayA.unity b/Assets/GameMain/Scenes/GameplayA.unity deleted file mode 100644 index 1c0f866..0000000 --- a/Assets/GameMain/Scenes/GameplayA.unity +++ /dev/null @@ -1,266 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 3 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - buildHeightMesh: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &733650750 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 733650754} - - component: {fileID: 733650753} - - component: {fileID: 733650752} - - component: {fileID: 733650751} - m_Layer: 0 - m_Name: Camera - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &733650751 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 733650750} - 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 &733650752 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 733650750} - m_Enabled: 1 ---- !u!20 &733650753 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 733650750} - 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: 1000 - 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 &733650754 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 733650750} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 679.54193, y: 385.70178, z: 3.6800277} - 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!1660057539 &9223372036854775807 -SceneRoots: - m_ObjectHideFlags: 0 - m_Roots: - - {fileID: 733650754} diff --git a/Assets/GameMain/Scenes/GameplayA.unity.meta b/Assets/GameMain/Scenes/GameplayA.unity.meta deleted file mode 100644 index bb7702d..0000000 --- a/Assets/GameMain/Scenes/GameplayA.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 639c98846a76d624cbac99ade4a1e1a3 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/GameMain/Scenes/GameplayA/GlobalVolumeProfile.asset b/Assets/GameMain/Scenes/GameplayA/GlobalVolumeProfile.asset deleted file mode 100644 index c76f07b..0000000 --- a/Assets/GameMain/Scenes/GameplayA/GlobalVolumeProfile.asset +++ /dev/null @@ -1,104 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &-32820517437979890 -MonoBehaviour: - m_ObjectHideFlags: 3 - 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: 0b2db86121404754db890f4c8dfe81b2, type: 3} - m_Name: Bloom - m_EditorClassIdentifier: - active: 1 - skipIterations: - m_OverrideState: 0 - m_Value: 1 - threshold: - m_OverrideState: 0 - m_Value: 0.9 - intensity: - m_OverrideState: 1 - m_Value: 1 - scatter: - m_OverrideState: 0 - m_Value: 0.7 - clamp: - m_OverrideState: 0 - m_Value: 65472 - tint: - m_OverrideState: 0 - m_Value: {r: 1, g: 1, b: 1, a: 1} - highQualityFiltering: - m_OverrideState: 0 - m_Value: 0 - downscale: - m_OverrideState: 0 - m_Value: 0 - maxIterations: - m_OverrideState: 0 - m_Value: 6 - dirtTexture: - m_OverrideState: 0 - m_Value: {fileID: 0} - dimension: 1 - dirtIntensity: - m_OverrideState: 0 - m_Value: 0 ---- !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: d7fd9488000d3734a9e00ee676215985, type: 3} - m_Name: GlobalVolumeProfile - m_EditorClassIdentifier: - components: - - {fileID: 1881579288749618558} - - {fileID: -32820517437979890} ---- !u!114 &1881579288749618558 -MonoBehaviour: - m_ObjectHideFlags: 3 - 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: 97c23e3b12dc18c42a140437e53d3951, type: 3} - m_Name: Tonemapping - m_EditorClassIdentifier: - active: 1 - mode: - m_OverrideState: 1 - m_Value: 1 - neutralHDRRangeReductionMode: - m_OverrideState: 0 - m_Value: 2 - acesPreset: - m_OverrideState: 0 - m_Value: 3 - hueShiftAmount: - m_OverrideState: 0 - m_Value: 0 - detectPaperWhite: - m_OverrideState: 0 - m_Value: 0 - paperWhite: - m_OverrideState: 0 - m_Value: 300 - detectBrightnessLimits: - m_OverrideState: 0 - m_Value: 1 - minNits: - m_OverrideState: 0 - m_Value: 0.005 - maxNits: - m_OverrideState: 0 - m_Value: 1000 diff --git a/Assets/GameMain/Scenes/GameplayA/GlobalVolumeProfile.asset.meta b/Assets/GameMain/Scenes/GameplayA/GlobalVolumeProfile.asset.meta deleted file mode 100644 index 1305b27..0000000 --- a/Assets/GameMain/Scenes/GameplayA/GlobalVolumeProfile.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3b1611489367200459a07da915578b6a -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/GameMain/Scenes/Menu.unity b/Assets/GameMain/Scenes/Menu.unity index 23723f0..b707348 100644 --- a/Assets/GameMain/Scenes/Menu.unity +++ b/Assets/GameMain/Scenes/Menu.unity @@ -122,7 +122,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &70728207 +--- !u!1 &471193224 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -130,177 +130,84 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 70728208} - - component: {fileID: 70728210} - - component: {fileID: 70728209} - m_Layer: 5 - m_Name: background + - component: {fileID: 471193226} + - component: {fileID: 471193225} + m_Layer: 0 + m_Name: GameObject m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &70728208 -RectTransform: +--- !u!212 &471193225 +SpriteRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 70728207} - 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: 1779441777} - 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 &70728209 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 70728207} + m_GameObject: {fileID: 471193224} 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: c48769a908d6a474bbf52ac1ad195815, 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 &70728210 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 70728207} - m_CullTransparentMesh: 1 ---- !u!1 &1779441773 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1779441777} - - component: {fileID: 1779441776} - - component: {fileID: 1779441775} - - component: {fileID: 1779441774} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1779441774 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1779441773} - 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 &1779441775 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1779441773} - 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 &1779441776 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1779441773} - 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: 25 - m_UpdateRectTransformForStandalone: 0 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 - m_SortingOrder: -10000 - m_TargetDisplay: 0 ---- !u!224 &1779441777 -RectTransform: + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: ab45c3f613f388d43bbf43ec05eb92e2, type: 3} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 8, y: 8} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &471193226 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1779441773} + m_GameObject: {fileID: 471193224} + serializedVersion: 2 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: 70728208} + m_LocalScale: {x: 5000, y: 5000, z: 5000} + m_ConstrainProportionsScale: 1 + m_Children: [] 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 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - - {fileID: 1779441777} + - {fileID: 471193226} diff --git a/Assets/GameMain/Scripts/CustomComponent/ResolutionAdapterComponent.cs b/Assets/GameMain/Scripts/CustomComponent/ResolutionAdapterComponent.cs index 6c544ff..a8ec885 100644 --- a/Assets/GameMain/Scripts/CustomComponent/ResolutionAdapterComponent.cs +++ b/Assets/GameMain/Scripts/CustomComponent/ResolutionAdapterComponent.cs @@ -12,11 +12,14 @@ namespace GeometryTD.CustomComponent public class ResolutionAdapterComponent : GameFrameworkComponent { private const float DefaultCanvasPlaneDistance = 100f; + private static ResolutionAdapterComponent s_Instance; [SerializeField] private Vector2 _referenceResolution = new Vector2(2560f, 1600f); [SerializeField] private bool _adaptUiCanvasToViewport = true; [SerializeField] private bool _enableBlackMask = true; + [SerializeField] private int _maskSortingOrder = short.MaxValue; [SerializeField] private bool _autoCollectSceneCanvases = true; + [SerializeField] private float _canvasProbeInterval = 0.2f; [SerializeField] private List _uiRoots = new List(); private readonly List _canvasBuffer = new List(32); @@ -32,6 +35,7 @@ namespace GeometryTD.CustomComponent private bool _uiEventSubscribed; private bool _sceneEventSubscribed; private bool _missingRootWarned; + private float _nextCanvasProbeTime; private Canvas _maskCanvas; private RectTransform _leftMask; @@ -39,6 +43,23 @@ namespace GeometryTD.CustomComponent private RectTransform _topMask; private RectTransform _bottomMask; + public static bool TryGetTargetViewport(out Rect viewport) + { + if (s_Instance != null && s_Instance._cachedScreenWidth > 0 && s_Instance._cachedScreenHeight > 0) + { + viewport = s_Instance._targetViewport; + return true; + } + + viewport = new Rect(0f, 0f, 1f, 1f); + return false; + } + + private void Awake() + { + s_Instance = this; + } + private void Start() { TryEnsureUiEventSubscribed(); @@ -48,6 +69,10 @@ namespace GeometryTD.CustomComponent private void Update() { TryEnsureUiEventSubscribed(); + } + + private void LateUpdate() + { ApplyAdaptation(false); } @@ -59,6 +84,11 @@ namespace GeometryTD.CustomComponent { _mainCamera.rect = new Rect(0f, 0f, 1f, 1f); } + + if (s_Instance == this) + { + s_Instance = null; + } } private void ApplyAdaptation(bool force) @@ -95,11 +125,7 @@ namespace GeometryTD.CustomComponent return; } - if (!needRecalculate && !_canvasCacheDirty) - { - return; - } - + TryMarkCanvasCacheDirtyByProbe(); ApplyCanvasAdaptation(); } @@ -308,6 +334,7 @@ namespace GeometryTD.CustomComponent if (!_uiEventSubscribed) { GameEntry.Event.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnUIFormChanged); + GameEntry.Event.Subscribe(OpenUIFormUpdateEventArgs.EventId, OnUIFormChanged); GameEntry.Event.Subscribe(CloseUIFormCompleteEventArgs.EventId, OnUIFormChanged); _uiEventSubscribed = true; _canvasCacheDirty = true; @@ -331,6 +358,7 @@ namespace GeometryTD.CustomComponent if (_uiEventSubscribed) { GameEntry.Event.Unsubscribe(OpenUIFormSuccessEventArgs.EventId, OnUIFormChanged); + GameEntry.Event.Unsubscribe(OpenUIFormUpdateEventArgs.EventId, OnUIFormChanged); GameEntry.Event.Unsubscribe(CloseUIFormCompleteEventArgs.EventId, OnUIFormChanged); _uiEventSubscribed = false; } @@ -353,6 +381,47 @@ namespace GeometryTD.CustomComponent _missingRootWarned = false; } + private void TryMarkCanvasCacheDirtyByProbe() + { + if (_canvasCacheDirty) + { + return; + } + + if (_canvasProbeInterval > 0f && Time.unscaledTime < _nextCanvasProbeTime) + { + return; + } + + _nextCanvasProbeTime = Time.unscaledTime + Mathf.Max(0.01f, _canvasProbeInterval); + Canvas[] canvases = Resources.FindObjectsOfTypeAll(); + 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.Contains(canvas)) + { + _canvasCacheDirty = true; + return; + } + } + } + + private void CalculateViewportPadding(out float horizontalPadding, out float verticalPadding) + { + horizontalPadding = Mathf.Max(0f, (1f - _targetViewport.width) * 0.5f * _cachedScreenWidth); + verticalPadding = Mathf.Max(0f, (1f - _targetViewport.height) * 0.5f * _cachedScreenHeight); + } + private void UpdateMaskLayout() { if (!_enableBlackMask) @@ -367,8 +436,13 @@ namespace GeometryTD.CustomComponent return; } - float horizontalPadding = Mathf.Max(0f, (1f - _targetViewport.width) * 0.5f * _cachedScreenWidth); - float verticalPadding = Mathf.Max(0f, (1f - _targetViewport.height) * 0.5f * _cachedScreenHeight); + int maskSortingOrder = Mathf.Clamp(_maskSortingOrder, short.MinValue, short.MaxValue); + if (_maskCanvas.sortingOrder != maskSortingOrder) + { + _maskCanvas.sortingOrder = maskSortingOrder; + } + + CalculateViewportPadding(out float horizontalPadding, out float verticalPadding); bool showVerticalMask = horizontalPadding > 0.5f; bool showHorizontalMask = verticalPadding > 0.5f; @@ -405,7 +479,7 @@ namespace GeometryTD.CustomComponent _maskCanvas = maskRoot.GetComponent(); _maskCanvas.renderMode = RenderMode.ScreenSpaceOverlay; _maskCanvas.overrideSorting = true; - _maskCanvas.sortingOrder = short.MaxValue; + _maskCanvas.sortingOrder = Mathf.Clamp(_maskSortingOrder, short.MinValue, short.MaxValue); CanvasScaler scaler = maskRoot.GetComponent(); scaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize; diff --git a/Assets/GameMain/Scripts/Procedure/ProcedureMain.cs b/Assets/GameMain/Scripts/Procedure/ProcedureMain.cs index 8a91835..d3f5b4d 100644 --- a/Assets/GameMain/Scripts/Procedure/ProcedureMain.cs +++ b/Assets/GameMain/Scripts/Procedure/ProcedureMain.cs @@ -1,4 +1,5 @@ using DataTable; +using Definition.Enum; using Event; using GameFramework.DataTable; using GameFramework.Event; @@ -16,6 +17,8 @@ namespace Procedure private const int DialogChapterDivisor = 1000; private IDataTable _dtDialog; + private bool _pendingSceneChange; + private int _pendingSceneId; public override bool UseNativeDialog => false; @@ -25,6 +28,8 @@ namespace Procedure AIChatEntryRuntime.EnsureOpen(); GameEntry.Event.Subscribe(StoryChapterEndedEventArgs.EventId, OnStoryChapterEnded); + _pendingSceneChange = false; + _pendingSceneId = 0; GameEntry.Dialog.Init(InitialChapterId); GameEntry.Dialog.StartDialog(InitialDialogId); @@ -36,6 +41,21 @@ namespace Procedure base.OnLeave(procedureOwner, isShutdown); } + protected override void OnUpdate(IFsm procedureOwner, float elapseSeconds, + float realElapseSeconds) + { + base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds); + + if (!_pendingSceneChange) + { + return; + } + + _pendingSceneChange = false; + procedureOwner.SetData("NextSceneId", _pendingSceneId); + ChangeState(procedureOwner); + } + private void OnStoryChapterEnded(object sender, GameEventArgs e) { if (!(e is StoryChapterEndedEventArgs args)) @@ -54,8 +74,12 @@ namespace Procedure if (!TryResolveFirstDialogId(nextChapterId, out int nextDialogId)) { - Log.Info("ProcedureMain chapter switch stopped. No dialog found for chapter '{0}'.", - nextChapterId.ToString()); + Log.Info( + "ProcedureMain chapter '{0}' ended and no next chapter found. Return to menu scene.", + currentChapterId.ToString()); + CloseBgFormIfOpened(); + _pendingSceneId = (int)SceneId.Menu; + _pendingSceneChange = true; return; } @@ -123,5 +147,19 @@ namespace Procedure { return dialogId / DialogChapterDivisor; } + + private static void CloseBgFormIfOpened() + { + if (GameEntry.UI == null) + { + return; + } + + UGuiForm bgForm = GameEntry.UI.GetUIForm(UIFormId.BgForm); + if (bgForm != null) + { + GameEntry.UI.CloseUIForm(bgForm.UIForm); + } + } } } diff --git a/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs b/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs index d78e094..a3ab1dc 100644 --- a/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs +++ b/Assets/GameMain/Scripts/Procedure/ProcedureMenu.cs @@ -69,8 +69,7 @@ namespace Procedure e.Subscribe(MenuSettingEventArgs.EventId, MenuSetting); e.Subscribe(MenuExitEventArgs.EventId, MenuExit); e.Subscribe(SettingSaveEventArgs.EventId, SettingSave); - - + _menuFormController = new MenuFormController(); _menuFormController.OpenUI(new MenuFormContext()); diff --git a/Assets/GameMain/Scripts/UI/UGuiGroupHelper.cs b/Assets/GameMain/Scripts/UI/UGuiGroupHelper.cs index cfd0683..a1e524f 100644 --- a/Assets/GameMain/Scripts/UI/UGuiGroupHelper.cs +++ b/Assets/GameMain/Scripts/UI/UGuiGroupHelper.cs @@ -8,18 +8,24 @@ using UnityEngine; using UnityEngine.UI; using UnityGameFramework.Runtime; +using GeometryTD.CustomComponent; namespace UI { /// /// uGUI 界面组辅助器。 /// + [DefaultExecutionOrder(200)] public class UGuiGroupHelper : UIGroupHelperBase { public const int DepthFactor = 10000; private int m_Depth = 0; private Canvas m_CachedCanvas = null; + private RectTransform m_RectTransform = null; + private int m_LastScreenWidth = -1; + private int m_LastScreenHeight = -1; + private Rect m_LastViewport = new Rect(float.MinValue, float.MinValue, float.MinValue, float.MinValue); /// /// 设置界面组深度。 @@ -36,6 +42,7 @@ namespace UI { m_CachedCanvas = gameObject.GetOrAddComponent(); gameObject.GetOrAddComponent(); + m_RectTransform = GetComponent(); } private void Start() @@ -43,11 +50,94 @@ namespace UI m_CachedCanvas.overrideSorting = true; m_CachedCanvas.sortingOrder = DepthFactor * m_Depth; - RectTransform transform = GetComponent(); - transform.anchorMin = Vector2.zero; - transform.anchorMax = Vector2.one; - transform.anchoredPosition = Vector2.zero; - transform.sizeDelta = Vector2.zero; + if (m_RectTransform == null) + { + return; + } + + m_RectTransform.anchorMin = Vector2.zero; + m_RectTransform.anchorMax = Vector2.one; + m_RectTransform.pivot = new Vector2(0.5f, 0.5f); + m_RectTransform.anchoredPosition = Vector2.zero; + m_RectTransform.sizeDelta = Vector2.zero; + ApplyViewportClip(true); + } + + private void LateUpdate() + { + ApplyViewportClip(false); + } + + private void ApplyViewportClip(bool force) + { + if (m_RectTransform == null) + { + return; + } + + int screenWidth = Screen.width; + int screenHeight = Screen.height; + Rect viewport = ResolveViewportRect(); + if (!force + && screenWidth == m_LastScreenWidth + && screenHeight == m_LastScreenHeight + && Mathf.Approximately(viewport.x, m_LastViewport.x) + && Mathf.Approximately(viewport.y, m_LastViewport.y) + && Mathf.Approximately(viewport.width, m_LastViewport.width) + && Mathf.Approximately(viewport.height, m_LastViewport.height)) + { + return; + } + + m_LastScreenWidth = screenWidth; + m_LastScreenHeight = screenHeight; + m_LastViewport = viewport; + + if (screenWidth <= 0 || screenHeight <= 0) + { + return; + } + + float horizontalPadding = Mathf.Max(0f, (1f - viewport.width) * 0.5f * screenWidth); + float verticalPadding = Mathf.Max(0f, (1f - viewport.height) * 0.5f * screenHeight); + float canvasScale = ResolveCanvasScaleFactor(); + float horizontalPaddingInCanvasUnit = horizontalPadding / canvasScale; + float verticalPaddingInCanvasUnit = verticalPadding / canvasScale; + m_RectTransform.offsetMin = new Vector2(horizontalPaddingInCanvasUnit, verticalPaddingInCanvasUnit); + m_RectTransform.offsetMax = new Vector2(-horizontalPaddingInCanvasUnit, -verticalPaddingInCanvasUnit); + } + + private Rect ResolveViewportRect() + { + if (ResolutionAdapterComponent.TryGetTargetViewport(out Rect adapterViewport)) + { + return adapterViewport; + } + + Camera camera = m_CachedCanvas != null ? m_CachedCanvas.worldCamera : null; + if (camera == null && m_CachedCanvas != null && m_CachedCanvas.rootCanvas != null) + { + camera = m_CachedCanvas.rootCanvas.worldCamera; + } + + if (camera == null && GameEntry.Scene != null) + { + camera = GameEntry.Scene.MainCamera; + } + + if (camera == null) + { + camera = Camera.main; + } + + return camera != null ? camera.rect : new Rect(0f, 0f, 1f, 1f); + } + + private float ResolveCanvasScaleFactor() + { + Canvas rootCanvas = m_CachedCanvas != null ? m_CachedCanvas.rootCanvas : null; + float scale = rootCanvas != null ? rootCanvas.scaleFactor : (m_CachedCanvas != null ? m_CachedCanvas.scaleFactor : 1f); + return scale > 0.0001f ? scale : 1f; } } } diff --git a/Assets/GameMain/Scripts/UI/View/BottomDialogForm.cs b/Assets/GameMain/Scripts/UI/View/BottomDialogForm.cs index 3e9ca51..eadf3fd 100644 --- a/Assets/GameMain/Scripts/UI/View/BottomDialogForm.cs +++ b/Assets/GameMain/Scripts/UI/View/BottomDialogForm.cs @@ -49,9 +49,7 @@ namespace UI { "Other", "Subtitle", - "Time", - "LiangSiCheng", - "LinHuiYin" + "Time" }; public override void StartDialog(DialogFormContext context) @@ -130,6 +128,13 @@ namespace UI return; } + if (!HasSpeakerPortrait(_context.SpeakerId)) + { + ClearSpeakerState(); + ApplySpeakerLayout(false, false, true); + return; + } + bool isRightSpeaker = context.Direction > 0; if (isRightSpeaker) { @@ -381,13 +386,21 @@ namespace UI int requestVersion = isRightSpeaker ? ++_rightPortraitRequestVersion : ++_leftPortraitRequestVersion; if (string.IsNullOrWhiteSpace(speakerId) || NonPortraitSpeakerIds.Contains(speakerId)) { + portraitImage.sprite = null; return; } int portraitCount = ResolveAvailablePortraitCount(speakerId); + if (portraitCount <= 0) + { + portraitImage.sprite = null; + return; + } + string portraitAssetName = $"Characters/{speakerId}-{ResolvePortraitIndex(speakerId, lineId, portraitCount)}.png"; if (GameEntry.SpriteCache == null) { + portraitImage.sprite = null; return; } @@ -400,10 +413,7 @@ namespace UI return; } - if (sprite != null) - { - _rightImage.sprite = sprite; - } + _rightImage.sprite = sprite; return; } @@ -412,10 +422,7 @@ namespace UI return; } - if (sprite != null) - { - _leftImage.sprite = sprite; - } + _leftImage.sprite = sprite; }); } @@ -449,6 +456,11 @@ namespace UI return GameEntry.Dialog.GetSpeakerPortraitCount(speakerId); } + private static bool HasSpeakerPortrait(string speakerId) + { + return ResolveAvailablePortraitCount(speakerId) > 0; + } + private static bool IsHumanSpeaker(string speakerId) { if (string.IsNullOrWhiteSpace(speakerId)) diff --git a/Assets/GameMain/Scripts/UI/View/MenuForm.cs b/Assets/GameMain/Scripts/UI/View/MenuForm.cs index 4bc540d..66811ec 100644 --- a/Assets/GameMain/Scripts/UI/View/MenuForm.cs +++ b/Assets/GameMain/Scripts/UI/View/MenuForm.cs @@ -46,4 +46,4 @@ namespace UI GameEntry.Event.Fire(this, MenuExitEventArgs.Create()); } } -} \ No newline at end of file +} diff --git a/Assets/GameMain/Scripts/UI/View/SettingForm.cs b/Assets/GameMain/Scripts/UI/View/SettingForm.cs index cfbf6cd..1e9d117 100644 --- a/Assets/GameMain/Scripts/UI/View/SettingForm.cs +++ b/Assets/GameMain/Scripts/UI/View/SettingForm.cs @@ -9,6 +9,8 @@ namespace UI { public class SettingForm : UGuiForm { + private static readonly string[] NavigateButtonNames = { "SoundButton", "GameButton", "ScreenButton" }; + [SerializeField] private Transform _navigate; [SerializeField] private Image[] _navigateButtonImages; @@ -95,20 +97,58 @@ namespace UI public void OnNavigateButtonClick(int index) { + RefreshNavigateButtonImages(); + + if (_navigateButtonImages == null || _navigateButtonImages.Length == 0) + { + Log.Error("Navigate button images are invalid."); + return; + } + if (index < 0 || index >= _navigateButtonImages.Length) { Log.Error("NavigateButtonClick index is out of range."); + return; } - if (_navigateButtonImages[0] == null) - _navigateButtonImages[0] = _navigate.Find("SoundButton")?.GetComponent(); - for (int i = 0; i < _navigateButtonImages.Length; i++) { + if (_navigateButtonImages[i] == null) + { + continue; + } + _navigateButtonImages[i].enabled = i == index; } } + private void RefreshNavigateButtonImages() + { + if (_navigate == null) + { + Log.Error("Navigate transform is invalid."); + return; + } + + if (_navigateButtonImages == null || _navigateButtonImages.Length != NavigateButtonNames.Length) + { + _navigateButtonImages = new Image[NavigateButtonNames.Length]; + } + + for (int i = 0; i < NavigateButtonNames.Length; i++) + { + var button = _navigate.Find(NavigateButtonNames[i]); + if (button == null) + { + Log.Error($"Can not find navigate button '{NavigateButtonNames[i]}'."); + _navigateButtonImages[i] = null; + continue; + } + + _navigateButtonImages[i] = button.GetComponent(); + } + } + public void OnReturnButtonClick() { var dialogParams = new DialogParams diff --git a/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3001.asset b/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM2005.asset similarity index 90% rename from Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3001.asset rename to Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM2005.asset index 3b54823..4d5359a 100644 --- a/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3001.asset +++ b/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM2005.asset @@ -10,9 +10,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b2f756304e6e46b48c7cabf5887971fc, type: 3} - m_Name: ChangeBGM3001 + m_Name: ChangeBGM2005 m_EditorClassIdentifier: _enabled: 1 _triggerType: 0 - _triggerId: 3001 + _triggerId: 2005 _bgmId: 6 diff --git a/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3001.asset.meta b/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM2005.asset.meta similarity index 100% rename from Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3001.asset.meta rename to Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM2005.asset.meta diff --git a/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM4001.asset b/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3005.asset similarity index 90% rename from Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM4001.asset rename to Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3005.asset index ad720c4..129cd07 100644 --- a/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM4001.asset +++ b/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3005.asset @@ -10,9 +10,9 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b2f756304e6e46b48c7cabf5887971fc, type: 3} - m_Name: ChangeBGM4001 + m_Name: ChangeBGM3005 m_EditorClassIdentifier: _enabled: 1 _triggerType: 0 - _triggerId: 4001 + _triggerId: 3005 _bgmId: 7 diff --git a/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM4001.asset.meta b/Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3005.asset.meta similarity index 100% rename from Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM4001.asset.meta rename to Assets/GameMain/StoryDirector/ChangeBGM/ChangeBGM3005.asset.meta diff --git a/Assets/GameMain/UI/UIForms/MenuForm.prefab b/Assets/GameMain/UI/UIForms/MenuForm.prefab index d25afc0..9a7e8c9 100644 --- a/Assets/GameMain/UI/UIForms/MenuForm.prefab +++ b/Assets/GameMain/UI/UIForms/MenuForm.prefab @@ -1,5 +1,80 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &770334776125365868 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3418981803891776273} + - component: {fileID: 502501915552556569} + - component: {fileID: 6192605859570180420} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3418981803891776273 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770334776125365868} + 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: 8586477984824025089} + 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!222 &502501915552556569 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770334776125365868} + m_CullTransparentMesh: 1 +--- !u!114 &6192605859570180420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770334776125365868} + 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: c48769a908d6a474bbf52ac1ad195815, 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!1 &3226951631430642165 GameObject: m_ObjectHideFlags: 0 @@ -95,6 +170,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 3418981803891776273} - {fileID: 2026090443063703514} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/GameMain/UI/UIForms/SettingForm.prefab b/Assets/GameMain/UI/UIForms/SettingForm.prefab index 4ba81a0..33e49a1 100644 --- a/Assets/GameMain/UI/UIForms/SettingForm.prefab +++ b/Assets/GameMain/UI/UIForms/SettingForm.prefab @@ -67,7 +67,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u6E38\u620F\u8BBE\u5B9A\uFF1A" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -546,7 +546,7 @@ MonoBehaviour: m_MinValue: 0 m_MaxValue: 5 m_WholeNumbers: 1 - m_Value: 0 + m_Value: 3 m_OnValueChanged: m_PersistentCalls: m_Calls: @@ -723,7 +723,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u753B\u9762\u95EA\u5149" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -996,8 +996,8 @@ MonoBehaviour: m_Calls: [] m_text: "\u80CC\u666F\u97F3\u4E50" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} - m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, + m_fontAsset: {fileID: 11400000, guid: a84959718d612514583680c96ee8271a, type: 2} + m_sharedMaterial: {fileID: 7425184593944002063, guid: a84959718d612514583680c96ee8271a, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} @@ -1888,7 +1888,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u7A97\u53E3\u6A21\u5F0F" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -2288,8 +2288,8 @@ MonoBehaviour: m_Calls: [] m_text: "\u8BBE\u5B9A" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} - m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, + m_fontAsset: {fileID: 11400000, guid: a84959718d612514583680c96ee8271a, type: 2} + m_sharedMaterial: {fileID: 7425184593944002063, guid: a84959718d612514583680c96ee8271a, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} @@ -2498,7 +2498,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u753B\u9762\u5206\u8FA8\u7387" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -2633,7 +2633,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u9707\u52A8" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -2843,7 +2843,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u5BF9\u8BDD\u64AD\u653E\u901F\u5EA6" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -3089,7 +3089,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u6297\u952F\u9F7F" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -3264,8 +3264,8 @@ RectTransform: m_Children: [] m_Father: {fileID: 5223845312037397119} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 1} + m_AnchorMin: {x: 0.6, y: 0} + m_AnchorMax: {x: 0.6, y: 1} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 20, y: 0} m_Pivot: {x: 0.5, y: 0.5} @@ -3540,7 +3540,7 @@ RectTransform: m_Father: {fileID: 2038093641757105527} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 1} + m_AnchorMax: {x: 0.6, y: 1} m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 10, y: 0} m_Pivot: {x: 0.5, y: 0.5} @@ -3565,7 +3565,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 1} + m_Color: {r: 0.73333335, g: 0.43529412, b: 0.23921569, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -3799,8 +3799,8 @@ MonoBehaviour: m_Calls: [] m_text: "\u97F3\u6548\u8BBE\u5B9A\uFF1A" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} - m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, + m_fontAsset: {fileID: 11400000, guid: a84959718d612514583680c96ee8271a, type: 2} + m_sharedMaterial: {fileID: 7425184593944002063, guid: a84959718d612514583680c96ee8271a, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} @@ -3934,7 +3934,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u5C4F\u5E55\u8BBE\u5B9A\uFF1A" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -4144,7 +4144,7 @@ MonoBehaviour: m_Calls: [] m_text: "\u5782\u76F4\u540C\u6B65" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} + m_fontAsset: {fileID: 0} m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} m_fontSharedMaterials: [] @@ -4404,8 +4404,8 @@ MonoBehaviour: m_Calls: [] m_text: "\u97F3\u6548" m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, type: 2} - m_sharedMaterial: {fileID: -1730358588487011198, guid: f04cfd53e22bdc14b808906f4d98571b, + m_fontAsset: {fileID: 11400000, guid: a84959718d612514583680c96ee8271a, type: 2} + m_sharedMaterial: {fileID: 7425184593944002063, guid: a84959718d612514583680c96ee8271a, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} @@ -4821,7 +4821,7 @@ MonoBehaviour: m_EditorClassIdentifier: _navigate: {fileID: 170566960292460696} _navigateButtonImages: - - {fileID: 3514393531702856020} + - {fileID: 3309221543296022833} - {fileID: 3121828555316335400} - {fileID: 2401058979395375169} _bgmVolumeSlider: {fileID: 2467379101029875782} @@ -5108,7 +5108,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 1} + m_Color: {r: 0.73333335, g: 0.43529412, b: 0.23921569, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -5771,6 +5771,11 @@ PrefabInstance: propertyPath: _showTexts.Array.data[2] value: "\u7A97\u53E3" objectReference: {fileID: 0} + - target: {fileID: 8504571007063652911, guid: 7f72e35a938b99d478b47012eacff084, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 0} - target: {fileID: 8689142225738196505, guid: 7f72e35a938b99d478b47012eacff084, type: 3} propertyPath: m_Name @@ -6421,6 +6426,11 @@ PrefabInstance: propertyPath: _showTexts.Array.data[2] value: "\u5FEB" objectReference: {fileID: 0} + - target: {fileID: 8504571007063652911, guid: 7f72e35a938b99d478b47012eacff084, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 0} - target: {fileID: 8689142225738196505, guid: 7f72e35a938b99d478b47012eacff084, type: 3} propertyPath: m_Name @@ -6991,6 +7001,11 @@ PrefabInstance: propertyPath: _showTexts.Array.data[1] value: "\u5F00" objectReference: {fileID: 0} + - target: {fileID: 8504571007063652911, guid: 7f72e35a938b99d478b47012eacff084, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 0} - target: {fileID: 8689142225738196505, guid: 7f72e35a938b99d478b47012eacff084, type: 3} propertyPath: m_Name @@ -7217,6 +7232,11 @@ PrefabInstance: propertyPath: _showTexts.Array.data[1] value: "\u5F00" objectReference: {fileID: 0} + - target: {fileID: 8504571007063652911, guid: 7f72e35a938b99d478b47012eacff084, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 0} - target: {fileID: 8689142225738196505, guid: 7f72e35a938b99d478b47012eacff084, type: 3} propertyPath: m_Name @@ -7872,6 +7892,11 @@ PrefabInstance: propertyPath: _showTexts.Array.data[1] value: "\u5F00" objectReference: {fileID: 0} + - target: {fileID: 8504571007063652911, guid: 7f72e35a938b99d478b47012eacff084, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 0} - target: {fileID: 8689142225738196505, guid: 7f72e35a938b99d478b47012eacff084, type: 3} propertyPath: m_Name @@ -8098,6 +8123,11 @@ PrefabInstance: propertyPath: _showTexts.Array.data[1] value: "\u5F00" objectReference: {fileID: 0} + - target: {fileID: 8504571007063652911, guid: 7f72e35a938b99d478b47012eacff084, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 0} - target: {fileID: 8689142225738196505, guid: 7f72e35a938b99d478b47012eacff084, type: 3} propertyPath: m_Name @@ -8773,6 +8803,11 @@ PrefabInstance: propertyPath: _showTexts.Array.data[5] value: 2560x1600 objectReference: {fileID: 0} + - target: {fileID: 8504571007063652911, guid: 7f72e35a938b99d478b47012eacff084, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 0} - target: {fileID: 8689142225738196505, guid: 7f72e35a938b99d478b47012eacff084, type: 3} propertyPath: m_Name @@ -8949,6 +8984,11 @@ PrefabInstance: propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName value: UnityEngine.Object, UnityEngine objectReference: {fileID: 0} + - target: {fileID: 3575534281430294941, guid: b3f2a3962650de54a8acd104167be5f6, + type: 3} + propertyPath: m_fontAsset + value: + objectReference: {fileID: 0} - target: {fileID: 5021112405580821667, guid: b3f2a3962650de54a8acd104167be5f6, type: 3} propertyPath: m_fontSize @@ -8958,8 +8998,7 @@ PrefabInstance: type: 3} propertyPath: m_fontAsset value: - objectReference: {fileID: 11400000, guid: f04cfd53e22bdc14b808906f4d98571b, - type: 2} + objectReference: {fileID: 0} - target: {fileID: 5021112405580821667, guid: b3f2a3962650de54a8acd104167be5f6, type: 3} propertyPath: m_fontColor.b diff --git a/Assets/Launcher.unity b/Assets/Launcher.unity index 56ff39f..a6b211b 100644 --- a/Assets/Launcher.unity +++ b/Assets/Launcher.unity @@ -722,7 +722,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 11499388, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_EditorResourceMode - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 11499388, guid: adb3eb1c35fcff14f89fba7b05c9d71c, type: 3} propertyPath: m_JsonHelperTypeName @@ -1276,7 +1276,9 @@ MonoBehaviour: _referenceResolution: {x: 2048, y: 1152} _adaptUiCanvasToViewport: 1 _enableBlackMask: 1 + _maskSortingOrder: 32767 _autoCollectSceneCanvases: 1 + _canvasProbeInterval: 0.2 _uiRoots: - {fileID: 934951765} --- !u!1 &1852670052 diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index a771b3b..f80ab8a 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -8,9 +8,6 @@ EditorBuildSettings: - enabled: 1 path: Assets/Launcher.unity guid: 9d2d51bf0fc3dfc42908e3a7a64f4feb - - enabled: 1 - path: Assets/GameMain/Scenes/GameplayA.unity - guid: 639c98846a76d624cbac99ade4a1e1a3 - enabled: 1 path: Assets/GameMain/Scenes/Menu.unity guid: 5ae1171af6ab9b646b7a915598c657f1 diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 38cf45f..8d09e6a 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -831,9 +831,12 @@ PlayerSettings: tvOS: DOTWEEN additionalCompilerArguments: {} platformArchitecture: {} - scriptingBackend: {} - il2cppCompilerConfiguration: {} - il2cppCodeGeneration: {} + scriptingBackend: + Standalone: 1 + il2cppCompilerConfiguration: + Standalone: 1 + il2cppCodeGeneration: + Standalone: 0 managedStrippingLevel: EmbeddedLinux: 1 GameCoreScarlett: 1 @@ -843,6 +846,7 @@ PlayerSettings: PS5: 1 QNX: 1 Stadia: 1 + Standalone: 4 VisionOS: 1 WebGL: 1 Windows Store Apps: 1 diff --git a/数据表/DialogLine.txt b/数据表/DialogLine.txt index 5f312f8..db98e9f 100644 --- a/数据表/DialogLine.txt +++ b/数据表/DialogLine.txt @@ -13,7 +13,7 @@ 100300001 Other 旁白 0 你是新入将作监的画图令史,今日正是你当值的第一天。 None 1.00300001 1003.00001 100300002 LiJie 李诫 1 你便是新任的画图令史? None 1.00300002 1003.00002 100300003 LiJie 李诫 1 来得正好。 None 1.00300003 1003.00003 - 100300004 Player 玩家 0 属下正是,见过李主簿。 None 1.00300004 1003.00004 + 100300004 Player 我 0 属下正是,见过李主簿。 None 1.00300004 1003.00004 100300005 LiJie 李诫 1 方才工地塌架,你也有所耳闻。 None 1.00300005 1003.00005 100300006 LiJie 李诫 1 这工头竟拿柳木来替代楠木,企图瞒天过海,结果却落得如此下场, None 1.00300006 1003.00006 100300007 LiJie 李诫 1 幸好方才无人员伤亡,才让这工头躲过一劫。 None 1.00300007 1003.00007 @@ -21,11 +21,11 @@ 100300009 LiJie 李诫 1 而我们的职责,就是尽早发现这般祸患,防止酿成更大的问题。 None 1.00300009 1003.00009 100300010 LiJie 李诫 1 无规矩,则屋不立;无准绳,则工不正。 None 1.0030001 1003.0001 100300011 LiJie 李诫 1 你也要牢记。 None 1.00300011 1003.00011 - 100300012 Player 玩家 0 是,李主簿。 None 1.00300012 1003.00012 + 100300012 Player 我 0 是,李主簿。 None 1.00300012 1003.00012 100300013 LiJie 李诫 1 你既为画图令史,第一要务便是识木、辨材、熟用器具。 None 1.00300013 1003.00013 100300014 LiJie 李诫 1 现在随我去库房,我来带你认识水准、绳墨、曲尺、方斗这些营造根本之器。 None 1.00300014 1003.00014 100300015 LiJie 李诫 1 待你熟习测量与料例,我便亲自带你到工地监工核验,杜绝此类祸事再发。 None 1.00300015 1003.00015 - 100300016 Player 玩家 0 属下遵命。 None 1.00300016 1003.00016 + 100300016 Player 我 0 属下遵命。 None 1.00300016 1003.00016 100300017 Other 旁白 0 你正式踏入将作监,一段以法度正营造的历程,自此开始。 None 1.00300017 1003.00017 100400001 LiJie 李诫 1 这里是库房,存放着营造时用到的所有工具。 None 1.00400001 1004.00001 100400002 Subtitle 字幕 0 檀木质地,刻度以朱砂标注,一端为方、一端为折,刻有 “材份” 刻度。 EntityCue 1.00400002 1004.00002 @@ -36,7 +36,7 @@ 100400007 Subtitle 字幕 0 方斗为楠木所制,斗身刻 “将作监” 款识,墨仓密封,绳墨以生丝浸松烟墨制成,耐磨不褪。 EntityCueClose 1.00400007 1004.00007 100400008 LiJie 李诫 1 营造之事,“直” 为要。 None 1.00400008 1004.00008 100400009 LiJie 李诫 1 工头偷工减料,常以歪木充数,若以绳墨弹线,歪直立现,断无蒙混可能。 None 1.00400009 1004.00009 - 100400010 Player 玩家 0 那这是何物? EntityCue 1.0040001 1004.0001 + 100400010 Player 我 0 那这是何物? EntityCue 1.0040001 1004.0001 100400011 LiJie 李诫 1 这是水准,也名 “水尺”,测地势高低、屋基平正之用。 None 1.00400011 1004.00011 100400012 Subtitle 字幕 0 青铜制的水准器,形制为长槽,内盛水,槽侧刻刻度,槽端有通气孔,是宋代成熟的水准测量工具。 None 1.00400012 1004.00012 100400013 LiJie 李诫 1 汴京地势多洼,营建房宇先以水准定基址 EntityCueClose 1.00400013 1004.00013 @@ -48,14 +48,14 @@ 100400019 LiJie 李诫 1 这些工具,是规矩的具象,料例是制度的准绳,二者相合,才能堵贪弊、正营造。 None 1.00400019 1004.00019 100400020 LiJie 李诫 1 今日先熟其形、知其用。 None 1.0040002 1004.0002 100400021 LiJie 李诫 1 明日随我去工地,以器验工,看看那些贪弊工头还能藏多少猫腻。 None 1.00400021 1004.00021 - 100400022 Player 玩家 0 是,李主簿。 None 1.00400022 1004.00022 + 100400022 Player 我 0 是,李主簿。 None 1.00400022 1004.00022 100500001 LiJie 李诫 0 这工地是谁负责! None 1.00500001 1005.00001 100500002 GongTou 工头 1 李主簿,您怎么又来了… None 1.00500002 1005.00002 100500003 LiJie 李诫 0 我不来,怎知你们又在如何糊弄? None 1.00500003 1005.00003 100500004 LiJie 李诫 0 今日来便是要验工。 None 1.00500004 1005.00004 100500005 LiJie 李诫 0 你且取来昨日库房的曲尺、绳墨、水准,逐一核验梁柱基址。 None 1.00500005 1005.00005 - 100500006 Player 玩家 0 是,李主簿。 None 1.00500006 1005.00006 - 100500007 Player 玩家 0 李主簿,这根立柱偏斜三分,枋木榫口尺寸不符,根本无法咬合! None 1.00500007 1005.00007 + 100500006 Player 我 0 是,李主簿。 None 1.00500006 1005.00006 + 100500007 Player 我 0 李主簿,这根立柱偏斜三分,枋木榫口尺寸不符,根本无法咬合! None 1.00500007 1005.00007 100500008 GongTou 工头 1 这… None 1.00500008 1005.00008 100500009 GongTou 工头 1 … None 1.00500009 1005.00009 100500010 GongTou 工头 1 这只是小偏差,匠人凭手眼便可调整… None 1.0050001 1005.0001 @@ -67,8 +67,8 @@ 100500016 LiJie 李诫 0 今日我便教你按材份制放样、按标准榫卯拼装。 None 1.00500016 1005.00016 100500017 LiJie 李诫 0 先定材份,再画榫头长短、卯眼深浅,每一分都有定数。 None 1.00500017 1005.00017 100500018 LiJie 李诫 0 你来上手试试。 None 1.00500018 1005.00018 - 100600001 Player 玩家 0 原来如此… None 1.00600001 1006.00001 - 100600002 Player 玩家 0 对齐、卡紧、压实,竟如此稳固! None 1.00600002 1006.00002 + 100600001 Player 我 0 原来如此… None 1.00600001 1006.00001 + 100600002 Player 我 0 对齐、卡紧、压实,竟如此稳固! None 1.00600002 1006.00002 100600003 LiJie 李诫 0 这便是法度之力。 None 1.00600003 1006.00003 100600004 LiJie 李诫 0 构件按图预制,到工地只需精准拼装,既省工,又让贪弊者无可乘之机。 None 1.00600004 1006.00004 100600005 LiJie 李诫 0 往后所有构件,必须先以尺量、以图定、以榫卯合,不合格一律不准上架! None 1.00600005 1006.00005 @@ -103,7 +103,7 @@ 200200024 LiJie 李诫 0 都料匠,你敢应否? None 2.00200024 2002.00024 200200025 LaoDu 老都料匠 1 有何不敢! None 2.00200025 2002.00025 200200026 LaoDu 老都料匠 1 老身的手艺,还怕比不过一纸刻度? None 2.00200026 2002.00026 - 200200027 Player 玩家 0 属下必不负李丞所托! None 2.00200027 2002.00027 + 200200027 Player 我 0 属下必不负李丞所托! None 2.00200027 2002.00027 200200028 Other 旁白 0 一场关乎 “古法” 与 “新法” 的对决,就此展开; None 2.00200028 2002.00028 200200029 Other 旁白 0 而你手中的曲尺,不再只是验工的工具,更是书写营造法度的笔。 None 2.00200029 2002.00029 200300002 LiJie 李诫 0 今日便教你材份制的根本,这是重修《营造法式》的核心,也是拼出标准斗拱的关键。 None 2.00300002 2003.00002 @@ -113,25 +113,25 @@ 200300006 LiJie 李诫 0 殿宇大小、斗拱高低、榫卯长短,全由这八等材定尺,再无凭口传、靠手感的乱象。 None 2.00300006 2003.00006 200300007 LaoDu 老都料匠 1 不过是把口传的尺寸刻在木上,换个说法罢了,拼斗拱还得看手上功夫! None 2.00300007 2003.00007 200300008 LiJie 李诫 0 你且用这曲尺,量一量这五铺作斗拱的栌斗。 None 2.00300008 2003.00008 - 200300009 Player 玩家 0 回李丞,栌斗方三十二分,高二十分! None 2.00300009 2003.00009 + 200300009 Player 我 0 回李丞,栌斗方三十二分,高二十分! None 2.00300009 2003.00009 200300010 LiJie 李诫 0 没错。五铺作斗拱的华拱、耍头、罗汉枋,每一件构件、每一处榫卯,都有材份定数,半分不差。 None 2.0030001 2003.0001 200300011 LiJie 李诫 0 古法拼斗拱,榫头凭砍、卯眼凭凿,松紧全靠凑;按材份制, None 2.00300011 2003.00011 200300012 LiJie 李诫 0 榫头长 12 分、宽 6 分,卯眼深 10 分、宽 6 分,严丝合缝。 None 2.00300012 2003.00012 200300013 LiJie 李诫 0 先弹中线定基准,再按材份画榫卯轮廓,异地预制的构件,运到工地也能精准拼装。 None 2.00300013 2003.00013 - 200300014 Player 玩家 0 按尺标记,尺寸丝毫不差,原来榫卯可以如此精准! None 2.00300014 2003.00014 + 200300014 Player 我 0 按尺标记,尺寸丝毫不差,原来榫卯可以如此精准! None 2.00300014 2003.00014 200300015 LiJie 李诫 0 都料匠,你四十年手艺,可曾让百组斗拱的榫卯分毫不差? None 2.00300015 2003.00015 200300016 LiJie 李诫 0 可曾实现构件异地预制、现场速拼? None 2.00300016 2003.00016 200300017 LaoDu 老都料匠 1 …工地见真章! None 2.00300017 2003.00017 200300018 LaoDu 老都料匠 1 光说不练不算数! None 2.00300018 2003.00018 200300019 LiJie 李诫 0 你已掌握材份测量与榫卯标记,明日随我去五王邸工地,用这套法度, None 2.00300019 2003.00019 200300020 LiJie 李诫 0 拼出能服天下匠人的五铺作斗拱! None 2.0030002 2003.0002 - 200300021 Player 玩家 0 属下遵命! None 2.00300021 2003.00021 + 200300021 Player 我 0 属下遵命! None 2.00300021 2003.00021 200300022 Other 旁白 0 你终于懂了材份制的真谛,标准化的营造法度,即将在工地接受最严苛的检验。 None 2.00300022 2003.00022 200400001 LiJie 李诫 0 今日对决,只看三点:榫卯严合、拼装速度、构件通用,输者便认材份制为营造正途! None 2.00400001 2004.00001 200400002 LaoDu 老都料匠 1 老夫造了一辈子斗拱,闭眼都能拼! None 2.00400002 2004.00002 200400003 LaoDu 老都料匠 1 哪用得着什么刻度分份! None 2.00400003 2004.00003 200400004 LiJie 李诫 0 该你了,按材份制,一步一验,精准拼装。 None 2.00400004 2004.00004 - 200500001 Player 玩家 0 李丞,拼装完毕! None 2.00500001 2005.00001 + 200500001 Player 我 0 李丞,拼装完毕! None 2.00500001 2005.00001 200500002 LiJie 李诫 0 都看好了! None 2.00500002 2005.00002 200500003 LiJie 李诫 0 这就是口传手感与材份法度的差别! None 2.00500003 2005.00003 200500004 LiJie 李诫 0 按材份制预制的构件,异地生产、现场互换,百组斗拱皆可通用,省工三倍, None 2.00500004 2005.00004 @@ -145,7 +145,7 @@ 200500012 LaoDu 老都料匠 1 李官人,是老夫守旧迂腐了! None 2.00500012 2005.00012 200500013 LaoDu 老都料匠 1 这材份制,才是能护营造、利万民的真法度! None 2.00500013 2005.00013 200500014 LaoDu 老都料匠 1 往后,老夫愿按法式规矩做工! None 2.00500014 2005.00014 - 200500015 Player 玩家 0 材份定规,榫卯立心,营造之法,终于有了统一准绳! None 2.00500015 2005.00015 + 200500015 Player 我 0 材份定规,榫卯立心,营造之法,终于有了统一准绳! None 2.00500015 2005.00015 200500016 Other 旁白 0 一场对决,折服老匠,更定下了天下营造的模数根基;标准化的营造之路,自此彻底走通。 None 2.00500016 2005.00016 200600001 LaoDu 老都料匠 1 李丞,今日工地实测,让老身彻悟! None 2.00600001 2006.00001 200600002 LaoDu 老都料匠 1 口传终有尽,法度传千年,这材份制,老身服了! None 2.00600002 2006.00002 @@ -154,7 +154,7 @@ 200600005 LiJie 李诫 0 古法手艺是根,标准法度是纲,纲举目张,手艺才能代代不失。 None 2.00600005 2006.00005 200600006 LiJie 李诫 0 今日五铺作斗拱的材份模数、榫卯尺寸、拼装流程,皆是重修《营造法式》的核心实证。 None 2.00600006 2006.00006 200600007 LiJie 李诫 0 你今日以材份制拼斗拱,实测精准、榫卯稳固,足堪担当绘图重任。 None 2.00600007 2006.00007 - 200600008 Player 玩家 0 回李丞,五铺作斗拱材份、榫卯数据已全部归档,可作为官造标准! None 2.00600008 2006.00008 + 200600008 Player 我 0 回李丞,五铺作斗拱材份、榫卯数据已全部归档,可作为官造标准! None 2.00600008 2006.00008 200600009 LiJie 李诫 0 好! None 2.00600009 2006.00009 200600010 LiJie 李诫 0 自今日起,将作监所有大木作构件,皆按此标准备料、放样、拼装;我会奏报朝廷, None 2.0060001 2006.0001 200600011 LiJie 李诫 0 将材份制、榫卯标准、斗拱制度,逐一写入新修《营造法式》。 None 2.00600011 2006.00011 @@ -182,8 +182,8 @@ 300200015 LiJie 李诫 0 你随我五载,熟材份、通榫卯、验过工地、拼过斗拱。 None 3.00200015 3002.00015 300200016 LiJie 李诫 0 今日起,你便是图样编修的主事画图吏,与我一同,将这大宋营造的规矩, None 3.00200016 3002.00016 300200017 LiJie 李诫 0 一笔一画绘在纸上,立为天下准绳! None 3.00200017 3002.00017 - 300200018 Player 玩家 0 属下遵命! None 3.00200018 3002.00018 - 300200019 Player 玩家 0 定以材份为尺,以笔墨为工,绘精准图样,立万世法度,不负李丞所托! None 3.00200019 3002.00019 + 300200018 Player 我 0 属下遵命! None 3.00200018 3002.00018 + 300200019 Player 我 0 定以材份为尺,以笔墨为工,绘精准图样,立万世法度,不负李丞所托! None 3.00200019 3002.00019 300200020 LaoDu 老都料匠 1 李丞,老身虽愚钝,却也知这图样的紧要。 None 3.0020002 3002.0002 300200021 LaoDu 老都料匠 1 我手中有历代匠人传下的营造手谱,虽无规整刻度, None 3.00200021 3002.00021 300200022 LaoDu 老都料匠 1 却记了太庙、朱雀门的形制要诀,愿献出来,为编修图样尽一份力! None 3.00200022 3002.00022 @@ -211,8 +211,8 @@ 300300019 LiJie 李诫 0 先画平图,以这十字墨线为基准,栌斗居其中,先定其材份尺寸,再标斗拱间距。 None 3.00300019 3003.00019 300300020 LaoDu 老都料匠 1 大人,这五铺作斗拱的华拱,与罗汉枋交接处,榫头需稍收一分, None 3.0030002 3003.0002 300300021 LaoDu 老都料匠 1 不然拼装时易卡壳,老身造了几十年,这一点错不了,绘图时莫要漏了。 None 3.00300021 3003.00021 - 300300022 Player 玩家 0 属下记下了:三准为纲,三图为要,材份定数,形制合规,更要融老匠之法, None 3.00300022 3003.00022 - 300300023 Player 玩家 0 让图样既准法度,又合工用。 None 3.00300023 3003.00023 + 300300022 Player 我 0 属下记下了:三准为纲,三图为要,材份定数,形制合规,更要融老匠之法, None 3.00300022 3003.00022 + 300300023 Player 我 0 让图样既准法度,又合工用。 None 3.00300023 3003.00023 300300024 LiJie 李诫 0 不错,制图非为纸上定规,实为工地施工,徒有刻度而不合工用,也是虚图。 None 3.00300024 3003.00024 300300025 LiJie 李诫 0 今日你先定平图的基准与材份标注,我与都料匠在旁看顾,有疑便问,务必做到分毫无差。 None 3.00300025 3003.00025 300300026 Other 旁白 0 绘图室里,墨线为骨,材份为尺,朱砂为色。 None 3.00300026 3003.00026 @@ -226,13 +226,13 @@ 300400005 LaoDu 老都料匠 1 寿康殿偏轩我早年参与过修葺,面阔三间约一丈八尺,进深两间一丈二尺, None 3.00400005 3004.00005 300400006 LaoDu 老都料匠 1 原是小式殿宇,该用六等材,五铺作斗拱便够,只是当年无图样,全凭匠人手眼, None 3.00400006 3004.00006 300400007 LaoDu 老都料匠 1 如今按新法制图,正好见真章! None 3.00400007 3004.00007 - 300400008 Player 玩家 0 属下遵命! None 3.00400008 3004.00008 + 300400008 Player 我 0 属下遵命! None 3.00400008 3004.00008 300400009 LiJie 李诫 0 侧脚柱是官造定规,檐柱微倾二分,内柱微倾一分,既防屋宇侧倾,又显形制层次, None 3.00400009 3004.00009 300400010 LiJie 李诫 0 绘时柱脚需向内收,不可画成直柱! None 3.0040001 3004.0001 300400011 LaoDu 老都料匠 1 画图吏,偏轩是休憩之所,屋架举折不可太陡,不然檐角上翘过甚, None 3.00400011 3004.00011 300400012 LaoDu 老都料匠 1 失了精巧;梁枋与斗拱交接处,榫头需短三分,六等材料细,榫头过长易折。 None 3.00400012 3004.00012 - 300400013 Player 玩家 0 依材份定尺,按法度绘图,竟真能让纸上笔墨,化作宫中轩宇的模样, None 3.00400013 3004.00013 - 300400014 Player 玩家 0 连侧脚、举折这些细节,都分毫不差! None 3.00400014 3004.00014 + 300400013 Player 我 0 依材份定尺,按法度绘图,竟真能让纸上笔墨,化作宫中轩宇的模样, None 3.00400013 3004.00013 + 300400014 Player 我 0 连侧脚、举折这些细节,都分毫不差! None 3.00400014 3004.00014 300400015 LiJie 李诫 0 这便是实战制图的要义! None 3.00400015 3004.00015 300400016 LiJie 李诫 0 制图非为纸上好看,实为工地施工,既要合官造法度,又要贴施工实理, None 3.00400016 3004.00016 300400017 LiJie 李诫 0 你今日将材份制、老匠经验融于一图,才算真正掌了官式制图的门道! None 3.00400017 3004.00017 @@ -249,10 +249,10 @@ 300500002 LiJie 李诫 0 凡下料、拼装、立架,分毫皆按图中材份定数,老都料匠督工,画图吏验尺, None 3.00500002 3005.00002 300500003 LiJie 李诫 0 敢有私改尺寸、克扣物料者,按律处置! None 3.00500003 3005.00003 300500004 LaoDu 老都料匠 1 侧脚柱,六等材制,柱身微倾二分,尺寸合度! None 3.00500004 3005.00004 - 300500005 Player 玩家 0 李丞,五铺作斗拱构件,榫头长 6 分、卯眼深 5 分,皆按六等材定数, None 3.00500005 3005.00005 - 300500006 Player 玩家 0 榫卯严合,可拼装! None 3.00500006 3005.00006 - 300500007 Player 玩家 0 料例皆按图样定数,每一根木料、每一组构件都有标注,少一分一毫,皆可查对, None 3.00500007 3005.00007 - 300500008 Player 玩家 0 休要存贪念! None 3.00500008 3005.00008 + 300500005 Player 我 0 李丞,五铺作斗拱构件,榫头长 6 分、卯眼深 5 分,皆按六等材定数, None 3.00500005 3005.00005 + 300500006 Player 我 0 榫卯严合,可拼装! None 3.00500006 3005.00006 + 300500007 Player 我 0 料例皆按图样定数,每一根木料、每一组构件都有标注,少一分一毫,皆可查对, None 3.00500007 3005.00007 + 300500008 Player 我 0 休要存贪念! None 3.00500008 3005.00008 300500009 GongTou 工头 1 不敢不敢,画图吏明察,小人绝不敢乱来! None 3.00500009 3005.00009 300500010 LaoDu 老都料匠 1 按图施工,就是省心! None 3.0050001 3005.0001 300500011 LaoDu 老都料匠 1 往日拼斗拱,少则半日,多则一日,如今按图对榫,一刻便成,还无半分偏差, None 3.00500011 3005.00011 @@ -263,9 +263,9 @@ 300500016 LaoDu 老都料匠 1 老身活了大半辈子,今日才知,营造之事,有图有法,方能事半功倍。 None 3.00500016 3005.00016 300500017 LaoDu 老都料匠 1 这偏轩的构架,比当年无图营造时,牢固数倍,模样也更周正,往后我等匠人, None 3.00500017 3005.00017 300500018 LaoDu 老都料匠 1 必奉图样为圭臬! None 3.00500018 3005.00018 - 300500019 Player 玩家 0 材份定尺,图样定形,法立则工正,工正则屋固! None 3.00500019 3005.00019 - 300500020 Player 玩家 0 这寿康殿偏轩,便是新法营造的明证,往后天下营造,皆依此例, None 3.0050002 3005.0002 - 300500021 Player 玩家 0 便再无无规之乱、贪弊之害! None 3.00500021 3005.00021 + 300500019 Player 我 0 材份定尺,图样定形,法立则工正,工正则屋固! None 3.00500019 3005.00019 + 300500020 Player 我 0 这寿康殿偏轩,便是新法营造的明证,往后天下营造,皆依此例, None 3.0050002 3005.0002 + 300500021 Player 我 0 便再无无规之乱、贪弊之害! None 3.00500021 3005.00021 300500022 LiJie 李诫 0 寿康殿偏轩大木作功成,后续瓦作、小木作,皆依图样施工! None 3.00500022 3005.00022 300500023 LiJie 李诫 0 今日之功,画图吏主笔制图有功,老都料匠督工有方,匠人依图施工尽责,皆记功一次! None 3.00500023 3005.00023 400100001 Other 旁白 0 元符二年秋,寿康殿偏轩大木作如期功成, None 4.00100001 4001.00001 @@ -281,11 +281,11 @@ 400200009 LaoDu 老都料匠 1 曾与李大人争执于工地,如今见这三十六卷册籍,才知什么是真正的营造之法! None 4.00200009 4002.00009 400200010 LaoDu 老都料匠 1 这纸上的每一根墨线、每一个朱字,都是大人与画图吏的心血,是天下匠人的规矩, None 4.0020001 4002.0001 400200011 LaoDu 老都料匠 1 往后营造,再无无章可循之苦,这是大宋匠人的福分啊! None 4.00200011 4002.00011 - 400200012 Player 玩家 0 属下元祐七年入监,蒙大人教诲,始识水准、绳墨之器, None 4.00200012 4002.00012 - 400200013 Player 玩家 0 初知料例、材份之规;十载相伴,从工地验工到案头制图, None 4.00200013 4002.00013 - 400200014 Player 玩家 0 从拼斗拱、绘轩宇到参编法式,方悟营造之要,在法、在规、在传。 None 4.00200014 4002.00014 - 400200015 Player 玩家 0 这三十六卷法式,是大人的毕生所愿,是众匠人的心血所凝, None 4.00200015 4002.00015 - 400200016 Player 玩家 0 更是大宋营造的万世准绳,属下幸参与其中,此生无憾! None 4.00200016 4002.00016 + 400200012 Player 我 0 属下元祐七年入监,蒙大人教诲,始识水准、绳墨之器, None 4.00200012 4002.00012 + 400200013 Player 我 0 初知料例、材份之规;十载相伴,从工地验工到案头制图, None 4.00200013 4002.00013 + 400200014 Player 我 0 从拼斗拱、绘轩宇到参编法式,方悟营造之要,在法、在规、在传。 None 4.00200014 4002.00014 + 400200015 Player 我 0 这三十六卷法式,是大人的毕生所愿,是众匠人的心血所凝, None 4.00200015 4002.00015 + 400200016 Player 我 0 更是大宋营造的万世准绳,属下幸参与其中,此生无憾! None 4.00200016 4002.00016 400200017 NeiShi 内侍 1 圣旨到 —— 将作监少监李诫接旨! None 4.00200017 4002.00017 400200018 NeiShi 内侍 1 皇帝诏曰:古者营室,度以绳墨,程以功限,乃成万世之基。 None 4.00200018 4002.00018 400200019 NeiShi 内侍 1 将作监少监李诫,恪恭职守,十载编修,成《营造法式》三十六卷。 None 4.00200019 4002.00019 @@ -303,11 +303,11 @@ 400300005 LiJie 李诫 1 当年库房之内,教你识水准、曲尺, None 4.00300005 4003.00005 400300006 LiJie 李诫 1 只为让你知 “无规矩则屋不立”;今日法式行天下,工有规,料有例,图有准, None 4.00300006 4003.00006 400300007 LiJie 李诫 1 国用省,民力安,这便是我编修法式的初心啊。 None 4.00300007 4003.00007 - 400300008 Player 玩家 0 此非大人一人之功,却因大人一人而起。 None 4.00300008 4003.00008 - 400300009 Player 玩家 0 从立材份制破古法之囿,到绘官式图融匠艺于纸,再到定功限料例堵贪弊之源, None 4.00300009 4003.00009 - 400300010 Player 玩家 0 大人以十载心血,整肃天下营造,让匠艺有传,法度有立。 None 4.0030001 4003.0001 - 400300011 Player 玩家 0 属下幸蒙大人教诲,从初识器具的画图令史,到能独掌制图、监工的匠官, None 4.00300011 4003.00011 - 400300012 Player 玩家 0 十载相伴,所学所悟,终身受用。 None 4.00300012 4003.00012 + 400300008 Player 我 0 此非大人一人之功,却因大人一人而起。 None 4.00300008 4003.00008 + 400300009 Player 我 0 从立材份制破古法之囿,到绘官式图融匠艺于纸,再到定功限料例堵贪弊之源, None 4.00300009 4003.00009 + 400300010 Player 我 0 大人以十载心血,整肃天下营造,让匠艺有传,法度有立。 None 4.0030001 4003.0001 + 400300011 Player 我 0 属下幸蒙大人教诲,从初识器具的画图令史,到能独掌制图、监工的匠官, None 4.00300011 4003.00011 + 400300012 Player 我 0 十载相伴,所学所悟,终身受用。 None 4.00300012 4003.00012 400300013 LiJie 李诫 1 非独你我,这是老都料匠等百匠同心,是天下营造人共愿。 None 4.00300013 4003.00013 400300014 LiJie 李诫 1 你如今已能独当一面,往后将作监的营造法度,便要靠你与后生们传承。 None 4.00300014 4003.00014 400300015 LiJie 李诫 1 学馆里的年轻画图吏、匠人,皆如当年的你,需让他们知法度、守规矩、传匠艺, None 4.00300015 4003.00015 diff --git a/数据表/DialogLine.xlsx b/数据表/DialogLine.xlsx index 2b88120cdec17cb4587a775f0fdee89c3e552f61..a2a18ac6069d3ee89207f9d57828c31ee7feda93 100644 GIT binary patch delta 12340 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 delta 12363 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 diff --git a/数据表/UIForm.txt b/数据表/UIForm.txt index 0dedbf8..27ef873 100644 --- a/数据表/UIForm.txt +++ b/数据表/UIForm.txt @@ -5,7 +5,7 @@ 1 弹出框 DialogForm Dialog True False 2 BgForm Default False False 100 主菜单 MenuForm Default False True - 101 设置 SettingForm Default False True + 101 设置 SettingForm Default False False 102 关于 AboutForm Default False True 103 组装玩法UI CombineForm Default False False 104 Mask对话UI MaskDialogForm Dialog False False diff --git a/数据表/UIForm.xlsx b/数据表/UIForm.xlsx index 2e8a2db640f693d81aa1b30be2e32e713e352924..a5644e93f7febd495a1d339a0b37c1bd0cca6529 100644 GIT binary patch delta 1798 zcmV+h2l@E%QteW(lK};$lJ3Vplb8W3f3(voq3u9rPY#4t6yIWU*A<&IB++jF-n89n zWrB~n=j6*dmt@PmY=SQ^wr*99;)tLC6mLbXsvJF+tMC>D)-fem(<;c(0W4Y;mlqk= zl(z<+Osm1T8f@T6%2KX#v~x~Vj4j`RWH#~+<;87lBy;{~Dy$j*U=`qmkQ7UBe@rmP za1RXiL_|lV;1g1Rnq~k9j-dew%2^yoG5+y7Fw*{cVNhmHS-XSwosMzmY{5rya_?e-bmY(wAuMlF!Mdq6!cg&&pZF`zp^j)zSpt5Ip!5@$j<*Do&R>2Du zODn#*ELz&p6AKDjhcYyqauaS0&bqJ+IVP*l+n3kN7chJQxTmrz*@wVY0TDKT+PPk@ z!S&JwMbk&2O;EHB35#DlM(ZSJxxe3v75LtU`|YuWS>#LawdAz(zeNv+XzfFXko;4U zYp30NEPwiwRHR_!2)W{WJO`dAec{4ip=rjA3jsHo7p#0EF{!GZf8c5KpKt=V;2<14 z==aK7CbH&x>mA7{f2~+dtAERXBRlW>`(QoSJ_}z-{-D=iNcntb5ZTiA=qszrhWtj} zNCl&J{)&4oXaz3d+p9~S?!H&&?-J!R^Bw!BAn&7oxEwg|2g3C#2S!n_yc<7vylVP^ zULhvG2QUpm{2~IlDnp{+ZWs!XVklhuq4Q<1nQ5OJV}MwNA-Jj-Hi5=}vb+^$)ftoxyGRYO-nbU%Jzrl%$}lq)Neif8$L+tRBCI{++kcggww6g{jVJqzCWjkk(E z$d(RT-}bX@_y(C+^omDY5eqP+M_tD$@T|WVT{s+Bi%p3{WU22Pkiy2DKFt%Bt8Q z8PiHmhC_l9BXvknW@HWtN{xdX4ws$aKk*E0lw+7#GE$gk8%)$y*gAT8BjSX_P4GQd=?~-HVBT$aINBK#IeZ!a#uC z(}BQS6+$#a#$(kxLd?->CJqUjiqs)Njxt^1=Cl=KBnBt{i?kDxw~n0SP%+K1>eV<= z(IgHDDw@#q8OYJ zJasr0R5XvIXu0Blp<6>mTS(&4pgkmYX)vszannvpOkC%ov?o zt~y>wTvV4ae?$|Tn1+ioAaQBXw52W$@|77H%+jx}9uAh6$;{6a4qSE2khrLx;z)IC zxJZ+@G^oB)hh~ZDJ2NzxrN`C7k&-b1Ok95UaNw#ViNr-=#*ykCahIcmzIGiNt9EV8 z!dhKj^9k;Ml*Gj4M-YiSA0HPV;hl)~musEshi(nms$FG5(^$3Z&{(UhYd*o9l1N)bOC=LN_lT#-)0hE)9Cr1Gy zlhP+a4XqRa0C;RKb98xZWpk5}B_NYPC=LPAlTRo%0r``LC_n+5lgB7L0f>_XDIptH oQ)jy91ONbW6aWAi000000000103ZMW0JM`pDJuq0B>(^b0BR9Pv;Y7A delta 1772 zcmV$6#sZVSmpk_Feo#ps{PS~PN%qYwiKf{xeuBe>e%K6E<68H-5`fBF3MMRY-`a8m#)EnTo8#HE-(bU?Ux#IHYmm3c zx$#^K#G$~51sR1%Y%K7tJTLC3SQ<7#ep>awok}{exLSFl~f8FmRjstZ{@GtQy zPP2+oMsL_+PW%RxIX?RqnURj$>?F0Y-bCb&iBY)~R5Qgtp+W!#c{v?Fb zQYzr+G#~6ryVB8qUZ=s7s7cHwZfXDh8QXDej}2QPkzl``na7?nPS#)F+a`D;{ZP|x z6DH9t3`keeece58!oUA2zTAhwz{+l4Hnby~@PiED*X_?gtPfj5gW4vZ&t`XVTh?7DEj;v}u|W@qx*{2^ zUR%;JX{0Aj$sqpWSf2)E?S20#d;7jT1FMS12r-jAlf7i&#MjnUPX~HnQAOKWhUQYP z;+4hOR*oUhWVL1g@_PCLhED+ZR5vyI5V$HJ!nB?9`F|XpPeW97V-&^&CCiww^mSmg z%}Q2=+qGDM?|r;o?`xPvzVty)4x8{>@~}&mA#@1IKQ%cI#(lubr$0$UDn|B@D`CKM z;EB=~F8mdmX56?CaFb=l>Nk>-rrCtMik@1y11_}qj_@&`TtLh9!ugV+{fKwnu?cjPznMj9Bs3GcYqiZr z2_FV+`7U8DnIG6k1DT(U!{xyFI1sL9IWS40#jXBuUNtbN#Pp8M6dIz{x!7?$HuxT>LdQF5<8 zFw@s2G?ptXl8Wc~cHPr+0DAx|@o*~n4wXDCAwetN_>H%UKFF2i;VuZEbT z)yzB+G!?l=f*cj5#Lwv}bR-rh|BG}JlDBG3Jyc9{s(KAhR5Y1Kf{G^hNHC`<@pHNg z9jwK<@^bQ4&52ebRlNqME^AqO9to<>+#|u9ro_+bDlTv)@Z8~9P|>VO(Q>6zw|{|( zwvf!HL3>E<(_mOjRWPlJ3FmIkwot80dXCHCs_^MnUi9Wx{@s;5*u|MJo{aFHhSX;6LV9?b&P zcVTHT%ZRI@)%mUyz{cfg4-c+7l1N+>W}2vOjl0ke#@h90oZ59YH_qysntuzp*CaMB zKY~cyxqe)HgtsEbU#@eipSlfPr*@SIL*vx0N8_xnskwlAO(JpS+ZXwud@7&G?`8j7 zcSF#S1MGmaXbB0@%a%#31P)h>@3IG5A004(h;z1?F0Y-a})po7ytkO000000RSKX006TDlh6bj OlUFGa22>>g00019A3_cQ