Compare commits
6
Commits
113358330c
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1fae93ee41 | ||
|
|
41ce6f5834 | ||
|
|
251c257489 | ||
|
|
5ae7ca8d56 | ||
|
|
d557153e28 | ||
|
|
facfe7a437 |
+5
-1
@@ -99,4 +99,8 @@ crashlytics-build.properties
|
||||
/bin
|
||||
/.omc
|
||||
/.omx
|
||||
/.dotnet_home
|
||||
/.dotnet_home
|
||||
/.dotnet
|
||||
/.claude
|
||||
/.codex
|
||||
/bin.zip
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{"session_id":"980cf702-c5aa-462f-a54f-9cf7f5a5882d","transcript_path":"C:\\Users\\September\\.claude\\projects\\D--Learn-GameLearn-UnityProjects-Biography-of-Li-Jian\\980cf702-c5aa-462f-a54f-9cf7f5a5882d.jsonl","cwd":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","model":{"id":"MiniMax-M2.7-highspeed","display_name":"MiniMax-M2.7-highspeed"},"workspace":{"current_dir":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","project_dir":"D:\\Learn\\GameLearn\\UnityProjects\\Biography of Li Jian","added_dirs":[]},"version":"2.1.114","output_style":{"name":"default"},"cost":{"total_cost_usd":0.45526774999999997,"total_duration_ms":743042,"total_api_duration_ms":19399,"total_lines_added":0,"total_lines_removed":0},"context_window":{"total_input_tokens":31113,"total_output_tokens":1126,"context_window_size":200000,"current_usage":{"input_tokens":17274,"output_tokens":521,"cache_creation_input_tokens":0,"cache_read_input_tokens":26409},"used_percentage":22,"remaining_percentage":78},"exceeds_200k_tokens":false}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"timestamp": "2026-04-18T09:34:00.712Z",
|
||||
"backgroundTasks": [],
|
||||
"sessionStartTimestamp": "2026-04-18T09:33:32.703Z",
|
||||
"sessionId": "1b0f5c6b-460e-48ef-9f2b-eb516bfbee3e"
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
<UnityGameFramework>
|
||||
<ResourceBuilder>
|
||||
<Settings>
|
||||
<InternalResourceVersion>2</InternalResourceVersion>
|
||||
<Platforms>33</Platforms>
|
||||
<InternalResourceVersion>5</InternalResourceVersion>
|
||||
<Platforms>1</Platforms>
|
||||
<AssetBundleCompression>1</AssetBundleCompression>
|
||||
<CompressionHelperTypeName>UnityGameFramework.Runtime.DefaultCompressionHelper</CompressionHelperTypeName>
|
||||
<AdditionalCompressionSelected>True</AdditionalCompressionSelected>
|
||||
|
||||
@@ -2,75 +2,170 @@
|
||||
<UnityGameFramework>
|
||||
<ResourceCollection>
|
||||
<Resources>
|
||||
<Resource Name="DataTables" FileSystem="GameData" LoadType="0" Packed="True" ResourceGroups="Base" />
|
||||
<Resource Name="Animations" LoadType="0" Packed="True" />
|
||||
<Resource Name="DataTables" FileSystem="GameData" LoadType="0" Packed="True"
|
||||
ResourceGroups="Base" />
|
||||
<Resource Name="Fonts" FileSystem="UI" LoadType="0" Packed="True" ResourceGroups="Base" />
|
||||
<Resource Name="Music/About" FileSystem="Resources" LoadType="0" Packed="True" ResourceGroups="Music" />
|
||||
<Resource Name="Music/Background" FileSystem="Resources" LoadType="0" Packed="True" ResourceGroups="Music" />
|
||||
<Resource Name="Music/Menu" FileSystem="Resources" LoadType="0" Packed="True" ResourceGroups="Music" />
|
||||
<Resource Name="Music" LoadType="0" Packed="True" />
|
||||
<Resource Name="Scenes" FileSystem="Resources" LoadType="0" Packed="True" />
|
||||
<Resource Name="SceneSettings" LoadType="0" Packed="True" />
|
||||
<Resource Name="Sounds" FileSystem="Resources" LoadType="0" Packed="True" />
|
||||
<Resource Name="StoryDirectors" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UIForms" FileSystem="UI" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UIItems" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UISounds" FileSystem="UI" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UISprites/Background" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UISprites/Character" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UISprites/Common" FileSystem="UI" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UISprites/Icons" FileSystem="UI" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UISprites/Logos" FileSystem="UI" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UISprites/Items" LoadType="0" Packed="True" />
|
||||
<Resource Name="UI/UISprites/Puzzle" LoadType="0" Packed="True" />
|
||||
</Resources>
|
||||
<Assets>
|
||||
<Asset Guid="0179316b5fc7c2946a67c5877c02fc30" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="01ce90464744bbb40a9d235bdcc27328" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="02aa49335d2fcbb45ab31069839b45fd" ResourceName="UI/UISprites/Background" />
|
||||
<Asset Guid="044addf3f9fd75c4b979f732f1d5b270" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="04d7dde7615d71b4db1a0c8d67a62e95" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="093f8873cfe371d41b854ed9fb6bff69" ResourceName="Music/About" />
|
||||
<Asset Guid="07f214ae2daa41d4f9673751fc3280dd" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="093f8873cfe371d41b854ed9fb6bff69" ResourceName="Music" />
|
||||
<Asset Guid="09bde4b7a8a50be45815bd1f3abce838" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="09c4f714e027812448469d44cc86d2d2" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="0a65a68c01a76ea4b8b574827a6467aa" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="0bbb3a6d1e6bb8b4a9b4d8f0510d9c63" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="0bd83432643563447b9fa5ec52e774b4" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="0d041269ac2f63d47bc5f189d90dc73d" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="117edaec55654ea469861acf35f9d953" ResourceName="UI/UISprites/Items" />
|
||||
<Asset Guid="156d241f796508c4da4fc354a7fbf5a8" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="1be4472894949437694aead55c6da60f" ResourceName="Sounds" />
|
||||
<Asset Guid="157a6b4146ed51d4fb33729f7bf4b94f" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="15e14474d026f364b98d3c4c6b5da523" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="162b1a9e60c0334429f94cc51a9b3850" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="16673aff138b66b4ca51d886a4d53731" ResourceName="UI/UISprites/Background" />
|
||||
<Asset Guid="1d95f693b5cf2bf4388d82b3f1140663" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="20a90da7b22b040428da0c9c38c892d0" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="23358f158687c9746a5b6f6e65d668d1" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="236433a27ce40a7429b87d14d8fa3035" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="24ca310f92a6796408f1db7647ec4e55" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="2643a75acd3517442bafc354b650a874" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="2732c5cde28a6be4aa906ab72b50e9cb" ResourceName="UI/UISprites/Background" />
|
||||
<Asset Guid="2a67f5919d1047489f4ccb7f1284f893" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="2cf6423f475747d4eb3e41870b932379" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="2d5d0c21b08b4c85bf73c1e2f8f8d123" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="3235cd53f50ca8c449a25441ad0e856b" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="352da872791696c48af3b21132e3e3c3" ResourceName="DataTables" />
|
||||
<Asset Guid="358642ff69390564c97b6fc0bf8c68ff" ResourceName="Fonts" />
|
||||
<Asset Guid="36d78a447440d874eb78f19d33199d49" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="3772a85732f8a6f44a7418878b85b7a5" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="378604b840f56ae49831978cf0e0a6ea" ResourceName="DataTables" />
|
||||
<Asset Guid="3b1611489367200459a07da915578b6a" ResourceName="SceneSettings" />
|
||||
<Asset Guid="3be3fac3611f4584695662c4889f722d" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="3dc7455402dfa462b89a4bbd513955e9" ResourceName="Sounds" />
|
||||
<Asset Guid="3c8baffcec013c7408d1f76689ce5daa" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="3f54fcfdac53aec42ae18a6a1c6d8cb1" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="3f6472056f004f22b1f3f2e8c8c6f55f" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="3f853a1029e766343b69579255e40bbc" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="42fee552f83943645beb47cf7093927a" ResourceName="DataTables" />
|
||||
<Asset Guid="43051836326ff304bb1d6a00c18d8066" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="43631c5a72199e14db78e4d4be0c3efb" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="4439eec25b0603e4abc486862811413a" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="44f4727efe7606f4eb271f10461657ef" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="46f09487b36554346ab9098c1e768ef4" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="4b6383f6f9095514ba98e8b55a997163" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="4b98815ee7c229741abc36fa6cd02ae7" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="4baabebd4d690db45bc75e2e21f84509" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="4d3af79f842ee834c9563e4cfe07185f" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="54cfed6df4096394c82a5a126329fa39" ResourceName="UI/UISprites/Items" />
|
||||
<Asset Guid="56b8df63bbad60749a69e38bc687fadf" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="59ac12de6091b7741bc2819cf790146f" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="5ae1171af6ab9b646b7a915598c657f1" ResourceName="Scenes" />
|
||||
<Asset Guid="5fd62cdd56758ea40b141c5f367c1ce9" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="618c64d95443dbc47a4b6bb662eb686c" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="62af9e5c8f39cfa49af9e10ccf42f1da" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="638ff8ae4a0d15047839cd265d3bc296" ResourceName="Music/Background" />
|
||||
<Asset Guid="639c98846a76d624cbac99ade4a1e1a3" ResourceName="Scenes" />
|
||||
<Asset Guid="638ca342190613c40b05e45091988549" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="638ff8ae4a0d15047839cd265d3bc296" ResourceName="Music" />
|
||||
<Asset Guid="645fab18299f7834d8c5f5268104a3af" ResourceName="UI/UISprites/Items" />
|
||||
<Asset Guid="66fa61c3dfce3444fb3239ac93e6e75d" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="684fc10c9bf962847971ded6767d98fd" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="68d252316715f9f4fbb327802325e2e2" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="68e4ca396e0f3904d9c130d93d0913e3" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="6cbc2c323b77f804fb958fa4eca33998" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="72e76810224064300b7d32e8322a5d12" ResourceName="Sounds" />
|
||||
<Asset Guid="6db006f25209e8f4eba040cdff650c47" ResourceName="UI/UISprites/Items" />
|
||||
<Asset Guid="6fb570be0c658844681401443b633d1f" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="70719c1cfdc4d3d4784c3665bb8971f2" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="70abcb8196a34ab4293f06f432f45446" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="752da669fb380ba48a43fa85c5928d30" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="75da5a4ba56425747be081b9b396ba4e" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="778a252e3434f3b4e868a99cd8313ac5" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="77cbb7c5404c10242ab59953e0746314" ResourceName="Fonts" />
|
||||
<Asset Guid="788b17ff3aef4cd4fb6c808826c875e5" ResourceName="DataTables" />
|
||||
<Asset Guid="7f5aee8da226edf4991598327cb32ce0" ResourceName="UI/UISprites/Logos" />
|
||||
<Asset Guid="7b88f5eeb3bae5a4486c75ecf6485236" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="7f4121720e63d2049bcbf244bda09276" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="7f72e35a938b99d478b47012eacff084" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="8490b01ac63568444ac32877c26f9a23" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="85827e4f006c7bd4eb4438c79643482a" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="864c5f9e92613564c8dbd1864266461a" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="8735a1b5985371f4ca7e8dc34254c249" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="87ba2cae099325c4bb0121cd8df50f43" ResourceName="DataTables" />
|
||||
<Asset Guid="99d811b0183246646a2ce8df996f4bca" ResourceName="Fonts" />
|
||||
<Asset Guid="8ad1d2903d209b147903079c0fb010d5" ResourceName="Scenes" />
|
||||
<Asset Guid="8b58d3d251864744daa79c9c1ac8255a" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="8b5bf82b534f80e4e80baf4dc38a9d7f" ResourceName="UI/UISprites/Items" />
|
||||
<Asset Guid="8c5e5278a9595304db596e8bb92682de" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="8f324dd11c30d7b46878d895c7fc3881" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="8f9c925e3ead32442982e0f67e8571f2" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="913ea5fc4da43ab4d8f125284d4e0852" ResourceName="Music" />
|
||||
<Asset Guid="92f8dd3dabff14341abb15b5048284e8" ResourceName="Music" />
|
||||
<Asset Guid="993a30dececf3c849b753dec84f5a6f0" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="9a1a43803190cbf4a8694a784c3df76b" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="9c1f6f86d307c934bb1b6156ecc22ce4" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="9e64c81855f973b4fb936c535cbd79d2" ResourceName="Music" />
|
||||
<Asset Guid="9f847ec5e66e03e4ead1d3c5f7b510e8" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="a019ae3af8e864616b85773c509f5285" ResourceName="Sounds" />
|
||||
<Asset Guid="a1399a928de585b4db36dd6971370db1" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="a52fc83c9bd7d284cbd8f047b5fda469" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="a57f0cef82d7b0c4891685fa9bf91caa" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="a6031366dd068b84b9797525616de223" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="a71f8bb1b1b2c51438e2bafc884cb02c" ResourceName="DataTables" />
|
||||
<Asset Guid="a793dcd9f61b3344d9df4baf282810d7" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="a84959718d612514583680c96ee8271a" ResourceName="Fonts" />
|
||||
<Asset Guid="a8c07bbe04fdaf04b80e27f651a8edd6" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="ab45c3f613f388d43bbf43ec05eb92e2" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="bf75b984df8a84987bcf3a8bf6e2862d" ResourceName="Sounds" />
|
||||
<Asset Guid="ad8872525ae4eb5459dd61903ceff393" ResourceName="Music" />
|
||||
<Asset Guid="ada32f4de8605cd4bb04aba4adb943bf" ResourceName="Music" />
|
||||
<Asset Guid="ae1fa1f6bf239ae4797a2817dcddfee5" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="af7c6fb5cffde414b89d706442f60597" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="b212fd0c183de84469231d272cb97369" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="b21df4f13557faf47951119fb1504f24" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="b3f2a3962650de54a8acd104167be5f6" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="b996df9807bbd234dbcf6fa7ada6204a" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="bc1b2ae20db242f43b65214eb26971b0" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="bd4cb343cc137574a9b204474df45a3c" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="bf35128460d8332429a161991f49d806" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="bf7e6557b1581e7438430f3a65648592" ResourceName="UI/UISprites/Items" />
|
||||
<Asset Guid="c098ef63f1efa3c4bb54e96ac3fab574" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="c15a39737aa0c254b8ecbed3394c5a1b" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="c27691c7968d39e49b294eba9250769d" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="c2f79190a8337c7459710bcc41462738" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="c48769a908d6a474bbf52ac1ad195815" ResourceName="UI/UISprites/Background" />
|
||||
<Asset Guid="c7d1e11dd37634b48a9dd4012b8e4306" ResourceName="UI/UISounds" />
|
||||
<Asset Guid="caa829ab2ffc71340a69253afdf58365" ResourceName="Music/Menu" />
|
||||
<Asset Guid="cadd0764941c8b646ae79b51d0ea8285" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="ca3aeb28aa266294c9163ecf10aa70a8" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="ca6d8fc1e5685c549abfb652ad07fa31" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="cbdd691c295b2154c99953b24d193443" ResourceName="UI/UISprites/Background" />
|
||||
<Asset Guid="cccff1c0cc661424294ed55e531c767b" ResourceName="UI/UIForms" />
|
||||
<Asset Guid="cfe53cf384344bd47a8680f8c5f97a7b" ResourceName="DataTables" />
|
||||
<Asset Guid="db58965402f12ed47b4dad61a9e48c9d" ResourceName="UI/UISprites/Icons" />
|
||||
<Asset Guid="d0b4c7650a1d0d44e9df12c0edc1ccc4" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="d339ce9c4958967469068a30e0753b30" ResourceName="UI/UISprites/Background" />
|
||||
<Asset Guid="db0d44bf7066d724980daace8ada5c4b" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="dbc1930e18003b14fb0d1acf731a2043" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="dceb29efc859912488c6a669e02a3119" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="dde468eff36cc784fa023279ae4d4d33" ResourceName="SceneSettings" />
|
||||
<Asset Guid="e5ca26c53b6ab8a46b52817008d7c7fa" ResourceName="UI/UISprites/Icons" />
|
||||
<Asset Guid="e16e4557ab120734db2ebf120e075ee6" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="e325e5a7f78eae74a994262db4f3164c" ResourceName="Animations" />
|
||||
<Asset Guid="e82837c9099f69a48b48fc44eb8d119d" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="e830964cdb85ff3429bca484c16bab44" ResourceName="UI/UISounds" />
|
||||
<Asset Guid="e85864330b68dde498dcb6e8711815d3" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="f2f4df0b7211e4c42a5638273525d8ee" ResourceName="UI/UISprites/Common" />
|
||||
<Asset Guid="f438a72a91e1c3c4a9ced40888ffec96" ResourceName="UI/UISprites/Icons" />
|
||||
<Asset Guid="f47370c1af96d194faa21c881c66b148" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="f7f14fc4ff1c5d346b809272cd938d19" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="fbc0a94ca2c7cfb44a81b49cfbcaa319" ResourceName="UI/UISprites/Puzzle" />
|
||||
<Asset Guid="fbe72cf66cec3ad4e9fb3167b291ce4f" ResourceName="StoryDirectors" />
|
||||
<Asset Guid="fc3cff8aba4e30c4ea369cb0a0f84baa" ResourceName="UI/UISprites/Character" />
|
||||
<Asset Guid="fc72328ea6dd8be46b8aabc4a544ebc7" ResourceName="UI/UIItems" />
|
||||
<Asset Guid="fd6750467748e384caced25fde2c774a" ResourceName="Music" />
|
||||
<Asset Guid="fe485fafec0731b44aa3961749b03a0d" ResourceName="UI/UISprites/Puzzle" />
|
||||
</Assets>
|
||||
</ResourceCollection>
|
||||
</UnityGameFramework>
|
||||
@@ -1,7 +1,11 @@
|
||||
# 音乐配置表
|
||||
# 音乐配置表 列1 列2
|
||||
# Id AssetName
|
||||
# int string
|
||||
# 音乐编号 策划备注 资源名称
|
||||
1 菜单音乐 music_menu
|
||||
2 战斗音乐 music_background
|
||||
3 关于音乐 music_about
|
||||
4 Chapter1 music_chapter1
|
||||
5 Combine music_combine
|
||||
6 Chapter3 music_chapter3
|
||||
7 Chapter4 music_chapter4
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
# 场景配置表
|
||||
# Id AssetName BackgroundMusicId
|
||||
# int string int
|
||||
# 场景编号 备注 资源名称 背景音乐编号
|
||||
1 菜单场景 Menu 1
|
||||
2 战斗场景 Main 2
|
||||
3 GameplayA 0
|
||||
# 场景配置表 列1 列2
|
||||
# Id AssetName
|
||||
# int string
|
||||
# 场景编号 备注 资源名称
|
||||
1 菜单场景 Menu
|
||||
2 Main
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
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
|
||||
105 Bottom对话UI BottomBoxDialogForm Dialog False False
|
||||
106 Bubble对话UI BubbleDialogForm Dialog True False
|
||||
107 游戏场景覆盖UI MainOverlayForm Overlay False False
|
||||
108 AI对话UI AIChatForm Overlay False False
|
||||
108 AI对话UI AIChatForm Top False True
|
||||
109 章节标题UI ChapterTitleForm Overlay False False
|
||||
110 AI对话入口 AIChatEntryForm Top False False
|
||||
|
||||
File diff suppressed because one or more lines are too long
+164718
-163868
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7ebcab6e00f2ca9409a747113df30146
|
||||
guid: 98380886ef3ddab4e913ead8133a2e42
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
+24147
-24570
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9e64c81855f973b4fb936c535cbd79d2
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92f8dd3dabff14341abb15b5048284e8
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fd6750467748e384caced25fde2c774a
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 913ea5fc4da43ab4d8f125284d4e0852
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ada32f4de8605cd4bb04aba4adb943bf
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -1,19 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: caa829ab2ffc71340a69253afdf58365
|
||||
guid: ad8872525ae4eb5459dd61903ceff393
|
||||
AudioImporter:
|
||||
serializedVersion: 6
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
loadType: 2
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 0.01
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
preloadAudioData: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
|
||||
@@ -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}
|
||||
@@ -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
|
||||
@@ -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}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace CustomComponent
|
||||
public class AIChatComponent : GameFrameworkComponent
|
||||
{
|
||||
[Header("OpenAI Config")]
|
||||
[SerializeField] private string _configFileName = "openai_config.json";
|
||||
[SerializeField] private string _configFileName = "apikey_config.json";
|
||||
|
||||
[SerializeField] private string _chatCompletionsPath = "/chat/completions";
|
||||
[SerializeField] private string _heartbeatPath = "/models";
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using Event;
|
||||
using Sound;
|
||||
using UI;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
@@ -53,6 +54,15 @@ namespace CustomComponent
|
||||
/// </summary>
|
||||
[SerializeField] private UnityEvent _onPuzzleCompleted = new UnityEvent();
|
||||
|
||||
[SerializeField] [Tooltip("开始拼装时是否自动切换 BGM。")]
|
||||
private bool _autoSwitchBgmOnStart = true;
|
||||
|
||||
[SerializeField] [Tooltip("拼装阶段 BGM Id。")]
|
||||
private int _combineBgmId = 5;
|
||||
|
||||
[SerializeField] [Tooltip("拼装结束后是否自动恢复被打断的 BGM(带进度)。")]
|
||||
private bool _autoRestoreInterruptedBgm = true;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Runtime State
|
||||
@@ -105,6 +115,10 @@ namespace CustomComponent
|
||||
/// </summary>
|
||||
private int _nextLevelStructureIndex = 0;
|
||||
|
||||
private bool _hasInterruptedBgm = false;
|
||||
private int _interruptedBgmId = 0;
|
||||
private float _interruptedBgmTimeSeconds = 0f;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Query
|
||||
@@ -139,6 +153,16 @@ namespace CustomComponent
|
||||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
GameEntry.Event.Subscribe(CombineCompletedEventArgs.EventId, OnCombineCompleted);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
GameEntry.Event.Unsubscribe(CombineCompletedEventArgs.EventId, OnCombineCompleted);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Level Lifecycle
|
||||
@@ -167,6 +191,7 @@ namespace CustomComponent
|
||||
return null;
|
||||
}
|
||||
|
||||
SwitchToCombineBgm();
|
||||
_nextLevelStructureIndex++;
|
||||
return serialId;
|
||||
}
|
||||
@@ -178,6 +203,7 @@ namespace CustomComponent
|
||||
{
|
||||
_formController?.CloseUI();
|
||||
ClearRuntimeContext();
|
||||
RestoreInterruptedBgmIfNeeded();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -318,6 +344,7 @@ namespace CustomComponent
|
||||
{
|
||||
slot.SetOccupiedPart(part);
|
||||
part.PlaceToSlot(slot);
|
||||
HidePlacedPair(slot, part);
|
||||
|
||||
_placedCount++;
|
||||
AdvanceOrderCursor();
|
||||
@@ -338,8 +365,6 @@ namespace CustomComponent
|
||||
}
|
||||
|
||||
_isCompleted = true;
|
||||
|
||||
GameEntry.Event.Fire(this, CombineCompletedEventArgs.Create());
|
||||
_onPuzzleCompleted.Invoke();
|
||||
}
|
||||
|
||||
@@ -371,6 +396,19 @@ namespace CustomComponent
|
||||
GameEntry.Event.Fire(this, CombineFeedbackEventArgs.Create(feedbackType, message));
|
||||
}
|
||||
|
||||
private static void HidePlacedPair(CombineSlot slot, CombineDraggablePart part)
|
||||
{
|
||||
if (slot != null && slot.gameObject != null)
|
||||
{
|
||||
slot.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
if (part != null && part.gameObject != null)
|
||||
{
|
||||
part.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Runtime Context
|
||||
@@ -423,6 +461,53 @@ namespace CustomComponent
|
||||
_isPaused = false;
|
||||
}
|
||||
|
||||
private void OnCombineCompleted(object sender, GameFramework.Event.GameEventArgs e)
|
||||
{
|
||||
if (!(e is CombineCompletedEventArgs))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RestoreInterruptedBgmIfNeeded();
|
||||
}
|
||||
|
||||
private void SwitchToCombineBgm()
|
||||
{
|
||||
if (!_autoSwitchBgmOnStart || _combineBgmId <= 0 || GameEntry.Sound == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_hasInterruptedBgm && GameEntry.Sound.TryGetCurrentBgmSnapshot(out int bgmId, out float timeSeconds))
|
||||
{
|
||||
if (bgmId != _combineBgmId)
|
||||
{
|
||||
_hasInterruptedBgm = true;
|
||||
_interruptedBgmId = bgmId;
|
||||
_interruptedBgmTimeSeconds = Mathf.Max(0f, timeSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
GameEntry.Sound.PlayBGM(_combineBgmId);
|
||||
}
|
||||
|
||||
private void RestoreInterruptedBgmIfNeeded()
|
||||
{
|
||||
if (!_autoRestoreInterruptedBgm || !_hasInterruptedBgm || GameEntry.Sound == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_interruptedBgmId > 0)
|
||||
{
|
||||
GameEntry.Sound.PlayBGM(_interruptedBgmId, _interruptedBgmTimeSeconds);
|
||||
}
|
||||
|
||||
_hasInterruptedBgm = false;
|
||||
_interruptedBgmId = 0;
|
||||
_interruptedBgmTimeSeconds = 0f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前拖拽根节点。
|
||||
/// </summary>
|
||||
@@ -569,6 +654,7 @@ namespace CustomComponent
|
||||
for (int i = 0; i < _orderedSlots.Count; i++)
|
||||
{
|
||||
CombineSlot slot = _orderedSlots[i];
|
||||
slot.gameObject.SetActive(true);
|
||||
slot.BindController(this);
|
||||
slot.ResetSlot();
|
||||
}
|
||||
@@ -587,6 +673,7 @@ namespace CustomComponent
|
||||
continue;
|
||||
}
|
||||
|
||||
part.gameObject.SetActive(true);
|
||||
part.BindController(this);
|
||||
part.CacheSpawnState();
|
||||
part.ResetToSpawn();
|
||||
|
||||
@@ -55,6 +55,15 @@ namespace CustomComponent
|
||||
private int _nextChapterTitleRequestId = 1;
|
||||
private bool _chapterTitleShownAfterInit;
|
||||
|
||||
[Header("章节标题过场")]
|
||||
[SerializeField] [Min(0f)] private float _chapterTitleDimFadeInDuration = 0.2f;
|
||||
[SerializeField] [Min(0f)] private float _chapterTitlePreBlackDuration = 0.25f;
|
||||
[SerializeField] [Min(0f)] private float _chapterTitleTitleFadeInDelay = 0f;
|
||||
[SerializeField] [Min(0f)] private float _chapterTitleFadeInDuration = 0.3f;
|
||||
[SerializeField] [Min(0f)] private float _chapterTitleHoldDuration = 1.2f;
|
||||
[SerializeField] [Min(0f)] private float _chapterTitleFadeOutDuration = 0.3f;
|
||||
[SerializeField] [Min(0f)] private float _chapterTitleDimFadeOutDuration = 0.2f;
|
||||
|
||||
private int _currentChapterId;
|
||||
private int _currentLineIndex = -1;
|
||||
private bool _isInitialized;
|
||||
@@ -572,7 +581,14 @@ namespace CustomComponent
|
||||
ChapterId = _currentChapterId,
|
||||
RequestId = requestId,
|
||||
Title = BuildChapterTitle(_currentChapterId),
|
||||
Subtitle = subtitle
|
||||
Subtitle = subtitle,
|
||||
DimFadeInDuration = _chapterTitleDimFadeInDuration,
|
||||
PreBlackDuration = _chapterTitlePreBlackDuration,
|
||||
TitleFadeInDelay = _chapterTitleTitleFadeInDelay,
|
||||
TitleFadeInDuration = _chapterTitleFadeInDuration,
|
||||
HoldDuration = _chapterTitleHoldDuration,
|
||||
TitleFadeOutDuration = _chapterTitleFadeOutDuration,
|
||||
DimFadeOutDuration = _chapterTitleDimFadeOutDuration
|
||||
};
|
||||
|
||||
int? formSerialId = GameEntry.UI.OpenUIForm(UIFormId.ChapterTitleForm, context);
|
||||
|
||||
@@ -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<Transform> _uiRoots = new List<Transform>();
|
||||
|
||||
private readonly List<Canvas> _canvasBuffer = new List<Canvas>(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<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.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<Canvas>();
|
||||
_maskCanvas.renderMode = RenderMode.ScreenSpaceOverlay;
|
||||
_maskCanvas.overrideSorting = true;
|
||||
_maskCanvas.sortingOrder = short.MaxValue;
|
||||
_maskCanvas.sortingOrder = Mathf.Clamp(_maskSortingOrder, short.MinValue, short.MaxValue);
|
||||
|
||||
CanvasScaler scaler = maskRoot.GetComponent<CanvasScaler>();
|
||||
scaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize;
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace CustomComponent
|
||||
{
|
||||
[CreateAssetMenu(menuName = "Story/Directive/Change BGM", fileName = "Directive_ChangeBGM")]
|
||||
public sealed class StoryChangeBgmDirectiveAsset : StoryDirectiveAsset
|
||||
{
|
||||
[SerializeField] [Tooltip("BGM 配置表 Id;<=0 表示停止当前 BGM。")]
|
||||
private int _bgmId = 0;
|
||||
|
||||
public override string ActionName => "ChangeBGM";
|
||||
|
||||
public override void Execute(StoryDirectorComponent director)
|
||||
{
|
||||
if (director == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
director.ExecuteChangeBgm(_bgmId);
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b2f756304e6e46b48c7cabf5887971fc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -8,7 +8,7 @@ namespace CustomComponent
|
||||
|
||||
[SerializeField] private StoryTriggerType _triggerType = StoryTriggerType.DialogCompleted;
|
||||
|
||||
[SerializeField] [Tooltip("DialogCompleted 时为对话 Id;<=0 表示该触发类型下的任意 Id。")]
|
||||
[SerializeField] [Tooltip("触发来源 Id;<=0 表示该触发类型下的任意 Id。")]
|
||||
private int _triggerId = 0;
|
||||
|
||||
public bool IsEnabled => _enabled;
|
||||
@@ -28,7 +28,7 @@ namespace CustomComponent
|
||||
return false;
|
||||
}
|
||||
|
||||
if (triggerType == StoryTriggerType.DialogCompleted && _triggerId > 0 && _triggerId != triggerId)
|
||||
if (_triggerId > 0 && _triggerId != triggerId)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Event;
|
||||
using Sound;
|
||||
using UI;
|
||||
using UnityEngine;
|
||||
using UnityGameFramework.Runtime;
|
||||
@@ -29,6 +30,7 @@ namespace CustomComponent
|
||||
private int _nextBackgroundRequestId = 1;
|
||||
private int _lastBackgroundRequestId;
|
||||
private int _completedBackgroundRequestId;
|
||||
private int _lastStartedCombineTriggerId;
|
||||
|
||||
private struct PendingDirectiveInvocation
|
||||
{
|
||||
@@ -66,6 +68,7 @@ namespace CustomComponent
|
||||
_consumedDirectiveTokens.Clear();
|
||||
_queuedDirectiveTokens.Clear();
|
||||
_pendingDirectives.Clear();
|
||||
_lastStartedCombineTriggerId = 0;
|
||||
}
|
||||
|
||||
private void OnDialogCompleted(object sender, GameFramework.Event.GameEventArgs e)
|
||||
@@ -85,7 +88,7 @@ namespace CustomComponent
|
||||
return;
|
||||
}
|
||||
|
||||
ExecuteDirectives(StoryTriggerType.CombineCompleted, 0);
|
||||
ExecuteDirectives(StoryTriggerType.CombineCompleted, _lastStartedCombineTriggerId);
|
||||
}
|
||||
|
||||
private void ExecuteDirectives(StoryTriggerType triggerType, int triggerId)
|
||||
@@ -136,6 +139,11 @@ namespace CustomComponent
|
||||
|
||||
private void ExecuteDirective(StoryDirectiveAsset directive, StoryTriggerType triggerType, int triggerId)
|
||||
{
|
||||
if (directive is StoryStartCombineDirectiveAsset)
|
||||
{
|
||||
_lastStartedCombineTriggerId = triggerId;
|
||||
}
|
||||
|
||||
directive.Execute(this);
|
||||
|
||||
if (_verboseLog)
|
||||
@@ -266,6 +274,27 @@ namespace CustomComponent
|
||||
}
|
||||
}
|
||||
|
||||
public void ExecuteChangeBgm(int bgmId)
|
||||
{
|
||||
if (GameEntry.Sound == null)
|
||||
{
|
||||
Log.Warning("StoryDirector change BGM failed. Sound component is missing.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (bgmId <= 0)
|
||||
{
|
||||
GameEntry.Sound.StopMusic();
|
||||
return;
|
||||
}
|
||||
|
||||
int? serialId = GameEntry.Sound.PlayBGM(bgmId);
|
||||
if (!serialId.HasValue)
|
||||
{
|
||||
Log.Warning("StoryDirector change BGM failed. bgmId={0}", bgmId.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public void ExecuteEndChapter(int chapterId)
|
||||
{
|
||||
int finalChapterId = chapterId > 0
|
||||
|
||||
@@ -31,15 +31,6 @@ namespace DataTable
|
||||
private set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取背景音乐编号。
|
||||
/// </summary>
|
||||
public int BackgroundMusicId
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public override bool ParseDataRow(string dataRowString, object userData)
|
||||
{
|
||||
string[] columnStrings = dataRowString.Split(DataTableExtension.DataSplitSeparators);
|
||||
@@ -53,7 +44,6 @@ namespace DataTable
|
||||
m_Id = int.Parse(columnStrings[index++]);
|
||||
index++;
|
||||
AssetName = columnStrings[index++];
|
||||
BackgroundMusicId = int.Parse(columnStrings[index++]);
|
||||
|
||||
GeneratePropertyArray();
|
||||
return true;
|
||||
@@ -67,7 +57,6 @@ namespace DataTable
|
||||
{
|
||||
m_Id = binaryReader.Read7BitEncodedInt32();
|
||||
AssetName = binaryReader.ReadString();
|
||||
BackgroundMusicId = binaryReader.Read7BitEncodedInt32();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@ namespace Procedure
|
||||
{
|
||||
private int _nextSceneId = 0;
|
||||
private bool _isChangeSceneComplete = false;
|
||||
private int _backgroundMusicId = 0;
|
||||
|
||||
public override bool UseNativeDialog => false;
|
||||
|
||||
@@ -59,7 +58,6 @@ namespace Procedure
|
||||
|
||||
GameEntry.Scene.LoadScene(AssetUtility.GetSceneAsset(drScene.AssetName), Constant.AssetPriority.SceneAsset,
|
||||
this);
|
||||
_backgroundMusicId = drScene.BackgroundMusicId;
|
||||
}
|
||||
|
||||
protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
|
||||
@@ -110,11 +108,6 @@ namespace Procedure
|
||||
|
||||
Log.Info("Load scene '{0}' OK.", ne.SceneAssetName);
|
||||
|
||||
if (_backgroundMusicId > 0)
|
||||
{
|
||||
GameEntry.Sound.PlayBGM(_backgroundMusicId);
|
||||
}
|
||||
|
||||
_isChangeSceneComplete = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,25 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using DataTable;
|
||||
using Definition.Enum;
|
||||
using Event;
|
||||
using GameFramework.DataTable;
|
||||
using GameFramework.Event;
|
||||
using GameFramework.Fsm;
|
||||
using GameFramework.Procedure;
|
||||
using UnityEngine;
|
||||
using UI;
|
||||
using UnityGameFramework.Runtime;
|
||||
|
||||
namespace Procedure
|
||||
{
|
||||
public class ProcedureMain : ProcedureBase
|
||||
{
|
||||
private const int InitialChapterId = 1;
|
||||
private const int InitialDialogId = 1001;
|
||||
private const int DialogChapterDivisor = 1000;
|
||||
|
||||
private IDataTable<DRDialog> _dtDialog;
|
||||
private bool _pendingSceneChange;
|
||||
private int _pendingSceneId;
|
||||
|
||||
public override bool UseNativeDialog => false;
|
||||
|
||||
protected override void OnEnter(IFsm<IProcedureManager> procedureOwner)
|
||||
@@ -16,8 +27,139 @@ namespace Procedure
|
||||
base.OnEnter(procedureOwner);
|
||||
AIChatEntryRuntime.EnsureOpen();
|
||||
|
||||
GameEntry.Dialog.Init(1);
|
||||
GameEntry.Dialog.StartDialog(1001);
|
||||
GameEntry.Event.Subscribe(StoryChapterEndedEventArgs.EventId, OnStoryChapterEnded);
|
||||
_pendingSceneChange = false;
|
||||
_pendingSceneId = 0;
|
||||
|
||||
GameEntry.Dialog.Init(InitialChapterId);
|
||||
GameEntry.Dialog.StartDialog(InitialDialogId);
|
||||
}
|
||||
|
||||
protected override void OnLeave(IFsm<IProcedureManager> procedureOwner, bool isShutdown)
|
||||
{
|
||||
GameEntry.Event.Unsubscribe(StoryChapterEndedEventArgs.EventId, OnStoryChapterEnded);
|
||||
base.OnLeave(procedureOwner, isShutdown);
|
||||
}
|
||||
|
||||
protected override void OnUpdate(IFsm<IProcedureManager> procedureOwner, float elapseSeconds,
|
||||
float realElapseSeconds)
|
||||
{
|
||||
base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
|
||||
|
||||
if (!_pendingSceneChange)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_pendingSceneChange = false;
|
||||
procedureOwner.SetData<VarInt32>("NextSceneId", _pendingSceneId);
|
||||
ChangeState<ProcedureChangeScene>(procedureOwner);
|
||||
}
|
||||
|
||||
private void OnStoryChapterEnded(object sender, GameEventArgs e)
|
||||
{
|
||||
if (!(e is StoryChapterEndedEventArgs args))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int currentChapterId = args.ChapterId > 0
|
||||
? args.ChapterId
|
||||
: (GameEntry.Dialog != null ? GameEntry.Dialog.CurrentChapterId : 0);
|
||||
int nextChapterId = currentChapterId + 1;
|
||||
if (nextChapterId <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TryResolveFirstDialogId(nextChapterId, out int nextDialogId))
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
if (GameEntry.Dialog == null)
|
||||
{
|
||||
Log.Warning("ProcedureMain chapter switch failed. Dialog component is missing.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GameEntry.Dialog.Init(nextChapterId))
|
||||
{
|
||||
Log.Warning("ProcedureMain chapter switch failed. Init chapter '{0}' failed.",
|
||||
nextChapterId.ToString());
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GameEntry.Dialog.StartDialog(nextDialogId))
|
||||
{
|
||||
Log.Warning("ProcedureMain chapter switch failed. Start dialog '{0}' failed.",
|
||||
nextDialogId.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryResolveFirstDialogId(int chapterId, out int dialogId)
|
||||
{
|
||||
dialogId = 0;
|
||||
if (chapterId <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_dtDialog == null)
|
||||
{
|
||||
_dtDialog = GameEntry.DataTable.GetDataTable<DRDialog>();
|
||||
}
|
||||
|
||||
if (_dtDialog == null)
|
||||
{
|
||||
Log.Warning("ProcedureMain chapter switch failed. Data table DRDialog is missing.");
|
||||
return false;
|
||||
}
|
||||
|
||||
DRDialog[] dialogRows = _dtDialog.GetDataRows((a, b) => a.Id.CompareTo(b.Id));
|
||||
for (int i = 0; i < dialogRows.Length; i++)
|
||||
{
|
||||
DRDialog row = dialogRows[i];
|
||||
if (row == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ParseChapterIdFromDialogId(row.Id) != chapterId)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
dialogId = row.Id;
|
||||
return dialogId > 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static int ParseChapterIdFromDialogId(int dialogId)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,10 +69,11 @@ namespace Procedure
|
||||
e.Subscribe(MenuSettingEventArgs.EventId, MenuSetting);
|
||||
e.Subscribe(MenuExitEventArgs.EventId, MenuExit);
|
||||
e.Subscribe(SettingSaveEventArgs.EventId, SettingSave);
|
||||
|
||||
|
||||
|
||||
_menuFormController = new MenuFormController();
|
||||
_menuFormController.OpenUI(new MenuFormContext());
|
||||
|
||||
GameEntry.Sound.PlayBGM(1);
|
||||
}
|
||||
|
||||
protected override void OnLeave(IFsm<IProcedureManager> procedureOwner, bool isShutdown)
|
||||
|
||||
@@ -3,6 +3,7 @@ using DataTable;
|
||||
using Definition;
|
||||
using GameFramework.DataTable;
|
||||
using GameFramework.Sound;
|
||||
using UnityEngine;
|
||||
using UnityGameFramework.Runtime;
|
||||
|
||||
namespace Sound
|
||||
@@ -11,8 +12,17 @@ namespace Sound
|
||||
{
|
||||
private const float FadeVolumeDuration = 1f;
|
||||
private static int? s_MusicSerialId = null;
|
||||
private static int? s_CurrentBgmId = null;
|
||||
private static float s_CurrentBgmStartOffsetSeconds = 0f;
|
||||
private static float s_CurrentBgmStartRealtime = 0f;
|
||||
|
||||
public static int? PlayBGM(this SoundComponent soundComponent, int musicId, object userData = null)
|
||||
{
|
||||
return PlayBGM(soundComponent, musicId, 0f, userData);
|
||||
}
|
||||
|
||||
public static int? PlayBGM(this SoundComponent soundComponent, int musicId, float startTimeSeconds,
|
||||
object userData = null)
|
||||
{
|
||||
soundComponent.StopMusic();
|
||||
|
||||
@@ -30,8 +40,12 @@ namespace Sound
|
||||
playSoundParams.VolumeInSoundGroup = 1f;
|
||||
playSoundParams.FadeInSeconds = FadeVolumeDuration;
|
||||
playSoundParams.SpatialBlend = 0f;
|
||||
playSoundParams.Time = Mathf.Max(0f, startTimeSeconds);
|
||||
s_MusicSerialId = soundComponent.PlaySound(AssetUtility.GetMusicAsset(drBgm.AssetName), "BGM",
|
||||
Constant.AssetPriority.MusicAsset, playSoundParams, null, userData);
|
||||
s_CurrentBgmId = musicId;
|
||||
s_CurrentBgmStartOffsetSeconds = playSoundParams.Time;
|
||||
s_CurrentBgmStartRealtime = Time.realtimeSinceStartup;
|
||||
return s_MusicSerialId;
|
||||
}
|
||||
|
||||
@@ -44,6 +58,26 @@ namespace Sound
|
||||
|
||||
soundComponent.StopSound(s_MusicSerialId.Value, FadeVolumeDuration);
|
||||
s_MusicSerialId = null;
|
||||
s_CurrentBgmId = null;
|
||||
s_CurrentBgmStartOffsetSeconds = 0f;
|
||||
s_CurrentBgmStartRealtime = 0f;
|
||||
}
|
||||
|
||||
public static bool TryGetCurrentBgmSnapshot(this SoundComponent soundComponent, out int bgmId,
|
||||
out float timeSeconds)
|
||||
{
|
||||
bgmId = 0;
|
||||
timeSeconds = 0f;
|
||||
|
||||
if (!s_MusicSerialId.HasValue || !s_CurrentBgmId.HasValue)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bgmId = s_CurrentBgmId.Value;
|
||||
timeSeconds = s_CurrentBgmStartOffsetSeconds +
|
||||
Mathf.Max(0f, Time.realtimeSinceStartup - s_CurrentBgmStartRealtime);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static int? PlaySE(this SoundComponent soundComponent, int uiSoundId, object userData = null)
|
||||
@@ -104,4 +138,4 @@ namespace Sound
|
||||
GameEntry.Setting.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ namespace UI
|
||||
public class AIChatFormContext : UIContext
|
||||
{
|
||||
public AIChatFormController Controller;
|
||||
public string Title = "AI Chat";
|
||||
public bool ClearHistoryOnOpen = true;
|
||||
public int LanguageMode = 0;
|
||||
public List<AIChatMessageContext> Messages = new List<AIChatMessageContext>();
|
||||
|
||||
@@ -6,5 +6,14 @@ namespace UI
|
||||
public int RequestId = 0;
|
||||
public string Title = string.Empty;
|
||||
public string Subtitle = string.Empty;
|
||||
|
||||
// < 0 表示使用 ChapterTitleForm 上的默认配置。
|
||||
public float DimFadeInDuration = -1f;
|
||||
public float PreBlackDuration = -1f;
|
||||
public float TitleFadeInDelay = -1f;
|
||||
public float TitleFadeInDuration = -1f;
|
||||
public float HoldDuration = -1f;
|
||||
public float TitleFadeOutDuration = -1f;
|
||||
public float DimFadeOutDuration = -1f;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,18 +8,24 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityGameFramework.Runtime;
|
||||
using GeometryTD.CustomComponent;
|
||||
|
||||
namespace UI
|
||||
{
|
||||
/// <summary>
|
||||
/// uGUI 界面组辅助器。
|
||||
/// </summary>
|
||||
[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);
|
||||
|
||||
/// <summary>
|
||||
/// 设置界面组深度。
|
||||
@@ -36,6 +42,7 @@ namespace UI
|
||||
{
|
||||
m_CachedCanvas = gameObject.GetOrAddComponent<Canvas>();
|
||||
gameObject.GetOrAddComponent<GraphicRaycaster>();
|
||||
m_RectTransform = GetComponent<RectTransform>();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
@@ -43,11 +50,94 @@ namespace UI
|
||||
m_CachedCanvas.overrideSorting = true;
|
||||
m_CachedCanvas.sortingOrder = DepthFactor * m_Depth;
|
||||
|
||||
RectTransform transform = GetComponent<RectTransform>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,25 +9,17 @@ namespace UI
|
||||
{
|
||||
public class AIChatForm : UGuiForm
|
||||
{
|
||||
[SerializeField] private TMP_Text _returnButtonText;
|
||||
|
||||
[SerializeField] private TMP_InputField _inputField;
|
||||
|
||||
|
||||
[SerializeField] private RectTransform _dialogContent;
|
||||
|
||||
[SerializeField] private TMP_Text _titleText;
|
||||
|
||||
|
||||
[SerializeField] private ScrollRect _historyScrollRect;
|
||||
|
||||
|
||||
[SerializeField] private AIDialogItem _aiDialogItemPrefab;
|
||||
|
||||
|
||||
[SerializeField] private PlayerDialogItem _playerDialogItemPrefab;
|
||||
|
||||
|
||||
[SerializeField] private HorizonSelectGroup _languageSelectGroup;
|
||||
|
||||
[SerializeField] private string _returnButtonNormalText = "<sprite name=\"KEYBOARD_Esc\"> Back";
|
||||
|
||||
[SerializeField] private string _returnButtonHoverText = "<sprite name=\"KEYBOARD_Esc\"><u> Back </u>";
|
||||
|
||||
private readonly List<Component> _dialogItems = new List<Component>();
|
||||
private AIChatFormController _controller;
|
||||
@@ -81,11 +73,6 @@ namespace UI
|
||||
|
||||
_controller = context.Controller;
|
||||
|
||||
if (_titleText != null && !string.IsNullOrEmpty(context.Title))
|
||||
{
|
||||
_titleText.text = context.Title;
|
||||
}
|
||||
|
||||
if (_languageSelectGroup != null)
|
||||
{
|
||||
int targetLanguageMode = Mathf.Max(0, context.LanguageMode);
|
||||
@@ -184,28 +171,12 @@ namespace UI
|
||||
{
|
||||
CommitInput();
|
||||
}
|
||||
|
||||
public void OnReturnButtonHover()
|
||||
{
|
||||
if (_returnButtonText != null)
|
||||
{
|
||||
_returnButtonText.text = _returnButtonHoverText;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void OnReturnButtonClick()
|
||||
{
|
||||
_controller?.CloseUI();
|
||||
}
|
||||
|
||||
public void OnReturnButtonHoverEnd()
|
||||
{
|
||||
if (_returnButtonText != null)
|
||||
{
|
||||
_returnButtonText.text = _returnButtonNormalText;
|
||||
}
|
||||
}
|
||||
|
||||
private void EnsureReferences()
|
||||
{
|
||||
if (_historyScrollRect == null)
|
||||
|
||||
@@ -128,6 +128,13 @@ namespace UI
|
||||
return;
|
||||
}
|
||||
|
||||
if (!HasSpeakerPortrait(_context.SpeakerId))
|
||||
{
|
||||
ClearSpeakerState();
|
||||
ApplySpeakerLayout(false, false, true);
|
||||
return;
|
||||
}
|
||||
|
||||
bool isRightSpeaker = context.Direction > 0;
|
||||
if (isRightSpeaker)
|
||||
{
|
||||
@@ -379,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;
|
||||
}
|
||||
|
||||
@@ -398,10 +413,7 @@ namespace UI
|
||||
return;
|
||||
}
|
||||
|
||||
if (sprite != null)
|
||||
{
|
||||
_rightImage.sprite = sprite;
|
||||
}
|
||||
_rightImage.sprite = sprite;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -410,10 +422,7 @@ namespace UI
|
||||
return;
|
||||
}
|
||||
|
||||
if (sprite != null)
|
||||
{
|
||||
_leftImage.sprite = sprite;
|
||||
}
|
||||
_leftImage.sprite = sprite;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -447,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))
|
||||
|
||||
@@ -13,14 +13,25 @@ namespace UI
|
||||
[SerializeField] private Image _dimImage;
|
||||
[SerializeField] private TMP_Text _titleText;
|
||||
[SerializeField] private TMP_Text _subtitleText;
|
||||
[SerializeField] private float _dimFadeInDuration = 0.2f;
|
||||
[SerializeField] private float _preBlackDuration = 0.25f;
|
||||
[SerializeField] private float _titleFadeInDelay = 0f;
|
||||
[SerializeField] private float _fadeInDuration = 0.3f;
|
||||
[SerializeField] private float _holdDuration = 1.2f;
|
||||
[SerializeField] private float _fadeOutDuration = 0.3f;
|
||||
[SerializeField] private float _dimFadeOutDuration = 0.2f;
|
||||
|
||||
private Coroutine _playCoroutine;
|
||||
private int _requestId;
|
||||
private int _chapterId;
|
||||
private bool _hasPublishedCompletion;
|
||||
private float _runtimeDimFadeInDuration;
|
||||
private float _runtimePreBlackDuration;
|
||||
private float _runtimeTitleFadeInDelay;
|
||||
private float _runtimeTitleFadeInDuration;
|
||||
private float _runtimeHoldDuration;
|
||||
private float _runtimeTitleFadeOutDuration;
|
||||
private float _runtimeDimFadeOutDuration;
|
||||
|
||||
protected override void OnOpen(object userData)
|
||||
{
|
||||
@@ -33,7 +44,8 @@ namespace UI
|
||||
protected override void OnClose(bool isShutdown, object userData)
|
||||
{
|
||||
StopPlay();
|
||||
SetContentAlpha(0f);
|
||||
SetDimAlpha(0f);
|
||||
SetTitleAlpha(0f);
|
||||
if (!isShutdown)
|
||||
{
|
||||
PublishCompletionIfNeeded();
|
||||
@@ -55,6 +67,11 @@ namespace UI
|
||||
_contentGroup = CreateContentGroup(rootRect);
|
||||
}
|
||||
|
||||
if (_contentGroup != null)
|
||||
{
|
||||
_contentGroup.alpha = 1f;
|
||||
}
|
||||
|
||||
RectTransform contentRect = _contentGroup != null && _contentGroup.transform is RectTransform contentTransform
|
||||
? contentTransform
|
||||
: rootRect;
|
||||
@@ -105,6 +122,7 @@ namespace UI
|
||||
private void ApplyContext(ChapterTitleFormContext context)
|
||||
{
|
||||
_hasPublishedCompletion = false;
|
||||
ResetRuntimeTimings(context);
|
||||
|
||||
if (context == null)
|
||||
{
|
||||
@@ -157,10 +175,17 @@ namespace UI
|
||||
|
||||
private IEnumerator PlayRoutine()
|
||||
{
|
||||
SetContentAlpha(0f);
|
||||
yield return FadeAlpha(0f, 1f, _fadeInDuration);
|
||||
yield return WaitUnscaled(_holdDuration);
|
||||
yield return FadeAlpha(1f, 0f, _fadeOutDuration);
|
||||
SetDimAlpha(0f);
|
||||
SetTitleAlpha(0f);
|
||||
|
||||
yield return FadeDimAlpha(0f, 1f, _runtimeDimFadeInDuration);
|
||||
yield return WaitUnscaled(_runtimePreBlackDuration);
|
||||
yield return WaitUnscaled(_runtimeTitleFadeInDelay);
|
||||
yield return FadeTitleAlpha(0f, 1f, _runtimeTitleFadeInDuration);
|
||||
yield return WaitUnscaled(_runtimeHoldDuration);
|
||||
yield return FadeTitleAlpha(1f, 0f, _runtimeTitleFadeOutDuration);
|
||||
yield return FadeDimAlpha(1f, 0f, _runtimeDimFadeOutDuration);
|
||||
|
||||
_playCoroutine = null;
|
||||
|
||||
PublishCompletionIfNeeded();
|
||||
@@ -170,12 +195,12 @@ namespace UI
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator FadeAlpha(float from, float to, float duration)
|
||||
private IEnumerator FadeDimAlpha(float from, float to, float duration)
|
||||
{
|
||||
float safeDuration = Mathf.Max(0f, duration);
|
||||
if (safeDuration <= 0f)
|
||||
{
|
||||
SetContentAlpha(to);
|
||||
SetDimAlpha(to);
|
||||
yield break;
|
||||
}
|
||||
|
||||
@@ -184,11 +209,32 @@ namespace UI
|
||||
{
|
||||
elapsed += Time.unscaledDeltaTime;
|
||||
float t = Mathf.Clamp01(elapsed / safeDuration);
|
||||
SetContentAlpha(Mathf.Lerp(from, to, t));
|
||||
SetDimAlpha(Mathf.Lerp(from, to, t));
|
||||
yield return null;
|
||||
}
|
||||
|
||||
SetContentAlpha(to);
|
||||
SetDimAlpha(to);
|
||||
}
|
||||
|
||||
private IEnumerator FadeTitleAlpha(float from, float to, float duration)
|
||||
{
|
||||
float safeDuration = Mathf.Max(0f, duration);
|
||||
if (safeDuration <= 0f)
|
||||
{
|
||||
SetTitleAlpha(to);
|
||||
yield break;
|
||||
}
|
||||
|
||||
float elapsed = 0f;
|
||||
while (elapsed < safeDuration)
|
||||
{
|
||||
elapsed += Time.unscaledDeltaTime;
|
||||
float t = Mathf.Clamp01(elapsed / safeDuration);
|
||||
SetTitleAlpha(Mathf.Lerp(from, to, t));
|
||||
yield return null;
|
||||
}
|
||||
|
||||
SetTitleAlpha(to);
|
||||
}
|
||||
|
||||
private static IEnumerator WaitUnscaled(float duration)
|
||||
@@ -207,14 +253,57 @@ namespace UI
|
||||
}
|
||||
}
|
||||
|
||||
private void SetContentAlpha(float alpha)
|
||||
private void SetDimAlpha(float alpha)
|
||||
{
|
||||
if (_contentGroup == null)
|
||||
if (_dimImage == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_contentGroup.alpha = Mathf.Clamp01(alpha);
|
||||
Color color = _dimImage.color;
|
||||
color.a = Mathf.Clamp01(alpha);
|
||||
_dimImage.color = color;
|
||||
}
|
||||
|
||||
private void SetTitleAlpha(float alpha)
|
||||
{
|
||||
float clampedAlpha = Mathf.Clamp01(alpha);
|
||||
SetTextAlpha(_titleText, clampedAlpha);
|
||||
SetTextAlpha(_subtitleText, clampedAlpha);
|
||||
}
|
||||
|
||||
private static void SetTextAlpha(TMP_Text text, float alpha)
|
||||
{
|
||||
if (text == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Color color = text.color;
|
||||
color.a = alpha;
|
||||
text.color = color;
|
||||
}
|
||||
|
||||
private void ResetRuntimeTimings(ChapterTitleFormContext context)
|
||||
{
|
||||
_runtimeDimFadeInDuration = ResolveDuration(context != null ? context.DimFadeInDuration : -1f,
|
||||
_dimFadeInDuration);
|
||||
_runtimePreBlackDuration = ResolveDuration(context != null ? context.PreBlackDuration : -1f,
|
||||
_preBlackDuration);
|
||||
_runtimeTitleFadeInDelay = ResolveDuration(context != null ? context.TitleFadeInDelay : -1f,
|
||||
_titleFadeInDelay);
|
||||
_runtimeTitleFadeInDuration = ResolveDuration(context != null ? context.TitleFadeInDuration : -1f,
|
||||
_fadeInDuration);
|
||||
_runtimeHoldDuration = ResolveDuration(context != null ? context.HoldDuration : -1f, _holdDuration);
|
||||
_runtimeTitleFadeOutDuration = ResolveDuration(context != null ? context.TitleFadeOutDuration : -1f,
|
||||
_fadeOutDuration);
|
||||
_runtimeDimFadeOutDuration = ResolveDuration(context != null ? context.DimFadeOutDuration : -1f,
|
||||
_dimFadeOutDuration);
|
||||
}
|
||||
|
||||
private static float ResolveDuration(float overrideDuration, float fallbackDuration)
|
||||
{
|
||||
return overrideDuration >= 0f ? overrideDuration : Mathf.Max(0f, fallbackDuration);
|
||||
}
|
||||
|
||||
private void PublishCompletionIfNeeded()
|
||||
|
||||
@@ -73,6 +73,8 @@ namespace UI
|
||||
|
||||
private Tween _returnTween;
|
||||
|
||||
private Vector2 _dragPointerOffset = Vector2.zero;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Query
|
||||
@@ -185,10 +187,11 @@ namespace UI
|
||||
_canvasGroup.blocksRaycasts = false;
|
||||
MoveToDragRoot();
|
||||
_rectTransform.SetAsLastSibling();
|
||||
CacheDragOffset(eventData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 拖拽中:按指针增量更新锚点位置。
|
||||
/// 拖拽中:按屏幕坐标映射到父节点局部坐标更新位置。
|
||||
/// </summary>
|
||||
public void OnDrag(PointerEventData eventData)
|
||||
{
|
||||
@@ -197,6 +200,13 @@ namespace UI
|
||||
return;
|
||||
}
|
||||
|
||||
if (TryGetDragParent(out RectTransform dragParent) &&
|
||||
TryGetPointerLocalPosition(eventData, dragParent, out Vector2 pointerLocalPosition))
|
||||
{
|
||||
_rectTransform.anchoredPosition = pointerLocalPosition + _dragPointerOffset;
|
||||
return;
|
||||
}
|
||||
|
||||
_rectTransform.anchoredPosition += eventData.delta;
|
||||
}
|
||||
|
||||
@@ -216,6 +226,11 @@ namespace UI
|
||||
|
||||
if (!_isPlaced)
|
||||
{
|
||||
if (ShouldKeepDroppedInPartArea(eventData))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ReturnToSpawnAnimated();
|
||||
}
|
||||
}
|
||||
@@ -273,6 +288,138 @@ namespace UI
|
||||
}
|
||||
}
|
||||
|
||||
private void CacheDragOffset(PointerEventData eventData)
|
||||
{
|
||||
_dragPointerOffset = Vector2.zero;
|
||||
|
||||
if (!TryGetDragParent(out RectTransform dragParent))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (TryGetPointerLocalPosition(eventData, dragParent, out Vector2 pointerLocalPosition))
|
||||
{
|
||||
_dragPointerOffset = _rectTransform.anchoredPosition - pointerLocalPosition;
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryGetDragParent(out RectTransform dragParent)
|
||||
{
|
||||
dragParent = _rectTransform.parent as RectTransform;
|
||||
return dragParent != null;
|
||||
}
|
||||
|
||||
private bool TryGetPointerLocalPosition(PointerEventData eventData, RectTransform targetRect,
|
||||
out Vector2 localPosition)
|
||||
{
|
||||
localPosition = Vector2.zero;
|
||||
if (eventData == null || targetRect == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Camera eventCamera = ResolveEventCamera(eventData);
|
||||
return RectTransformUtility.ScreenPointToLocalPointInRectangle(targetRect, eventData.position, eventCamera,
|
||||
out localPosition);
|
||||
}
|
||||
|
||||
private Camera ResolveEventCamera(PointerEventData eventData)
|
||||
{
|
||||
if (eventData != null)
|
||||
{
|
||||
if (eventData.pressEventCamera != null)
|
||||
{
|
||||
return eventData.pressEventCamera;
|
||||
}
|
||||
|
||||
if (eventData.enterEventCamera != null)
|
||||
{
|
||||
return eventData.enterEventCamera;
|
||||
}
|
||||
}
|
||||
|
||||
Canvas canvas = GetComponentInParent<Canvas>();
|
||||
if (canvas != null && canvas.renderMode != RenderMode.ScreenSpaceOverlay)
|
||||
{
|
||||
return canvas.worldCamera;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private bool ShouldKeepDroppedInPartArea(PointerEventData eventData)
|
||||
{
|
||||
if (eventData == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!TryGetDragArea(out RectTransform dragArea))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Camera eventCamera = ResolveEventCamera(eventData);
|
||||
if (!RectTransformUtility.RectangleContainsScreenPoint(dragArea, eventData.position, eventCamera))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
ClampInsideDragArea(dragArea);
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool TryGetDragArea(out RectTransform dragArea)
|
||||
{
|
||||
dragArea = null;
|
||||
if (_controller == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
dragArea = _controller.GetDragRoot() as RectTransform;
|
||||
return dragArea != null;
|
||||
}
|
||||
|
||||
private void ClampInsideDragArea(RectTransform dragArea)
|
||||
{
|
||||
if (dragArea == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Vector2 current = _rectTransform.anchoredPosition;
|
||||
Rect areaRect = dragArea.rect;
|
||||
Rect partRect = _rectTransform.rect;
|
||||
Vector2 pivot = _rectTransform.pivot;
|
||||
Vector3 scale = _rectTransform.localScale;
|
||||
|
||||
float width = Mathf.Abs(partRect.width * scale.x);
|
||||
float height = Mathf.Abs(partRect.height * scale.y);
|
||||
float minX = areaRect.xMin + width * Mathf.Clamp01(pivot.x);
|
||||
float maxX = areaRect.xMax - width * (1f - Mathf.Clamp01(pivot.x));
|
||||
float minY = areaRect.yMin + height * Mathf.Clamp01(pivot.y);
|
||||
float maxY = areaRect.yMax - height * (1f - Mathf.Clamp01(pivot.y));
|
||||
|
||||
if (minX > maxX)
|
||||
{
|
||||
float centerX = (areaRect.xMin + areaRect.xMax) * 0.5f;
|
||||
minX = centerX;
|
||||
maxX = centerX;
|
||||
}
|
||||
|
||||
if (minY > maxY)
|
||||
{
|
||||
float centerY = (areaRect.yMin + areaRect.yMax) * 0.5f;
|
||||
minY = centerY;
|
||||
maxY = centerY;
|
||||
}
|
||||
|
||||
current.x = Mathf.Clamp(current.x, minX, maxX);
|
||||
current.y = Mathf.Clamp(current.y, minY, maxY);
|
||||
_rectTransform.anchoredPosition = current;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Placement
|
||||
@@ -307,13 +454,7 @@ namespace UI
|
||||
_currentSlot = slot;
|
||||
_isPlaced = true;
|
||||
_isLocked = _lockAfterPlaced;
|
||||
|
||||
RectTransform snapPoint = slot.SnapPoint;
|
||||
_rectTransform.SetParent(snapPoint != null ? snapPoint : slot.transform, false);
|
||||
_rectTransform.anchoredPosition = Vector2.zero;
|
||||
_rectTransform.localRotation = Quaternion.identity;
|
||||
_rectTransform.localScale = Vector3.one;
|
||||
_canvasGroup.blocksRaycasts = !_isLocked;
|
||||
_canvasGroup.blocksRaycasts = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using CustomComponent;
|
||||
using Event;
|
||||
@@ -37,8 +38,20 @@ namespace UI
|
||||
|
||||
[SerializeField] [Range(0f, 1f)] private float _partSpawnMaxYNormalized = 0.9f;
|
||||
|
||||
[SerializeField] private float _completeToFinalStageDelay = 0.35f;
|
||||
|
||||
[SerializeField] private float _finalStageToCloseDelay = 0.35f;
|
||||
|
||||
private CombineComponent _controller;
|
||||
|
||||
private CombineStageOverlay _stageOverlay;
|
||||
|
||||
private Coroutine _completeFlowCoroutine;
|
||||
|
||||
private bool _completionFlowStarted;
|
||||
|
||||
private bool _fireCompletedEventOnClose;
|
||||
|
||||
private readonly List<GameObject> _runtimeNodes = new();
|
||||
|
||||
#endregion
|
||||
@@ -78,6 +91,10 @@ namespace UI
|
||||
_controller.BindRuntimeContext(_slotRoot, _partRoot);
|
||||
|
||||
GameEntry.Event.Subscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged);
|
||||
GameEntry.Event.Subscribe(CombineProgressEventArgs.EventId, OnCombineProgressChanged);
|
||||
|
||||
_completionFlowStarted = false;
|
||||
_fireCompletedEventOnClose = false;
|
||||
|
||||
if (context.AutoStart)
|
||||
{
|
||||
@@ -104,6 +121,15 @@ namespace UI
|
||||
protected override void OnClose(bool isShutdown, object userData)
|
||||
{
|
||||
GameEntry.Event.Unsubscribe(CombineFeedbackEventArgs.EventId, OnFeedbackChanged);
|
||||
GameEntry.Event.Unsubscribe(CombineProgressEventArgs.EventId, OnCombineProgressChanged);
|
||||
|
||||
StopCompleteFlow();
|
||||
|
||||
if (_fireCompletedEventOnClose)
|
||||
{
|
||||
_fireCompletedEventOnClose = false;
|
||||
GameEntry.Event.Fire(this, CombineCompletedEventArgs.Create());
|
||||
}
|
||||
|
||||
if (_controller != null)
|
||||
{
|
||||
@@ -163,6 +189,8 @@ namespace UI
|
||||
|
||||
private void ClearRuntimeNodes()
|
||||
{
|
||||
_stageOverlay = null;
|
||||
|
||||
for (int i = _runtimeNodes.Count - 1; i >= 0; i--)
|
||||
{
|
||||
GameObject node = _runtimeNodes[i];
|
||||
@@ -213,6 +241,7 @@ namespace UI
|
||||
CombineStageOverlay stageOverlay = structureNode.GetComponentInChildren<CombineStageOverlay>(true);
|
||||
if (stageOverlay != null)
|
||||
{
|
||||
_stageOverlay = stageOverlay;
|
||||
List<CombineSlot> managedSlots = stageOverlay.GetManagedSlots();
|
||||
if (managedSlots.Count > 0)
|
||||
{
|
||||
@@ -313,6 +342,7 @@ namespace UI
|
||||
if (rootRect.width <= 0f || rootRect.height <= 0f)
|
||||
{
|
||||
partRect.anchoredPosition = _partStartAnchoredPosition + Vector2.down * (_partVerticalSpacing * index);
|
||||
ClampAnchoredPositionToPartRoot(partRect);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -325,9 +355,69 @@ namespace UI
|
||||
float maxY = Mathf.Lerp(rootRect.yMin, rootRect.yMax,
|
||||
Mathf.Max(_partSpawnMinYNormalized, _partSpawnMaxYNormalized));
|
||||
|
||||
Vector2 size = GetPartSize(partRect);
|
||||
Vector2 xRange = BuildSafeAxisRange(minX, maxX, rootRect.xMin, rootRect.xMax, size.x, partRect.pivot.x);
|
||||
Vector2 yRange = BuildSafeAxisRange(minY, maxY, rootRect.yMin, rootRect.yMax, size.y, partRect.pivot.y);
|
||||
|
||||
partRect.anchoredPosition = new Vector2(
|
||||
Random.Range(minX, maxX),
|
||||
Random.Range(minY, maxY));
|
||||
Random.Range(xRange.x, xRange.y),
|
||||
Random.Range(yRange.x, yRange.y));
|
||||
}
|
||||
|
||||
private static Vector2 BuildSafeAxisRange(float desiredMin, float desiredMax, float containerMin, float containerMax,
|
||||
float partSize, float pivot)
|
||||
{
|
||||
float min = Mathf.Min(desiredMin, desiredMax);
|
||||
float max = Mathf.Max(desiredMin, desiredMax);
|
||||
|
||||
float size = Mathf.Max(0f, partSize);
|
||||
float safeMin = containerMin + size * Mathf.Clamp01(pivot);
|
||||
float safeMax = containerMax - size * (1f - Mathf.Clamp01(pivot));
|
||||
|
||||
if (safeMin > safeMax)
|
||||
{
|
||||
float center = (containerMin + containerMax) * 0.5f;
|
||||
safeMin = center;
|
||||
safeMax = center;
|
||||
}
|
||||
|
||||
min = Mathf.Clamp(min, safeMin, safeMax);
|
||||
max = Mathf.Clamp(max, safeMin, safeMax);
|
||||
|
||||
if (min > max)
|
||||
{
|
||||
float temp = min;
|
||||
min = max;
|
||||
max = temp;
|
||||
}
|
||||
|
||||
return new Vector2(min, max);
|
||||
}
|
||||
|
||||
private static Vector2 GetPartSize(RectTransform partRect)
|
||||
{
|
||||
Rect rect = partRect.rect;
|
||||
Vector3 scale = partRect.localScale;
|
||||
return new Vector2(
|
||||
Mathf.Abs(rect.width * scale.x),
|
||||
Mathf.Abs(rect.height * scale.y));
|
||||
}
|
||||
|
||||
private void ClampAnchoredPositionToPartRoot(RectTransform partRect)
|
||||
{
|
||||
if (partRect == null || _partRoot == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Rect rootRect = _partRoot.rect;
|
||||
Vector2 anchored = partRect.anchoredPosition;
|
||||
Vector2 size = GetPartSize(partRect);
|
||||
|
||||
Vector2 xRange = BuildSafeAxisRange(anchored.x, anchored.x, rootRect.xMin, rootRect.xMax, size.x, partRect.pivot.x);
|
||||
Vector2 yRange = BuildSafeAxisRange(anchored.y, anchored.y, rootRect.yMin, rootRect.yMax, size.y, partRect.pivot.y);
|
||||
|
||||
partRect.anchoredPosition = new Vector2(xRange.x, yRange.x);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -343,6 +433,60 @@ namespace UI
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCombineProgressChanged(object sender, GameEventArgs e)
|
||||
{
|
||||
if (!(e is CombineProgressEventArgs args))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.TotalSteps <= 0 || args.CurrentStep < args.TotalSteps || _completionFlowStarted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_completionFlowStarted = true;
|
||||
StopCompleteFlow();
|
||||
_completeFlowCoroutine = StartCoroutine(PlayCompleteFlow());
|
||||
}
|
||||
|
||||
private IEnumerator PlayCompleteFlow()
|
||||
{
|
||||
float delayToFinalStage = Mathf.Max(0f, _completeToFinalStageDelay);
|
||||
if (delayToFinalStage > 0f)
|
||||
{
|
||||
yield return new WaitForSecondsRealtime(delayToFinalStage);
|
||||
}
|
||||
|
||||
if (_stageOverlay != null && _controller != null)
|
||||
{
|
||||
// For N parts, progress displays sprite[N-1]; completion tail uses sprite[N].
|
||||
int finalStageIndex = _controller.TotalStep;
|
||||
_stageOverlay.ApplyOverlayByIndex(finalStageIndex);
|
||||
}
|
||||
|
||||
float delayToClose = Mathf.Max(0f, _finalStageToCloseDelay);
|
||||
if (delayToClose > 0f)
|
||||
{
|
||||
yield return new WaitForSecondsRealtime(delayToClose);
|
||||
}
|
||||
|
||||
_fireCompletedEventOnClose = true;
|
||||
_completeFlowCoroutine = null;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void StopCompleteFlow()
|
||||
{
|
||||
if (_completeFlowCoroutine == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
StopCoroutine(_completeFlowCoroutine);
|
||||
_completeFlowCoroutine = null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,19 +96,35 @@ namespace UI
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentStep <= 0 || _stageSprites == null || _stageSprites.Count == 0)
|
||||
// Keep overlay's initial sprite/layout untouched before any placement.
|
||||
if (currentStep <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_stageSprites == null || _stageSprites.Count == 0)
|
||||
{
|
||||
_overlayImage.sprite = null;
|
||||
return;
|
||||
}
|
||||
|
||||
int spriteIndex = Mathf.Clamp(currentStep - 1, 0, _stageSprites.Count - 1);
|
||||
Sprite sprite = _stageSprites[spriteIndex];
|
||||
_overlayImage.sprite = sprite;
|
||||
if (sprite != null)
|
||||
ApplyOverlayByIndex(spriteIndex);
|
||||
}
|
||||
|
||||
public bool ApplyOverlayByIndex(int spriteIndex)
|
||||
{
|
||||
if (_overlayImage == null || _stageSprites == null || _stageSprites.Count == 0)
|
||||
{
|
||||
_overlayImage.SetNativeSize();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (spriteIndex < 0 || spriteIndex >= _stageSprites.Count)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
_overlayImage.sprite = _stageSprites[spriteIndex];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,4 +46,4 @@ namespace UI
|
||||
GameEntry.Event.Fire(this, MenuExitEventArgs.Create());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Image>();
|
||||
|
||||
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<Image>();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnReturnButtonClick()
|
||||
{
|
||||
var dialogParams = new DialogParams
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7acc756222cd0df48a82e3ef2e6fc023
|
||||
guid: 0e39aea8e25b93e43b730fa652754ced
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -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: b2f756304e6e46b48c7cabf5887971fc, type: 3}
|
||||
m_Name: ChangeBGM1001
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 1001
|
||||
_bgmId: 4
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b1611489367200459a07da915578b6a
|
||||
guid: 68e4ca396e0f3904d9c130d93d0913e3
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -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: b2f756304e6e46b48c7cabf5887971fc, type: 3}
|
||||
m_Name: ChangeBGM2005
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 2005
|
||||
_bgmId: 6
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 99d811b0183246646a2ce8df996f4bca
|
||||
guid: 09c4f714e027812448469d44cc86d2d2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 0
|
||||
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: b2f756304e6e46b48c7cabf5887971fc, type: 3}
|
||||
m_Name: ChangeBGM3005
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 3005
|
||||
_bgmId: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 157a6b4146ed51d4fb33729f7bf4b94f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ccd89cbb1579632438412d3b736e314a
|
||||
guid: 85d19bdf6032a2f439ca1316169f03f1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -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: BG2002
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 2002
|
||||
_backgroundAssetName: BG_5.jpg
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9184abe6768547449b5ed4391c1d560a
|
||||
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: 2d4b16a5d76140a1b952ad48774dd89a, type: 3}
|
||||
m_Name: BG2003
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 2003
|
||||
_backgroundAssetName: BG_4.jpg
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 14e6c78971755d04f94c07fa2e66949d
|
||||
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: 2d4b16a5d76140a1b952ad48774dd89a, type: 3}
|
||||
m_Name: BG3001
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 3001
|
||||
_backgroundAssetName: BG_5.jpg
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cfb27d79296becc488722eda9bb63da5
|
||||
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: 2d4b16a5d76140a1b952ad48774dd89a, type: 3}
|
||||
m_Name: BG4002
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 4002
|
||||
_backgroundAssetName: BG_4.jpg
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d11741f6b157d6246acd85f86f6a1a79
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 639c98846a76d624cbac99ade4a1e1a3
|
||||
guid: 90f2d30d7767cf346800345bf35d7837
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
+2
-2
@@ -14,5 +14,5 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 1005
|
||||
_chapterId: 2
|
||||
_triggerId: 1006
|
||||
_chapterId: 1
|
||||
+3
-3
@@ -10,9 +10,9 @@ MonoBehaviour:
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2b63fb6eb96e4d3193dd26b443f856c7, type: 3}
|
||||
m_Name: EndChapter2006
|
||||
m_Name: EndChapter2005
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 2006
|
||||
_chapterId: 3
|
||||
_triggerId: 2005
|
||||
_chapterId: 2
|
||||
+1
-1
@@ -15,4 +15,4 @@ MonoBehaviour:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 3005
|
||||
_chapterId: 4
|
||||
_chapterId: 3
|
||||
+1
-1
@@ -15,4 +15,4 @@ MonoBehaviour:
|
||||
_enabled: 1
|
||||
_triggerType: 0
|
||||
_triggerId: 4004
|
||||
_chapterId: 0
|
||||
_chapterId: 4
|
||||
+2
-3
@@ -1,9 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aafc8e73bab46914083ec0afdb79bb88
|
||||
guid: 6b1b56786ef9b8044bc50680f986568b
|
||||
folderAsset: yes
|
||||
timeCreated: 1528026173
|
||||
licenseType: Pro
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7c15202953ab22f4a9ad24f9f333a791
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+3
-3
@@ -10,9 +10,9 @@ MonoBehaviour:
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8e4367863f5042e1b5b0b3b3b7f62f5e, type: 3}
|
||||
m_Name: Dialog2005
|
||||
m_Name: Dialog1005
|
||||
m_EditorClassIdentifier:
|
||||
_enabled: 1
|
||||
_triggerType: 1
|
||||
_triggerId: 2005
|
||||
_dialogId: 2006
|
||||
_triggerId: 1005
|
||||
_dialogId: 1006
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user