diff --git a/Assets/000_assets/material/M_SquareFrame 1.mat b/Assets/000_assets/material/M_SquareFrame 1.mat index ac4a140e..df46fd8b 100644 --- a/Assets/000_assets/material/M_SquareFrame 1.mat +++ b/Assets/000_assets/material/M_SquareFrame 1.mat @@ -213,7 +213,7 @@ Material: - _Dst: 10 - _DstBlend: 0 - _DstBlendAlpha: 0 - - _EdgeValue: 0.9350733 + - _EdgeValue: 0.7629054 - _EnvironmentReflections: 1 - _FNLfanxiangkaiguan: 0 - _Face: 1 @@ -258,7 +258,7 @@ Material: - _Mask_scale: 1 - _Metallic: 0 - _OcclusionStrength: 1 - - _Opacity: 0.064926684 + - _Opacity: 0.23709458 - _Parallax: 0.005 - _Pass: 0 - _QueueOffset: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Localization-Assets-Shared.asset b/Assets/AddressableAssetsData/AssetGroups/Localization-Assets-Shared.asset index c3f4bda6..f7ad9421 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Localization-Assets-Shared.asset +++ b/Assets/AddressableAssetsData/AssetGroups/Localization-Assets-Shared.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04e36419ad0f0bd45377a7d540689ea9ee7ceb05b10dd8bec904d1bce3150eab -size 1288 +oid sha256:fccb81961034100f9b9d0d761b1412a34bca7c436729bc0258acd1c2dcc348de +size 1492 diff --git a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Simplified) (zh-CN).asset b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Simplified) (zh-CN).asset index 763389e2..04964713 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Simplified) (zh-CN).asset +++ b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Simplified) (zh-CN).asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dba1f02527c509560b7ac00a0db7163d0dda54d4189255487ddebade4d6298e5 -size 1305 +oid sha256:39cd81120f01a46fbbbaedadb62dfe26c5d48278819a14c34838c40945d65e86 +size 1485 diff --git a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Traditional) (zh-TW).asset b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Traditional) (zh-TW).asset index 47f4dcff..64f02d20 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Traditional) (zh-TW).asset +++ b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Traditional) (zh-TW).asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dcc985186b987c3def378cdc5b1551dc416ac762f1f4633ce1e196ff34f94b10 -size 1307 +oid sha256:ea8356e9ac788d466900c4dd1e37aba48674fecfc1e484bfce808d7363459acd +size 1487 diff --git a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-English (en).asset b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-English (en).asset index cdbe3687..fd81d948 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-English (en).asset +++ b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-English (en).asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d28393d3a6374ad1da1dba7b2af9f29fd87633b6cf23b7d82b8e4f9ed916b11 -size 1261 +oid sha256:cce589fc1720a6eddb3d1695967db54c2260c31c55be2393d4f60c9c7cc17df2 +size 1435 diff --git a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Japanese (ja).asset b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Japanese (ja).asset index ebb4623d..11989e3b 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Japanese (ja).asset +++ b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Japanese (ja).asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae1741db12f54540b5e5150eefd5d599800d98ef207f64297b2461df0db31d1b -size 1263 +oid sha256:3d5af9dff98c7c4d87d7d09381a0b729e64cf8578ee31104a5d01803a0025d7e +size 1437 diff --git a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Korean (ko).asset b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Korean (ko).asset index 197e9278..0d6d4ef4 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Korean (ko).asset +++ b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Korean (ko).asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:54391b035e5d1d2b6db182d231af4167d5b427834755391cb37ac4753666c27b -size 1259 +oid sha256:f51959237e2153f07b68a8d3a8ef54fd03be5c8a4fb8738556ac26e5c448e848 +size 1433 diff --git a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Thai (th).asset b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Thai (th).asset index 06f45973..5bb0266d 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Thai (th).asset +++ b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Thai (th).asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbd67aa0f36cb1491c41ada26e016f6e3a10f274f6bed3874e9a01712438d301 -size 1255 +oid sha256:df1169b65f6aeefe65fc5d70086b4141d3e38d45cc442ad4fd39991f90f55a28 +size 1429 diff --git a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Vietnamese (Vietnam) (vi-VN).asset b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Vietnamese (Vietnam) (vi-VN).asset index 4c779cb5..a3a4367a 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Vietnamese (Vietnam) (vi-VN).asset +++ b/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Vietnamese (Vietnam) (vi-VN).asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:91bfe4656ee7f65b4afbcacffc9c409ce2a3feb994b805a62c5d6d8d31663cf9 -size 1305 +oid sha256:e98036060313bfc83cf12ba03753535f6e80aec3dca330a0e781346a16a19722 +size 1485 diff --git a/Assets/FR2_Cache.asset b/Assets/FR2_Cache.asset index fa4bd840..438cd94c 100644 --- a/Assets/FR2_Cache.asset +++ b/Assets/FR2_Cache.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:910dd8b2eb28a401c1bbf1b1dba1bd1951a9d1f39b72c9a33dd33933b2d45f3b -size 8580991 +oid sha256:60dc68ac5a0ba78d0dc6f92fa364b1059e0d8f619f2d736032b095983f04ebd7 +size 8541513 diff --git a/Assets/Scripts/Story.meta b/Assets/Localization/Message.meta similarity index 77% rename from Assets/Scripts/Story.meta rename to Assets/Localization/Message.meta index 944faee4..019ffee8 100644 --- a/Assets/Scripts/Story.meta +++ b/Assets/Localization/Message.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0486971babc04a1419e16413dfce980c +guid: d5e986d3a0508cf4aae911cac5aab212 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Localization/Message/Message Shared Data.asset b/Assets/Localization/Message/Message Shared Data.asset new file mode 100644 index 00000000..412c8e9a --- /dev/null +++ b/Assets/Localization/Message/Message Shared Data.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c87bf3436915bf53811fc72ce6191c22e9cbf2322daf6f2128237cdc5a4ce57c +size 905 diff --git a/Assets/Localization/Message/Message Shared Data.asset.meta b/Assets/Localization/Message/Message Shared Data.asset.meta new file mode 100644 index 00000000..a6aa547f --- /dev/null +++ b/Assets/Localization/Message/Message Shared Data.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c799daafc19ce54a8ba2d09737bc2aa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Message/Message.asset b/Assets/Localization/Message/Message.asset new file mode 100644 index 00000000..a6e17d03 --- /dev/null +++ b/Assets/Localization/Message/Message.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d857d58f19a3f39dddb00766aaa0d37b4f4aae3818184db1e4bf8346c68c439 +size 1161 diff --git a/Assets/Localization/Message/Message.asset.meta b/Assets/Localization/Message/Message.asset.meta new file mode 100644 index 00000000..315142f9 --- /dev/null +++ b/Assets/Localization/Message/Message.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 88d982fd5c6bda04e8ea20350cd159aa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Message/Message_en.asset b/Assets/Localization/Message/Message_en.asset new file mode 100644 index 00000000..7e9ff3ae --- /dev/null +++ b/Assets/Localization/Message/Message_en.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e0847d666a7112d124cf7bba87ddbbbc1d43772457cfdff697769702f0db511 +size 667 diff --git a/Assets/Localization/Message/Message_en.asset.meta b/Assets/Localization/Message/Message_en.asset.meta new file mode 100644 index 00000000..75968ad9 --- /dev/null +++ b/Assets/Localization/Message/Message_en.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61661a97b386b1b468a2f6eb6edbd219 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Message/Message_ja.asset b/Assets/Localization/Message/Message_ja.asset new file mode 100644 index 00000000..30fea5a4 --- /dev/null +++ b/Assets/Localization/Message/Message_ja.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9257222f6d278c361e8331646d91e46c4871af00c2a2e024898f9d2ad2abde35 +size 667 diff --git a/Assets/Localization/Message/Message_ja.asset.meta b/Assets/Localization/Message/Message_ja.asset.meta new file mode 100644 index 00000000..97b2fe10 --- /dev/null +++ b/Assets/Localization/Message/Message_ja.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b436cb055982024d87c26e5dd006d98 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Message/Message_ko.asset b/Assets/Localization/Message/Message_ko.asset new file mode 100644 index 00000000..790839a8 --- /dev/null +++ b/Assets/Localization/Message/Message_ko.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00df13043c568a636d42e4ee00fe83a071a814f1067d93b4c35a8829323c0e50 +size 667 diff --git a/Assets/Localization/Message/Message_ko.asset.meta b/Assets/Localization/Message/Message_ko.asset.meta new file mode 100644 index 00000000..da41d1a7 --- /dev/null +++ b/Assets/Localization/Message/Message_ko.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de75c1b8ae3365341bbe21fc291dedba +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Message/Message_th.asset b/Assets/Localization/Message/Message_th.asset new file mode 100644 index 00000000..97840662 --- /dev/null +++ b/Assets/Localization/Message/Message_th.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5efc37fc419686ca4f498be801df7b9c80db564589db1e65376e046bd9f834f1 +size 667 diff --git a/Assets/Localization/Message/Message_th.asset.meta b/Assets/Localization/Message/Message_th.asset.meta new file mode 100644 index 00000000..f290ea5a --- /dev/null +++ b/Assets/Localization/Message/Message_th.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 02149fcde1352dd499e840aca3a762aa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Message/Message_vi-VN.asset b/Assets/Localization/Message/Message_vi-VN.asset new file mode 100644 index 00000000..9c1d28d1 --- /dev/null +++ b/Assets/Localization/Message/Message_vi-VN.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8506447a8d64db173e7ebdff3f1bd4f289505fdc6bc7804b211bd1180eeacb4f +size 673 diff --git a/Assets/Localization/Message/Message_vi-VN.asset.meta b/Assets/Localization/Message/Message_vi-VN.asset.meta new file mode 100644 index 00000000..64fe47cd --- /dev/null +++ b/Assets/Localization/Message/Message_vi-VN.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f8b371af239879499277d4b555cd69b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Message/Message_zh-CN.asset b/Assets/Localization/Message/Message_zh-CN.asset new file mode 100644 index 00000000..78f4f6f2 --- /dev/null +++ b/Assets/Localization/Message/Message_zh-CN.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56ba5b742e860f501ada4865863ea09b6e531d8ace3f270c11386b438f4833c2 +size 673 diff --git a/Assets/Localization/Message/Message_zh-CN.asset.meta b/Assets/Localization/Message/Message_zh-CN.asset.meta new file mode 100644 index 00000000..6a950f15 --- /dev/null +++ b/Assets/Localization/Message/Message_zh-CN.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d7530d3dd169d2141a5207d0172e3a9b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Message/Message_zh-TW.asset b/Assets/Localization/Message/Message_zh-TW.asset new file mode 100644 index 00000000..20e4e20e --- /dev/null +++ b/Assets/Localization/Message/Message_zh-TW.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:430849f0c723e4b42b5ed8c2abf9b71d7a977e0306f32e51b12e125ce1d5f407 +size 673 diff --git a/Assets/Localization/Message/Message_zh-TW.asset.meta b/Assets/Localization/Message/Message_zh-TW.asset.meta new file mode 100644 index 00000000..696ca45c --- /dev/null +++ b/Assets/Localization/Message/Message_zh-TW.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d51a896a1514cde44bcff62055b619f0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Localization/Story/Chapter0_Lines Shared Data.asset b/Assets/Localization/Story/Chapter0_Lines Shared Data.asset index 96551484..9d81ebf6 100644 --- a/Assets/Localization/Story/Chapter0_Lines Shared Data.asset +++ b/Assets/Localization/Story/Chapter0_Lines Shared Data.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed67bb7472abede7c8fc5973a60e94bac70fea33306594fa328c3a0f4c5a96b2 -size 9524 +oid sha256:965e2068ef83fa994f9b4d26b0baf3d95c6cc8b040bb9827eb291d1c0d6481e4 +size 10132 diff --git a/Assets/Localization/Story/Chapter0_Lines_en.asset b/Assets/Localization/Story/Chapter0_Lines_en.asset index 9755c24b..f10a9f75 100644 --- a/Assets/Localization/Story/Chapter0_Lines_en.asset +++ b/Assets/Localization/Story/Chapter0_Lines_en.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a70b8cad7a827fa0ab8cb116d8bb437eb078d2241c17bd966b113924508d5f1 -size 5699 +oid sha256:6c329b8e8bfa65c4fc4e2cec27e81588784fc73678a0cd20455c390860f19a18 +size 5998 diff --git a/Assets/Prefabs/MessageBox.prefab b/Assets/Prefabs/MessageBox.prefab new file mode 100644 index 00000000..64a56322 --- /dev/null +++ b/Assets/Prefabs/MessageBox.prefab @@ -0,0 +1,1178 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &879916274401096383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 615193340523544279} + - component: {fileID: 5666768798593383827} + - component: {fileID: 1511386179001491510} + - component: {fileID: 3483998606450382267} + - component: {fileID: 6873272222453210977} + - component: {fileID: 8283513128948507429} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &615193340523544279 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 879916274401096383} + 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: 5092532649173066385} + 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.5} +--- !u!222 &5666768798593383827 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 879916274401096383} + m_CullTransparentMesh: 0 +--- !u!114 &1511386179001491510 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 879916274401096383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 'Size of this window will change based on the size of its content. + + You + can even replace this text area with different objects and the modal will resize + appropriately.' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} + m_sharedMaterial: {fileID: -5812992765432063453, guid: 87c1b020037c81841b3d98dd497cbdeb, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_characterHorizontalScale: 1 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &3483998606450382267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 879916274401096383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 300 + m_MinHeight: -1 + m_PreferredWidth: 1200 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &6873272222453210977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 879916274401096383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3} + m_Name: + m_EditorClassIdentifier: + mTerm: + mTermSecondary: + PrimaryTermModifier: 0 + SecondaryTermModifier: 0 + TermPrefix: + TermSuffix: + LocalizeOnAwake: 1 + IgnoreRTL: 0 + MaxCharactersInRTL: 0 + IgnoreNumbersInRTL: 1 + CorrectAlignmentForRTL: 1 + AddSpacesToJoinedLanguages: 0 + AllowLocalizedParameters: 1 + AllowParameters: 1 + TranslatedObjects: [] + LocalizeEvent: + m_PersistentCalls: + m_Calls: [] + AlwaysForceLocalize: 0 + LocalizeCallBack: + Target: {fileID: 0} + MethodName: + mGUI_ShowReferences: 0 + mGUI_ShowTems: 1 + mGUI_ShowCallback: 0 + mLocalizeTarget: {fileID: 0} + mLocalizeTargetName: I2.Loc.LocalizeTarget_TextMeshPro_UGUI +--- !u!114 &8283513128948507429 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 879916274401096383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c9586cfd190ca384a8dd72aa92c86152, type: 3} + m_Name: + m_EditorClassIdentifier: + _Params: [] + _IsGlobalManager: 0 +--- !u!1 &1136078909091246446 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6350689905123524917} + - component: {fileID: 8046614678578984176} + - component: {fileID: 1168971869091347235} + - component: {fileID: 290495902587943806} + m_Layer: 5 + m_Name: Shadow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6350689905123524917 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1136078909091246446} + 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: 2419101803835352228} + 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: 24, y: 24} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8046614678578984176 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1136078909091246446} + m_CullTransparentMesh: 0 +--- !u!114 &1168971869091347235 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1136078909091246446} + 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: 0, g: 0, b: 0, a: 0.39215687} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 0755a77d5bd80d94eaba57a2d5d0f55e, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 5 +--- !u!114 &290495902587943806 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1136078909091246446} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &2466060879987557898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4470639438119130197} + - component: {fileID: 2681963618800678} + - component: {fileID: 4114123131783411130} + - component: {fileID: 1501530303918721731} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4470639438119130197 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2466060879987557898} + 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: 2419101803835352228} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2681963618800678 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2466060879987557898} + m_CullTransparentMesh: 0 +--- !u!114 &4114123131783411130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2466060879987557898} + 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: 0.1764706, g: 0.25490198, b: 0.33333334, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5e16c7aea118d68498053518146c9cf9, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 6 +--- !u!114 &1501530303918721731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2466060879987557898} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &5263591163922513352 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 380156332139323662} + - component: {fileID: 2963587876961484201} + - component: {fileID: 6608848915897109691} + - component: {fileID: 5328264186748005550} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &380156332139323662 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5263591163922513352} + 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: 8427854290943886812} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 42.5, y: 0} + m_SizeDelta: {x: -42.5, y: 50} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &2963587876961484201 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5263591163922513352} + m_CullTransparentMesh: 0 +--- !u!114 &6608848915897109691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5263591163922513352} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: "\u63D0\u793A" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} + m_sharedMaterial: {fileID: -5812992765432063453, guid: 87c1b020037c81841b3d98dd497cbdeb, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_characterHorizontalScale: 1 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 1} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &5328264186748005550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5263591163922513352} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3} + m_Name: + m_EditorClassIdentifier: + mTerm: + mTermSecondary: + PrimaryTermModifier: 0 + SecondaryTermModifier: 0 + TermPrefix: + TermSuffix: + LocalizeOnAwake: 1 + IgnoreRTL: 0 + MaxCharactersInRTL: 0 + IgnoreNumbersInRTL: 1 + CorrectAlignmentForRTL: 1 + AddSpacesToJoinedLanguages: 0 + AllowLocalizedParameters: 1 + AllowParameters: 1 + TranslatedObjects: [] + LocalizeEvent: + m_PersistentCalls: + m_Calls: [] + AlwaysForceLocalize: 0 + LocalizeCallBack: + Target: {fileID: 0} + MethodName: + mGUI_ShowReferences: 0 + mGUI_ShowTems: 1 + mGUI_ShowCallback: 0 + mLocalizeTarget: {fileID: 0} + mLocalizeTargetName: I2.Loc.LocalizeTarget_TextMeshPro_UGUI +--- !u!1 &5265375797484090089 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5092532649173066385} + - component: {fileID: 5960696260683360303} + - component: {fileID: 2626936303953010707} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5092532649173066385 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5265375797484090089} + 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: + - {fileID: 6213375211361212409} + - {fileID: 615193340523544279} + m_Father: {fileID: 2419101803835352228} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 600, y: -139.29001} + m_SizeDelta: {x: 1160, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5960696260683360303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5265375797484090089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 15 + m_Right: 15 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &2626936303953010707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5265375797484090089} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &5678028656669781845 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 320178516533985418} + - component: {fileID: 4259966678612083182} + - component: {fileID: 3589424571792001025} + - component: {fileID: 3307501539980532867} + - component: {fileID: 4678585854450785687} + m_Layer: 5 + m_Name: Receive + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &320178516533985418 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5678028656669781845} + 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: 2419101803835352228} + 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: 24, y: 24} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4259966678612083182 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5678028656669781845} + m_CullTransparentMesh: 0 +--- !u!114 &3589424571792001025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5678028656669781845} + 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: 0, g: 0, b: 0, a: 0} + 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: 0} + 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: 5 +--- !u!114 &3307501539980532867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5678028656669781845} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &4678585854450785687 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5678028656669781845} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3589424571792001025} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6491620794303241582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4526797650398712025} + - component: {fileID: 5627530628664898890} + - component: {fileID: 6421992386164511662} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4526797650398712025 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6491620794303241582} + 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: 8427854290943886812} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 15, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5627530628664898890 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6491620794303241582} + m_CullTransparentMesh: 0 +--- !u!114 &6421992386164511662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6491620794303241582} + 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: 5604130c3074dc3419d6f832ea194715, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6532009276675811406 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2419101803835352228} + - component: {fileID: 7281307023078711775} + - component: {fileID: 7028777253552577277} + - component: {fileID: 964826506701897714} + - component: {fileID: 2969807565022845143} + - component: {fileID: 8574893005057652156} + - component: {fileID: 4600504794659689328} + m_Layer: 5 + m_Name: MessageBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2419101803835352228 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532009276675811406} + 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: + - {fileID: 6350689905123524917} + - {fileID: 4470639438119130197} + - {fileID: 8427854290943886812} + - {fileID: 5092532649173066385} + - {fileID: 320178516533985418} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1200, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7281307023078711775 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532009276675811406} + m_CullTransparentMesh: 0 +--- !u!114 &7028777253552577277 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532009276675811406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 20 + m_Right: 20 + m_Top: 20 + m_Bottom: 20 + m_ChildAlignment: 0 + m_Spacing: 20 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &964826506701897714 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532009276675811406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &2969807565022845143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532009276675811406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4f4ae5cbba538d449b15cffc97daa7d, type: 3} + m_Name: + m_EditorClassIdentifier: + fixOnEnable: 1 + fixWithDelay: 1 +--- !u!225 &8574893005057652156 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532009276675811406} + m_Enabled: 1 + m_Alpha: 0 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!114 &4600504794659689328 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532009276675811406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 464526859792bdc4e8f53386f07a4cb3, type: 3} + m_Name: + m_EditorClassIdentifier: + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: infos + Entry: 6 + Data: + - Name: fadeTweener + Entry: 6 + Data: + canvasGroup: {fileID: 8574893005057652156} + onAllMessagesClosed: + m_PersistentCalls: + m_Calls: [] + infoIndex: 0 + defaultIcon: {fileID: 21300000, guid: 5604130c3074dc3419d6f832ea194715, type: 3} + iconImage: {fileID: 6421992386164511662} + titleLocalize: {fileID: 5328264186748005550} + titleText: {fileID: 6608848915897109691} + contentLocalize: {fileID: 6873272222453210977} + contentText: {fileID: 1511386179001491510} + parametersManager: {fileID: 8283513128948507429} + receiveButton: {fileID: 4678585854450785687} +--- !u!1 &6594943516597377984 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8427854290943886812} + m_Layer: 5 + m_Name: Title Bar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8427854290943886812 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6594943516597377984} + 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: + - {fileID: 4526797650398712025} + - {fileID: 380156332139323662} + m_Father: {fileID: 2419101803835352228} + 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: 24} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7723681965174021130 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6213375211361212409} + - component: {fileID: 5945474545609719375} + - component: {fileID: 5490394147613889219} + - component: {fileID: 801795416082778179} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6213375211361212409 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7723681965174021130} + 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: 5092532649173066385} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5945474545609719375 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7723681965174021130} + m_CullTransparentMesh: 0 +--- !u!114 &5490394147613889219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7723681965174021130} + 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: 0.039215688} + 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: 5e16c7aea118d68498053518146c9cf9, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 6 +--- !u!114 &801795416082778179 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7723681965174021130} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 diff --git a/Assets/Scripts/Story/StoryUI.meta b/Assets/Prefabs/MessageBox.prefab.meta similarity index 57% rename from Assets/Scripts/Story/StoryUI.meta rename to Assets/Prefabs/MessageBox.prefab.meta index 43d82222..2db775f2 100644 --- a/Assets/Scripts/Story/StoryUI.meta +++ b/Assets/Prefabs/MessageBox.prefab.meta @@ -1,7 +1,6 @@ fileFormatVersion: 2 -guid: cf843fc3f4fd10e499a6cc1b60bc1861 -folderAsset: yes -DefaultImporter: +guid: a8e9cecf40a73474d8a5ffc9bada8c20 +PrefabImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/Prefabs/Story/Dialog/Character.prefab b/Assets/Prefabs/Story/Dialog/Character.prefab new file mode 100644 index 00000000..5e375fc2 --- /dev/null +++ b/Assets/Prefabs/Story/Dialog/Character.prefab @@ -0,0 +1,92 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &597743784740087054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7917580385239275621} + - component: {fileID: 1310777969124757443} + - component: {fileID: 6320712627302899334} + - component: {fileID: 5305109034942869160} + m_Layer: 5 + m_Name: Character + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7917580385239275621 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597743784740087054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 760, y: 1350} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1310777969124757443 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597743784740087054} + m_CullTransparentMesh: 1 +--- !u!114 &6320712627302899334 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597743784740087054} + 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: 2736c74fecf99944a9977f12bf51f01c, 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!114 &5305109034942869160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597743784740087054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 331609805c7de66409dba07cce2f3a28, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.Dialogue.SpritePortraitRenderer + _alphaActive: 1 + _alphaInactive: 0.7 diff --git a/Assets/Prefabs/Story/Dialog/Character.prefab.meta b/Assets/Prefabs/Story/Dialog/Character.prefab.meta new file mode 100644 index 00000000..92b23771 --- /dev/null +++ b/Assets/Prefabs/Story/Dialog/Character.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 373499de58b10f34983c975fccad9f89 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity index e9eb3100..b2f75e64 100644 --- a/Assets/Scenes/GameScene.unity +++ b/Assets/Scenes/GameScene.unity @@ -14,7 +14,7 @@ OcclusionCullingSettings: RenderSettings: m_ObjectHideFlags: 0 serializedVersion: 10 - m_Fog: 1 + m_Fog: 0 m_FogColor: {r: 0.09296818, g: 0.080870956, b: 0.29559743, a: 1} m_FogMode: 1 m_FogDensity: 0.01 diff --git a/Assets/Scenes/MenuScene.unity b/Assets/Scenes/MenuScene.unity index 2d2d4e6d..403cebe9 100644 --- a/Assets/Scenes/MenuScene.unity +++ b/Assets/Scenes/MenuScene.unity @@ -370,102 +370,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8360185} m_CullTransparentMesh: 1 ---- !u!1 &10799670 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 10799671} - - component: {fileID: 10799674} - - component: {fileID: 10799673} - - component: {fileID: 10799672} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &10799671 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 10799670} - 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: 664205619} - 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 &10799672 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 10799670} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 1 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!114 &10799673 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 10799670} - 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: 0.039215688} - 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: 5e16c7aea118d68498053518146c9cf9, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 6 ---- !u!222 &10799674 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 10799670} - m_CullTransparentMesh: 0 --- !u!1 &24771457 GameObject: m_ObjectHideFlags: 0 @@ -1981,7 +1885,7 @@ MonoBehaviour: m_GameObject: {fileID: 78737087} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3ec0b23c77de2764d9425add8f28ea00, type: 3} + m_Script: {fileID: 11500000, guid: 981c044487823304aade761b1adaf914, type: 3} m_Name: m_EditorClassIdentifier: serializationData: @@ -2003,7 +1907,6 @@ MonoBehaviour: Entry: 6 Data: mainCanvasGroup: {fileID: 859038606} - messageBox: {fileID: 1211674719} backButton: {fileID: 1519945293} --- !u!114 &78737090 MonoBehaviour: @@ -2837,6 +2740,7 @@ GameObject: - component: {fileID: 145321078} - component: {fileID: 145321081} - component: {fileID: 145321080} + - component: {fileID: 145321082} m_Layer: 5 m_Name: Choice2 m_TagString: Untagged @@ -2860,9 +2764,9 @@ RectTransform: - {fileID: 867819402} m_Father: {fileID: 762655493} 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_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 600, y: -475} m_SizeDelta: {x: 1188, y: 150} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &145321080 @@ -2917,6 +2821,23 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!114 &145321082 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145321077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63c53d8a6dc173a4db3d6a8a1499b7e6, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.Dialogue.ChoiceButton + button: {fileID: 145321081} + buttonBackground: {fileID: 1008658488} + buttonText: {fileID: 867819403} + availableSprite: {fileID: 21300000, guid: 0071c3fb2dcf7b0428798cc6dc8bd68c, type: 3} + unavailableSprite: {fileID: 21300000, guid: 439f6117a35abbf4e8c4b847c040f025, type: 3} --- !u!1 &153881444 GameObject: m_ObjectHideFlags: 0 @@ -2961,6 +2882,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 163525692} + - component: {fileID: 163525693} m_Layer: 5 m_Name: CharacterContainer m_TagString: Untagged @@ -2979,8 +2901,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1572316431} + m_Children: [] m_Father: {fileID: 6347218673911890593} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -2988,6 +2909,21 @@ RectTransform: m_AnchoredPosition: {x: 0.000061035, y: 0} m_SizeDelta: {x: 2560, y: 1440} m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &163525693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163525691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ec4abf93d4e3d1d448630a311fe7c236, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.Dialogue.VNPortraitStage + _spritePortraitPrefab: {fileID: 597743784740087054, guid: 373499de58b10f34983c975fccad9f89, + type: 3} + _portraitContainer: {fileID: 163525692} --- !u!1 &171863126 GameObject: m_ObjectHideFlags: 0 @@ -3174,6 +3110,7 @@ GameObject: - component: {fileID: 190695850} - component: {fileID: 190695853} - component: {fileID: 190695852} + - component: {fileID: 190695854} m_Layer: 5 m_Name: Choice0 m_TagString: Untagged @@ -3197,9 +3134,9 @@ RectTransform: - {fileID: 1228626495} m_Father: {fileID: 762655493} 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_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 600, y: -75} m_SizeDelta: {x: 1188, y: 150} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &190695852 @@ -3254,6 +3191,23 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!114 &190695854 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 190695849} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63c53d8a6dc173a4db3d6a8a1499b7e6, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.Dialogue.ChoiceButton + button: {fileID: 190695853} + buttonBackground: {fileID: 736709068} + buttonText: {fileID: 1228626496} + availableSprite: {fileID: 21300000, guid: 0071c3fb2dcf7b0428798cc6dc8bd68c, type: 3} + unavailableSprite: {fileID: 21300000, guid: 439f6117a35abbf4e8c4b847c040f025, type: 3} --- !u!1 &193194204 GameObject: m_ObjectHideFlags: 0 @@ -3887,6 +3841,7 @@ GameObject: - component: {fileID: 269231010} - component: {fileID: 269231013} - component: {fileID: 269231012} + - component: {fileID: 269231014} m_Layer: 5 m_Name: Choice3 m_TagString: Untagged @@ -3910,9 +3865,9 @@ RectTransform: - {fileID: 463634754} m_Father: {fileID: 762655493} 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_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 600, y: -675} m_SizeDelta: {x: 1188, y: 150} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &269231012 @@ -3967,6 +3922,23 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!114 &269231014 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 269231009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63c53d8a6dc173a4db3d6a8a1499b7e6, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.Dialogue.ChoiceButton + button: {fileID: 269231013} + buttonBackground: {fileID: 403017938} + buttonText: {fileID: 463634755} + availableSprite: {fileID: 21300000, guid: 0071c3fb2dcf7b0428798cc6dc8bd68c, type: 3} + unavailableSprite: {fileID: 21300000, guid: 439f6117a35abbf4e8c4b847c040f025, type: 3} --- !u!1 &272824270 GameObject: m_ObjectHideFlags: 0 @@ -4344,7 +4316,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: "\u6D4B\u8BD5\u7248\u672C\uFF0C\u6E38\u620F\u4E2D\u7684\u6240\u6709\u5185\u5BB9\u90FD\u6709\u53EF\u80FD\u4E0D\u662F\u6700\u7EC8\u5448\u73B0\u3002" + m_text: Test version, all content in the game may not be final. m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} m_sharedMaterial: {fileID: -5812992765432063453, guid: 87c1b020037c81841b3d98dd497cbdeb, @@ -6505,7 +6477,7 @@ GameObject: - component: {fileID: 428441704} - component: {fileID: 428441703} m_Layer: 5 - m_Name: Image + m_Name: Pointer m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -6518,16 +6490,16 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 428441701} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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: 1876757693} + m_Father: {fileID: 1089279498} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 1080, y: -85} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 71, y: 71} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &428441703 @@ -6568,23 +6540,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 428441701} m_CullTransparentMesh: 1 ---- !u!114 &435099836 -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: 481ab606793a67349be805c13febeba0, type: 3} - m_Name: - m_EditorClassIdentifier: - mTarget: {fileID: 1488500374} - mAlignment_RTL: 516 - mAlignment_LTR: 513 - mAlignmentWasRTL: 0 - mInitializeAlignment: 1 --- !u!114 &443068616 MonoBehaviour: m_ObjectHideFlags: 0 @@ -6731,8 +6686,8 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 449802387} - - component: {fileID: 449802388} - component: {fileID: 449802389} + - component: {fileID: 449802395} - component: {fileID: 449802390} - component: {fileID: 449802391} - component: {fileID: 449802392} @@ -6759,18 +6714,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &449802388 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 449802386} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7dc7dc14d9f97c043bf6fb67c3a70877, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.Dialogue.StoryVariableStorage --- !u!114 &449802389 MonoBehaviour: m_ObjectHideFlags: 0 @@ -6785,7 +6728,7 @@ MonoBehaviour: m_EditorClassIdentifier: YarnSpinner.Unity::Yarn.Unity.DialogueRunner yarnProject: {fileID: 7545569452688597077, guid: 8ce10d75c4d583b40a11257d0da22825, type: 3} - variableStorage: {fileID: 449802388} + variableStorage: {fileID: 449802395} lineProvider: {fileID: 449802391} saliencyStrategy: 0 dialoguePresenters: @@ -6866,25 +6809,22 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b7b08c1a67d3d65478d9d9b4e275393f, type: 3} m_Name: m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.Dialogue.VNDialoguePresenter - panelGroup: {fileID: 6759614698927231795} - dialogueText: {fileID: 1834199647} - speakerContainer: {fileID: 993868748} - speakerText: {fileID: 1870072472} - advanceButton: {fileID: 1876757696} - choiceFrame: {fileID: 762655492} - choiceButtons: - - {fileID: 190695853} - - {fileID: 1340448065} - - {fileID: 145321081} - - {fileID: 269231013} - choiceTexts: - - {fileID: 1228626496} - - {fileID: 2043234284} - - {fileID: 867819403} - - {fileID: 463634755} + uiPage: {fileID: 5788293620442285279} lettersPerSecond: 40 - fadeInDuration: 0.2 - fadeOutDuration: 0.15 +--- !u!114 &449802395 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 449802386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 610c541718d694070a21327d1ae62e75, type: 3} + m_Name: + m_EditorClassIdentifier: YarnSpinner.Unity::Yarn.Unity.InMemoryVariableStorage + showDebug: 0 + debugTextView: {fileID: 0} --- !u!1 &454823864 GameObject: m_ObjectHideFlags: 0 @@ -8222,7 +8162,7 @@ GameObject: - component: {fileID: 520601621} - component: {fileID: 520601622} m_Layer: 5 - m_Name: Image (1) + m_Name: Triangles m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -8244,7 +8184,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0.000011444092} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 2315, y: 350} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &520601621 @@ -8268,7 +8208,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 2100000, guid: 3a639d10397a28446b936a4051cfe465, type: 2} - m_Color: {r: 0.058193527, g: 0.04313725, b: 0.5176471, a: 0.050980393} + m_Color: {r: 0.058193527, g: 0.04313725, b: 0.627451, a: 0.078431375} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -9810,85 +9750,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: f7db12c4a04bb4249a4916541b6d0e5d, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1 &664205618 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 664205619} - - component: {fileID: 664205621} - - component: {fileID: 664205620} - m_Layer: 5 - m_Name: Content - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &664205619 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 664205618} - 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: - - {fileID: 10799671} - - {fileID: 1488500372} - m_Father: {fileID: 1211674714} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 600, y: -139.29001} - m_SizeDelta: {x: 1160, y: 150.58} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &664205620 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 664205618} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!114 &664205621 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 664205618} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 15 - m_Right: 15 - m_Top: 10 - m_Bottom: 10 - m_ChildAlignment: 4 - m_Spacing: 0 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 --- !u!1 &669016711 GameObject: m_ObjectHideFlags: 0 @@ -10039,147 +9900,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 669159255} m_CullTransparentMesh: 1 ---- !u!1 &672864207 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 672864208} - - component: {fileID: 672864212} - - component: {fileID: 672864211} - - component: {fileID: 672864210} - - component: {fileID: 672864209} - m_Layer: 5 - m_Name: Receive - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &672864208 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 672864207} - 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: 1211674714} - 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: 24, y: 24} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &672864209 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 672864207} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 0 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 672864211} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &672864210 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 672864207} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 1 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!114 &672864211 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 672864207} - 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: 0, g: 0, b: 0, a: 0} - 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: 0} - 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: 5 ---- !u!222 &672864212 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 672864207} - m_CullTransparentMesh: 0 --- !u!1 &673579560 GameObject: m_ObjectHideFlags: 0 @@ -11689,6 +11409,126 @@ MonoBehaviour: mAlignment_LTR: 516 mAlignmentWasRTL: 0 mInitializeAlignment: 0 +--- !u!1 &776434466 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 776434467} + - component: {fileID: 776434470} + - component: {fileID: 776434469} + - component: {fileID: 776434468} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &776434467 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 776434466} + 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: 6347218673911890593} + 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 &776434468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 776434466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1876757694} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &776434469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 776434466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + 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: 0} + 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 &776434470 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 776434466} + m_CullTransparentMesh: 1 --- !u!1001 &805060254 PrefabInstance: m_ObjectHideFlags: 0 @@ -13152,7 +12992,6 @@ RectTransform: - {fileID: 1519945292} - {fileID: 1371572583} - {fileID: 1119493264} - - {fileID: 1211674714} m_Father: {fileID: 859038602} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -14741,102 +14580,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1032070286} m_CullTransparentMesh: 1 ---- !u!1 &1035827643 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1035827644} - - component: {fileID: 1035827647} - - component: {fileID: 1035827646} - - component: {fileID: 1035827645} - m_Layer: 5 - m_Name: Shadow - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1035827644 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035827643} - 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: 1211674714} - 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: 24, y: 24} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1035827645 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035827643} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 1 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!114 &1035827646 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035827643} - 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: 0, g: 0, b: 0, a: 0.39215687} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 0755a77d5bd80d94eaba57a2d5d0f55e, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 5 ---- !u!222 &1035827647 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1035827643} - m_CullTransparentMesh: 0 --- !u!1 &1047641974 GameObject: m_ObjectHideFlags: 0 @@ -15528,9 +15271,9 @@ GameObject: m_Component: - component: {fileID: 1089279498} - component: {fileID: 1089279500} - - component: {fileID: 1089279499} + - component: {fileID: 1089279501} m_Layer: 5 - m_Name: Wheel (1) + m_Name: DialogWheel m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -15547,44 +15290,16 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 1929210745} + - {fileID: 428441702} m_Father: {fileID: 2005595457} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 21.536} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 1080.4, y: -117.09996} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -77.599976, y: -117.09996} m_SizeDelta: {x: 461.375, y: 465.301} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1089279499 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1089279497} - 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: d2df5cc63e3980d499853cc9b5749d18, 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 &1089279500 CanvasRenderer: m_ObjectHideFlags: 0 @@ -15593,6 +15308,23 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1089279497} m_CullTransparentMesh: 1 +--- !u!114 &1089279501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1089279497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 027bcd2c2d137f5458f8b12002234663, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.UI.DialogWheel + wheelRect: {fileID: 1929210745} + rotationCycleDuration: 24 + pointerRect: {fileID: 428441702} + pointerFloatDistance: 5 + pointerFloatDuration: 1 --- !u!1 &1091682061 GameObject: m_ObjectHideFlags: 0 @@ -17157,163 +16889,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1211674713 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1211674714} - - component: {fileID: 1211674718} - - component: {fileID: 1211674717} - - component: {fileID: 1211674716} - - component: {fileID: 1211674715} - - component: {fileID: 1211674720} - - component: {fileID: 1211674719} - m_Layer: 5 - m_Name: MessageBox - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!224 &1211674714 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1211674713} - 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: - - {fileID: 1035827644} - - {fileID: 1558137783} - - {fileID: 1284535424} - - {fileID: 664205619} - - {fileID: 672864208} - m_Father: {fileID: 869340149} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 35.00006} - m_SizeDelta: {x: 1200, y: 234.58} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1211674715 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1211674713} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d4f4ae5cbba538d449b15cffc97daa7d, type: 3} - m_Name: - m_EditorClassIdentifier: - fixOnEnable: 1 - fixWithDelay: 1 ---- !u!114 &1211674716 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1211674713} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!114 &1211674717 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1211674713} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 20 - m_Right: 20 - m_Top: 20 - m_Bottom: 20 - m_ChildAlignment: 0 - m_Spacing: 20 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 0 - m_ChildControlWidth: 1 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!222 &1211674718 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1211674713} - m_CullTransparentMesh: 0 ---- !u!114 &1211674719 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1211674713} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 464526859792bdc4e8f53386f07a4cb3, type: 3} - m_Name: - m_EditorClassIdentifier: - serializationData: - SerializedFormat: 2 - SerializedBytes: - ReferencedUnityObjects: [] - SerializedBytesString: - Prefab: {fileID: 0} - PrefabModificationsReferencedUnityObjects: [] - PrefabModifications: [] - SerializationNodes: - - Name: infos - Entry: 6 - Data: - - Name: fadeTweener - Entry: 6 - Data: - canvasGroup: {fileID: 1211674720} - infoIndex: 0 - defaultIcon: {fileID: 21300000, guid: 5604130c3074dc3419d6f832ea194715, type: 3} - iconImage: {fileID: 1782838909} - titleLocalize: {fileID: 2001918512} - titleText: {fileID: 2001918510} - contentLocalize: {fileID: 1488500376} - contentText: {fileID: 1488500374} - parametersManager: {fileID: 1488500377} - receiveButton: {fileID: 672864209} ---- !u!225 &1211674720 -CanvasGroup: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1211674713} - m_Enabled: 1 - m_Alpha: 0 - m_Interactable: 1 - m_BlocksRaycasts: 1 - m_IgnoreParentGroups: 0 --- !u!1 &1225558873 GameObject: m_ObjectHideFlags: 0 @@ -17514,7 +17089,8 @@ MonoBehaviour: m_fontAsset: {fileID: 11400000, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} m_sharedMaterial: {fileID: -5812992765432063453, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} - m_fontSharedMaterials: [] + m_fontSharedMaterials: + - {fileID: -5812992765432063453, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} m_fontMaterial: {fileID: 0} m_fontMaterials: [] m_fontColor32: @@ -18217,43 +17793,6 @@ MonoBehaviour: fullIllustration: {fileID: 1426965734} closeFullIllustrationButton: {fileID: 1621943466} isDuringFullIllustrationFade: 0 ---- !u!1 &1284535423 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1284535424} - m_Layer: 5 - m_Name: Title Bar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1284535424 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1284535423} - 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: - - {fileID: 1782838908} - - {fileID: 2001918509} - m_Father: {fileID: 1211674714} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 600, y: -32} - m_SizeDelta: {x: 1160, y: 24} - m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1293033759 GameObject: m_ObjectHideFlags: 0 @@ -18855,6 +18394,7 @@ GameObject: - component: {fileID: 1340448062} - component: {fileID: 1340448065} - component: {fileID: 1340448064} + - component: {fileID: 1340448066} m_Layer: 5 m_Name: Choice1 m_TagString: Untagged @@ -18878,9 +18418,9 @@ RectTransform: - {fileID: 2043234283} m_Father: {fileID: 762655493} 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_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 600, y: -275} m_SizeDelta: {x: 1188, y: 150} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &1340448064 @@ -18935,6 +18475,23 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!114 &1340448066 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1340448061} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63c53d8a6dc173a4db3d6a8a1499b7e6, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.Dialogue.ChoiceButton + button: {fileID: 1340448065} + buttonBackground: {fileID: 82938575} + buttonText: {fileID: 2043234284} + availableSprite: {fileID: 21300000, guid: 0071c3fb2dcf7b0428798cc6dc8bd68c, type: 3} + unavailableSprite: {fileID: 21300000, guid: 439f6117a35abbf4e8c4b847c040f025, type: 3} --- !u!114 &1351337659 MonoBehaviour: m_ObjectHideFlags: 0 @@ -20509,6 +20066,73 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1483720711 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1483720712} + - component: {fileID: 1483720713} + m_Layer: 0 + m_Name: MessagePage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1483720712 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483720711} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2089432739} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1483720713 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483720711} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 07f2a7ffd4b513d4e90d60a6587914cc, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.UI.StoryMessageBoxUIPage + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: fadeInStartAction + Entry: 6 + Data: + - Name: fadeInFinishAction + Entry: 6 + Data: + - Name: fadeOutAction + Entry: 6 + Data: + mainCanvasGroup: {fileID: 2089432743} + defaultMessageBoxPrefab: {fileID: 4600504794659689328, guid: a8e9cecf40a73474d8a5ffc9bada8c20, + type: 3} + messageContainer: {fileID: 2089432739} --- !u!1 &1485764096 GameObject: m_ObjectHideFlags: 0 @@ -20582,224 +20206,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1485764096} m_CullTransparentMesh: 1 ---- !u!1 &1488500371 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1488500372} - - component: {fileID: 1488500375} - - component: {fileID: 1488500374} - - component: {fileID: 1488500373} - - component: {fileID: 1488500376} - - component: {fileID: 1488500377} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1488500372 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488500371} - 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: 664205619} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 15, y: -75.29} - m_SizeDelta: {x: 1130, y: 130.58} - m_Pivot: {x: 0, y: 0.5} ---- !u!114 &1488500373 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488500371} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 0 - m_MinWidth: 300 - m_MinHeight: -1 - m_PreferredWidth: 1200 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!114 &1488500374 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488500371} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 'Size of this window will change based on the size of its content. - - You - can even replace this text area with different objects and the modal will resize - appropriately.' - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} - m_sharedMaterial: {fileID: -5812992765432063453, guid: 87c1b020037c81841b3d98dd497cbdeb, - type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 36 - m_fontSizeBase: 36 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_characterHorizontalScale: 1 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_TextWrappingMode: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_ActiveFontFeatures: 00000000 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_EmojiFallbackSupport: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 1 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &1488500375 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488500371} - m_CullTransparentMesh: 0 ---- !u!114 &1488500376 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488500371} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3} - m_Name: - m_EditorClassIdentifier: - mTerm: - mTermSecondary: - PrimaryTermModifier: 0 - SecondaryTermModifier: 0 - TermPrefix: - TermSuffix: - LocalizeOnAwake: 1 - IgnoreRTL: 0 - MaxCharactersInRTL: 0 - IgnoreNumbersInRTL: 1 - CorrectAlignmentForRTL: 1 - AddSpacesToJoinedLanguages: 0 - AllowLocalizedParameters: 1 - AllowParameters: 1 - TranslatedObjects: [] - LocalizeEvent: - m_PersistentCalls: - m_Calls: [] - AlwaysForceLocalize: 0 - LocalizeCallBack: - Target: {fileID: 0} - MethodName: - mGUI_ShowReferences: 0 - mGUI_ShowTems: 1 - mGUI_ShowCallback: 0 - mLocalizeTarget: {fileID: 435099836} - mLocalizeTargetName: I2.Loc.LocalizeTarget_TextMeshPro_UGUI ---- !u!114 &1488500377 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1488500371} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c9586cfd190ca384a8dd72aa92c86152, type: 3} - m_Name: - m_EditorClassIdentifier: - _Params: [] - _IsGlobalManager: 0 --- !u!1 &1489132061 GameObject: m_ObjectHideFlags: 0 @@ -21833,102 +21239,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1555496268} m_CullTransparentMesh: 1 ---- !u!1 &1558137782 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1558137783} - - component: {fileID: 1558137786} - - component: {fileID: 1558137785} - - component: {fileID: 1558137784} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1558137783 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1558137782} - 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: 1211674714} - 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 &1558137784 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1558137782} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreLayout: 1 - m_MinWidth: -1 - m_MinHeight: -1 - m_PreferredWidth: -1 - m_PreferredHeight: -1 - m_FlexibleWidth: -1 - m_FlexibleHeight: -1 - m_LayoutPriority: 1 ---- !u!114 &1558137785 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1558137782} - 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: 0.1764706, g: 0.25490198, b: 0.33333334, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 5e16c7aea118d68498053518146c9cf9, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 6 ---- !u!222 &1558137786 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1558137782} - m_CullTransparentMesh: 0 --- !u!114 &1567730149 MonoBehaviour: m_ObjectHideFlags: 0 @@ -22086,129 +21396,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1569850794} m_CullTransparentMesh: 1 ---- !u!1 &1572316430 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1572316431} - - component: {fileID: 1572316434} - - component: {fileID: 1572316433} - - component: {fileID: 1572316432} - m_Layer: 5 - m_Name: Image - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1572316431 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1572316430} - 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: 163525692} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 114, y: 0} - m_SizeDelta: {x: 760, y: 1350} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1572316432 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1572316430} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 45facfdc6a639f041b007c036dc527b8, type: 3} - m_Name: - m_EditorClassIdentifier: - _gradientType: 1 - _blendMode: 2 - _modifyVertices: 1 - _offset: 0 - _zoom: 1 - _effectGradient: - serializedVersion: 2 - key0: {r: 0, g: 0, b: 0, a: 0} - key1: {r: 0, g: 0, b: 0, a: 1} - key2: {r: 1, g: 1, b: 1, a: 1} - key3: {r: 1, g: 1, b: 1, a: 0} - key4: {r: 0, g: 0, b: 0, a: 0} - key5: {r: 0, g: 0, b: 0, a: 0} - key6: {r: 0, g: 0, b: 0, a: 0} - key7: {r: 0, g: 0, b: 0, a: 0} - ctime0: 0 - ctime1: 13107 - ctime2: 32768 - ctime3: 65535 - ctime4: 0 - ctime5: 0 - ctime6: 0 - ctime7: 0 - atime0: 0 - atime1: 13107 - atime2: 65535 - atime3: 0 - atime4: 0 - atime5: 0 - atime6: 0 - atime7: 0 - m_Mode: 0 - m_ColorSpace: 0 - m_NumColorKeys: 4 - m_NumAlphaKeys: 3 ---- !u!114 &1572316433 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1572316430} - 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: 2736c74fecf99944a9977f12bf51f01c, 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 &1572316434 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1572316430} - m_CullTransparentMesh: 1 --- !u!1 &1573013299 GameObject: m_ObjectHideFlags: 0 @@ -23005,7 +22192,7 @@ Transform: m_GameObject: {fileID: 1644203569} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 224.24973, y: 0, z: 3.18235} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -23766,7 +22953,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: "- \u89E6\u6478\u4EE5\u5F00\u59CB\u6E38\u620F -" + m_text: '- Touch to start -' m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} m_sharedMaterial: {fileID: -5812992765432063453, guid: 87c1b020037c81841b3d98dd497cbdeb, @@ -24532,81 +23719,6 @@ MonoBehaviour: inputActions: {fileID: -944628639613478452, guid: 6a9b5e1cce519a041b93c008ab19ca4d, type: 3} resetButton: {fileID: 1421732612} ---- !u!1 &1782838907 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1782838908} - - component: {fileID: 1782838910} - - component: {fileID: 1782838909} - m_Layer: 5 - m_Name: Icon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1782838908 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1782838907} - 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: 1284535424} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 15, y: 0} - m_SizeDelta: {x: 25, y: 25} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1782838909 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1782838907} - 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: 5604130c3074dc3419d6f832ea194715, type: 3} - m_Type: 0 - m_PreserveAspect: 1 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1782838910 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1782838907} - m_CullTransparentMesh: 0 --- !u!1 &1790691940 GameObject: m_ObjectHideFlags: 0 @@ -25224,23 +24336,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1834603786} m_CullTransparentMesh: 1 ---- !u!114 &1868936611 -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: 481ab606793a67349be805c13febeba0, type: 3} - m_Name: - m_EditorClassIdentifier: - mTarget: {fileID: 2001918510} - mAlignment_RTL: 516 - mAlignment_LTR: 513 - mAlignmentWasRTL: 0 - mInitializeAlignment: 1 --- !u!1 &1870072470 GameObject: m_ObjectHideFlags: 0 @@ -25443,7 +24538,6 @@ GameObject: - component: {fileID: 1876757693} - component: {fileID: 1876757695} - component: {fileID: 1876757694} - - component: {fileID: 1876757696} m_Layer: 5 m_Name: Background m_TagString: Untagged @@ -25465,7 +24559,6 @@ RectTransform: m_Children: - {fileID: 1834199646} - {fileID: 2005595457} - - {fileID: 428441702} m_Father: {fileID: 871906516} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -25511,50 +24604,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1876757692} m_CullTransparentMesh: 1 ---- !u!114 &1876757696 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1876757692} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 0 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1876757694} - m_OnClick: - m_PersistentCalls: - m_Calls: [] --- !u!114 &1881101689 MonoBehaviour: m_ObjectHideFlags: 0 @@ -25857,6 +24906,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1928039797} m_CullTransparentMesh: 1 +--- !u!1 &1929210744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1929210745} + - component: {fileID: 1929210748} + - component: {fileID: 1929210747} + m_Layer: 5 + m_Name: Wheel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1929210745 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929210744} + 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: 1089279498} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 21.536} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -0.000015258789} + m_SizeDelta: {x: 461.375, y: 465.301} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1929210747 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929210744} + 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: d2df5cc63e3980d499853cc9b5749d18, 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 &1929210748 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1929210744} + m_CullTransparentMesh: 1 --- !u!1 &1937063703 GameObject: m_ObjectHideFlags: 0 @@ -26487,7 +25611,6 @@ GameObject: m_Component: - component: {fileID: 1998834542} - component: {fileID: 1998834543} - - component: {fileID: 1998834544} m_Layer: 0 m_Name: StartPage m_TagString: Untagged @@ -26546,196 +25669,6 @@ MonoBehaviour: peWarningWindow: {fileID: 1589396085} contentWindow: {fileID: 1365808732} loginPage: {fileID: 75568548} ---- !u!114 &1998834544 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1998834541} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5151cbfb4a7c39c4599fb711d3332cbd, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &2001918508 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2001918509} - - component: {fileID: 2001918511} - - component: {fileID: 2001918510} - - component: {fileID: 2001918512} - m_Layer: 5 - m_Name: Title - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2001918509 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2001918508} - 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: 1284535424} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.5} - m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 42.5, y: 0} - m_SizeDelta: {x: -42.5, y: 50} - m_Pivot: {x: 0, y: 0.5} ---- !u!114 &2001918510 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2001918508} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: "\u63D0\u793A" - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 87c1b020037c81841b3d98dd497cbdeb, type: 2} - m_sharedMaterial: {fileID: -5812992765432063453, guid: 87c1b020037c81841b3d98dd497cbdeb, - type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 36 - m_fontSizeBase: 36 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_characterHorizontalScale: 1 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_TextWrappingMode: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_ActiveFontFeatures: 00000000 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_EmojiFallbackSupport: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 1 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 1} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &2001918511 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2001918508} - m_CullTransparentMesh: 0 ---- !u!114 &2001918512 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2001918508} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3} - m_Name: - m_EditorClassIdentifier: - mTerm: - mTermSecondary: - PrimaryTermModifier: 0 - SecondaryTermModifier: 0 - TermPrefix: - TermSuffix: - LocalizeOnAwake: 1 - IgnoreRTL: 0 - MaxCharactersInRTL: 0 - IgnoreNumbersInRTL: 1 - CorrectAlignmentForRTL: 1 - AddSpacesToJoinedLanguages: 0 - AllowLocalizedParameters: 1 - AllowParameters: 1 - TranslatedObjects: [] - LocalizeEvent: - m_PersistentCalls: - m_Calls: [] - AlwaysForceLocalize: 0 - LocalizeCallBack: - Target: {fileID: 0} - MethodName: - mGUI_ShowReferences: 0 - mGUI_ShowTems: 1 - mGUI_ShowCallback: 0 - mLocalizeTarget: {fileID: 1868936611} - mLocalizeTargetName: I2.Loc.LocalizeTarget_TextMeshPro_UGUI --- !u!1 &2005595456 GameObject: m_ObjectHideFlags: 0 @@ -26767,8 +25700,8 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1089279498} - {fileID: 520601619} + - {fileID: 1089279498} m_Father: {fileID: 1876757693} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -32581,6 +31514,120 @@ MonoBehaviour: Entry: 6 Data: mainCanvasGroup: {fileID: 2066043558} +--- !u!1 &2089432738 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2089432739} + - component: {fileID: 2089432742} + - component: {fileID: 2089432741} + - component: {fileID: 2089432740} + - component: {fileID: 2089432743} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2089432739 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089432738} + 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: [] + m_Father: {fileID: 1483720712} + 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!114 &2089432740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089432738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.GraphicRaycaster + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 631 +--- !u!114 &2089432741 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089432738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.CanvasScaler + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &2089432742 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089432738} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 751614408} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 1 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 1 + m_TargetDisplay: 0 +--- !u!225 &2089432743 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2089432738} + m_Enabled: 1 + m_Alpha: 0 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 --- !u!1 &2091561605 GameObject: m_ObjectHideFlags: 0 @@ -34378,6 +33425,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 5788293620442285278} + - component: {fileID: 5788293620442285279} m_Layer: 5 m_Name: DialogPage m_TagString: Untagged @@ -34475,6 +33523,50 @@ Transform: - {fileID: 6347218673911890593} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5788293620442285279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4397390401624236569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0e1e4a2c0a479784e839bdf448215e19, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Ichni.Story.UI.DialogUIPage + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: fadeInStartAction + Entry: 6 + Data: + - Name: fadeInFinishAction + Entry: 6 + Data: + - Name: fadeOutAction + Entry: 6 + Data: + mainCanvasGroup: {fileID: 6759614698927231795} + portraitStage: {fileID: 163525693} + dialogueText: {fileID: 1834199647} + speakerContainer: {fileID: 993868748} + speakerText: {fileID: 1870072472} + advanceButton: {fileID: 776434468} + fastForwardButton: {fileID: 490649579} + choiceFrame: {fileID: 234096306} + choiceButtons: + - {fileID: 190695854} + - {fileID: 1340448066} + - {fileID: 145321082} + - {fileID: 269231014} + dialogWheel: {fileID: 1089279501} --- !u!1 &5918997816214783523 GameObject: m_ObjectHideFlags: 0 @@ -34494,7 +33586,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!223 &6169289651699952963 Canvas: m_ObjectHideFlags: 0 @@ -34533,6 +33625,7 @@ RectTransform: - {fileID: 1055026778} - {fileID: 163525692} - {fileID: 871906516} + - {fileID: 776434467} - {fileID: 234096307} - {fileID: 1908680555} - {fileID: 490649578} @@ -34554,7 +33647,7 @@ CanvasGroup: m_GameObject: {fileID: 5918997816214783523} m_Enabled: 1 m_Alpha: 0 - m_Interactable: 1 + m_Interactable: 0 m_BlocksRaycasts: 0 m_IgnoreParentGroups: 0 --- !u!1001 &6776602870058590884 @@ -34732,3 +33825,4 @@ SceneRoots: - {fileID: 325881262} - {fileID: 1644203571} - {fileID: 75568547} + - {fileID: 1483720712} diff --git a/Assets/Scripts/NewStorySystem/Data/CharacterData.cs b/Assets/Scripts/NewStorySystem/Data/CharacterData.cs index e3908b55..aa8e81fd 100644 --- a/Assets/Scripts/NewStorySystem/Data/CharacterData.cs +++ b/Assets/Scripts/NewStorySystem/Data/CharacterData.cs @@ -21,15 +21,19 @@ namespace Ichni.Story public class CharacterData : SerializedScriptableObject { [LabelText("Character ID")] - [InfoBox("此 ID 需与 .yarn 文件中对应台词的 speaker 名完全一致。")] + [Tooltip("此 ID 需与 .yarn 文件中对应台词的 speaker 名完全一致。")] public string characterId; [LabelText("Display Name Key")] - [InfoBox("Unity Localization String Table Key,用于多语言角色名显示。")] + [Tooltip("Unity Localization String Table Key,用于多语言角色名显示。")] public string displayNameKey; [LabelText("Portrait Style")] public PortraitStyle portraitStyle = PortraitStyle.Sprite; + + [LabelText("Position Offset")] + [Tooltip("立绘在舞台上的位置偏移(单位:映射百分比)")] + public Vector2 positionOffset = new Vector2(0f, 0f); // ── Sprite ────────────────────────────────────────────────────────────── @@ -46,7 +50,6 @@ namespace Ichni.Story [InfoBox("Live2D / Spine 立绘预制体,需挂载实现 IPortraitRenderer 接口的组件(阶段 3 制作)。")] public GameObject dynamicPortraitPrefab; - private bool IsDynamicPortrait => - portraitStyle == PortraitStyle.Live2D || portraitStyle == PortraitStyle.Spine; + private bool IsDynamicPortrait => portraitStyle == PortraitStyle.Live2D || portraitStyle == PortraitStyle.Spine; } } diff --git a/Assets/Scripts/NewStorySystem/Data/StoryVariables.cs b/Assets/Scripts/NewStorySystem/Data/StoryVariables.cs new file mode 100644 index 00000000..afa5d2d1 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Data/StoryVariables.cs @@ -0,0 +1,140 @@ +using System.Collections.Generic; +using System.Globalization; +using UnityEngine; + +namespace Ichni.Story +{ + /// + /// 全局剧情变量的统一数据枢纽。 + /// 所有外部系统(包括 Yarn、UI、小游戏)读写剧情变量的唯一官方入口。 + /// 自动桥接至 GameSaveManager 的 StorySaveModule 中持久化。 + /// + public static class StoryVariables + { + // 应对游戏尚未初始化(或者单独测试场景)的内存兜底 + private static readonly StoryVariablesSave _fallback = new StoryVariablesSave(); + + private static StoryVariablesSave Variables + { + get + { + if (GameSaveManager.instance != null && GameSaveManager.instance.StorySaveModule != null) + return GameSaveManager.instance.StorySaveModule.variables; + return _fallback; + } + } + + // ── 读取 ──────────────────────────────────────────────────────────────── + + public static float GetFloat(string key, float defaultValue = 0f) + { + StoryVariablesSave vars = Variables; + if (vars.floatVariables.TryGetValue(key, out float f)) return f; + if (vars.boolVariables.TryGetValue(key, out bool b)) return b ? 1f : 0f; + if (vars.stringVariables.TryGetValue(key, out string s) && float.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out float p)) return p; + return defaultValue; + } + + public static int GetInt(string key, int defaultValue = 0) + { + StoryVariablesSave vars = Variables; + if (vars.floatVariables.TryGetValue(key, out float f)) return Mathf.RoundToInt(f); + if (vars.boolVariables.TryGetValue(key, out bool b)) return b ? 1 : 0; + if (vars.stringVariables.TryGetValue(key, out string s) && float.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out float p)) return Mathf.RoundToInt(p); + return defaultValue; + } + + public static bool GetBool(string key, bool defaultValue = false) + { + StoryVariablesSave vars = Variables; + if (vars.boolVariables.TryGetValue(key, out bool b)) return b; + if (vars.floatVariables.TryGetValue(key, out float f)) return f != 0f; + if (vars.stringVariables.TryGetValue(key, out string s) && bool.TryParse(s, out bool p)) return p; + return defaultValue; + } + + public static string GetString(string key, string defaultValue = "") + { + StoryVariablesSave vars = Variables; + if (vars.stringVariables.TryGetValue(key, out string s)) return s; + if (vars.floatVariables.TryGetValue(key, out float f)) return f.ToString(CultureInfo.InvariantCulture); + if (vars.boolVariables.TryGetValue(key, out bool b)) return b.ToString(); + return defaultValue; + } + + public static bool HasVariable(string key) + { + StoryVariablesSave vars = Variables; + return vars.floatVariables.ContainsKey(key) || vars.boolVariables.ContainsKey(key) || vars.stringVariables.ContainsKey(key); + } + + // ── 写入 ──────────────────────────────────────────────────────────────── + + public static void SetFloat(string key, float value) + { + RemoveStaleEntries(key, keepFloat: true, keepString: false, keepBool: false); + Variables.floatVariables[key] = value; + } + + public static void SetInt(string key, int value) + { + // 在 Yarn/存档底层中数字统一存为 float,避免双字典冗余 + SetFloat(key, value); + } + + public static void SetBool(string key, bool value) + { + RemoveStaleEntries(key, keepFloat: false, keepString: false, keepBool: true); + Variables.boolVariables[key] = value; + } + + public static void SetString(string key, string value) + { + RemoveStaleEntries(key, keepFloat: false, keepString: true, keepBool: false); + Variables.stringVariables[key] = value; + } + + public static void ClearAll() + { + StoryVariablesSave vars = Variables; + vars.floatVariables.Clear(); + vars.stringVariables.Clear(); + vars.boolVariables.Clear(); + } + + private static void RemoveStaleEntries(string name, bool keepFloat, bool keepString, bool keepBool) + { + StoryVariablesSave vars = Variables; + if (!keepFloat) vars.floatVariables.Remove(name); + if (!keepString) vars.stringVariables.Remove(name); + if (!keepBool) vars.boolVariables.Remove(name); + } + + // ── 字典批量操作(内部供 Yarn Adapter 使用) ───────────────────────────── + + internal static void SetAllVariables(Dictionary floats, Dictionary strings, Dictionary bools, bool clear = true) + { + StoryVariablesSave vars = Variables; + if (clear) + { + vars.floatVariables.Clear(); + vars.stringVariables.Clear(); + vars.boolVariables.Clear(); + } + + if (floats != null) foreach (var kv in floats) vars.floatVariables[kv.Key] = kv.Value; + if (strings != null) foreach (var kv in strings) vars.stringVariables[kv.Key] = kv.Value; + if (bools != null) foreach (var kv in bools) vars.boolVariables[kv.Key] = kv.Value; + } + + internal static (Dictionary floats, Dictionary strings, Dictionary bools) GetAllVariables() + { + StoryVariablesSave vars = Variables; + return ( + new Dictionary(vars.floatVariables), + new Dictionary(vars.stringVariables), + new Dictionary(vars.boolVariables) + ); + } + } +} diff --git a/Assets/Scripts/NewStorySystem/Data/StoryVariables.cs.meta b/Assets/Scripts/NewStorySystem/Data/StoryVariables.cs.meta new file mode 100644 index 00000000..0e87da3e --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Data/StoryVariables.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c69dde49931abdd40aeabc0dc35582f5 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/Dialogue/ChoiceButton.cs b/Assets/Scripts/NewStorySystem/Dialogue/ChoiceButton.cs new file mode 100644 index 00000000..368001c7 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Dialogue/ChoiceButton.cs @@ -0,0 +1,93 @@ +using Sirenix.OdinInspector; +using TMPro; +using UnityEngine; +using UnityEngine.UI; +using Yarn.Unity; + +namespace Ichni.Story.Dialogue +{ + /// + /// 单个对话选项按钮的显示与交互控制器。 + /// + /// + /// 可用选项:显示 ,点击时触发 onSelected 回调。 + /// 不可用选项:显示 ,点击无效(但 Button 的 + /// interactable 保持开启,以备未来扩展悬停提示等功能)。 + /// + /// + /// + /// 由 统一调用 / 。 + /// + /// + public class ChoiceButton : MonoBehaviour + { + [Tooltip("按钮组件引用(挂载在同 GameObject 上的 Button)。")] + public Button button; + + [Tooltip("按钮背景 Image,用于在 available / unavailable 状态间切换 Sprite。")] + public Image buttonBackground; + + [Tooltip("选项文本 TMP。")] + public TMP_Text buttonText; + + [SerializeField, HideInPlayMode] + [Tooltip("选项可用时的背景 Sprite。")] + private Sprite availableSprite; + + [SerializeField, HideInPlayMode] + [Tooltip("选项不可用时的背景 Sprite。")] + private Sprite unavailableSprite; + + // ── 运行时状态 ──────────────────────────────────────────────────── + + /// 当前绑定的选项是否可供玩家选择。 + private bool _isAvailable; + + // ── 公共 API ───────────────────────────────────────────────────── + + /// + /// 根据 配置按钮并激活显示。 + /// + /// Yarn 对话选项数据。option.IsAvailable 决定外观与交互行为。 + /// + /// 玩家点击且选项可用时触发的回调。 + /// 不可用选项点击不会触发此回调,但按钮保持 interactable=true。 + /// + public void Setup(DialogueOption option, System.Action onSelected) + { + gameObject.SetActive(true); + _isAvailable = option.IsAvailable; + + // 设置选项文本 + if (buttonText != null) + buttonText.text = option.Line.TextWithoutCharacterName.Text; + + // 根据可用性切换背景图 + if (buttonBackground != null) + buttonBackground.sprite = _isAvailable ? availableSprite : unavailableSprite; + + // 注册点击监听:不可用选项点击静默忽略 + if (button != null) + { + button.onClick.RemoveAllListeners(); + button.onClick.AddListener(() => + { + if (_isAvailable) + onSelected?.Invoke(option); + }); + } + } + + /// + /// 清除按钮监听并隐藏此按钮。 + /// 在 结束后统一调用。 + /// + public void Cleanup() + { + if (button != null) + button.onClick.RemoveAllListeners(); + + gameObject.SetActive(false); + } + } +} diff --git a/Assets/Scripts/NewStorySystem/Dialogue/ChoiceButton.cs.meta b/Assets/Scripts/NewStorySystem/Dialogue/ChoiceButton.cs.meta new file mode 100644 index 00000000..a41afc64 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Dialogue/ChoiceButton.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 63c53d8a6dc173a4db3d6a8a1499b7e6 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/Dialogue/IPortraitRenderer.cs b/Assets/Scripts/NewStorySystem/Dialogue/IPortraitRenderer.cs new file mode 100644 index 00000000..f2a21c0c --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Dialogue/IPortraitRenderer.cs @@ -0,0 +1,59 @@ +using UnityEngine; + +namespace Ichni.Story.Dialogue +{ + /// + /// 立绘渲染器抽象接口。所有立绘渲染实现(Sprite / Live2D / Spine)均须实现此接口, + /// 使 和 Yarn 命令层无需感知底层渲染细节。 + /// + public interface IPortraitRenderer + { + /// 此渲染器在舞台上占用的 RectTransform(用于位置操控)。 + RectTransform RectTransform { get; } + + /// + /// 以指定角色数据和情绪名显示立绘。若角色已在台上则更新情绪。 + /// + void Show(CharacterData character, string emotion); + + /// 隐藏立绘(不销毁对象,留存以便复用)。 + void Hide(); + + /// 切换当前情绪(角色数据不变)。 + void SetEmotion(string emotion); + + /// + /// 将立绘的 anchoredPosition 设为指定坐标(即时,无动画)。 + /// + /// 目标 anchoredPosition(画布空间,像素单位)。 + void SetPosition(Vector2 anchoredPos); + + /// + /// 控制说话者高亮状态:说话者 alpha = 1.0,旁观者 alpha = 0.7(可由实现自行定义)。 + /// + void SetActiveVisual(bool isSpeaking); + + /// + /// 平滑移动到目标位置。 + /// + /// 目标像素坐标 + /// 持续时间 + void MoveTo(Vector2 anchoredPos, float duration); + + /// + /// 原地跳跃动画。 + /// + /// 跳跃力度(高度) + /// 跳跃次数 + /// 持续时间 + void Jump(float power, int numJumps, float duration); + + /// + /// 左右震动动画。 + /// + /// 持续时间 + /// 震动力度(像素范围) + /// 震动频率 + void Shake(float duration, float strength, int vibrato); + } +} diff --git a/Assets/Scripts/NewStorySystem/Dialogue/IPortraitRenderer.cs.meta b/Assets/Scripts/NewStorySystem/Dialogue/IPortraitRenderer.cs.meta new file mode 100644 index 00000000..4d8475c5 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Dialogue/IPortraitRenderer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3dbfb11aa34a55942b604a15cbd65d50 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/Dialogue/SpritePortraitRenderer.cs b/Assets/Scripts/NewStorySystem/Dialogue/SpritePortraitRenderer.cs new file mode 100644 index 00000000..1ad947a5 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Dialogue/SpritePortraitRenderer.cs @@ -0,0 +1,175 @@ +using UnityEngine; +using UnityEngine.UI; +using DG.Tweening; + +namespace Ichni.Story.Dialogue +{ + /// + /// 基于 的 Sprite 立绘渲染器。 + /// + /// 挂载在 VN 对话 UI 内的立绘槽位 GameObject 上(Left / Center / Right 等), + /// 每个槽位对应一个 实例。 + /// 当前阶段仅实现静态显示(Show / Hide / SetEmotion / SetPosition / SetActiveVisual), + /// 后续阶段再叠加 DOTween 动画。 + /// + /// + [RequireComponent(typeof(Image))] + public class SpritePortraitRenderer : MonoBehaviour, IPortraitRenderer + { + // ── 设置 ──────────────────────────────────────────────────────────────── + + /// 说话者的不透明度(满值)。 + [SerializeField] private float _alphaActive = 1.0f; + + /// 非说话者的压暗不透明度。 + [SerializeField] private float _alphaInactive = 0.7f; + + // ── 组件缓存 ───────────────────────────────────────────────────────────── + + private Image _image; + private RectTransform _rectTransform; + + // ── 状态 ───────────────────────────────────────────────────────────────── + + private CharacterData _currentCharacter; + + // ── IPortraitRenderer 实现 ─────────────────────────────────────────────── + + /// + public RectTransform RectTransform => _rectTransform; + + // ── 生命周期 ────────────────────────────────────────────────────────────── + + private void Awake() + { + _image = GetComponent(); + _rectTransform = GetComponent(); + + // 初始隐藏 + SetGroupAlpha(0f); + } + + // ── 接口方法 ───────────────────────────────────────────────────────────── + + /// + public void Show(CharacterData character, string emotion) + { + if (character == null) + { + Debug.LogWarning("[SpritePortraitRenderer] Show 传入了 null CharacterData。"); + return; + } + + _currentCharacter = character; + ApplySprite(emotion); + SetGroupAlpha(_alphaActive); + gameObject.SetActive(true); + } + + /// + public void Hide() + { + SetGroupAlpha(0f); + } + + /// + public void SetEmotion(string emotion) + { + if (_currentCharacter == null) + { + Debug.LogWarning("[SpritePortraitRenderer] SetEmotion 时尚未绑定角色数据。"); + return; + } + + ApplySprite(emotion); + } + + /// + public void SetPosition(Vector2 anchoredPos) + { + _rectTransform.anchoredPosition = anchoredPos; + } + + /// + public void SetActiveVisual(bool isSpeaking) + { + SetGroupAlpha(isSpeaking ? _alphaActive : _alphaInactive); + } + + /// + public void MoveTo(Vector2 anchoredPos, float duration) + { + _rectTransform.DOKill(complete: true); + _rectTransform.DOAnchorPos(anchoredPos, duration).SetEase(Ease.InOutQuad).Play(); + } + + /// + public void Jump(float power, int numJumps, float duration) + { + // 对于跳跃,先停止并完成先前的动画,避免错乱(特别是被快进时) + _rectTransform.DOKill(complete: true); + + // UI 的 DOJumpAnchorPos 非常适合这种表现,项目中要求手动调用 Play() + _rectTransform.DOJumpAnchorPos(_rectTransform.anchoredPosition, power, numJumps, duration).Play(); + } + + /// + public void Shake(float duration, float strength, int vibrato) + { + _rectTransform.DOKill(complete: true); + + // 左右震动(限制在 X 轴或以特定强度震动),项目中要求手动调用 Play() + _rectTransform.DOShakeAnchorPos(duration, new Vector2(strength, 0f), vibrato, 90, false, true).Play(); + } + + // ── 内部辅助 ───────────────────────────────────────────────────────────── + + /// + /// 从 中查找并赋值 Sprite。 + /// 找不到指定情绪时回退到"normal",再找不到则使用字典中第一个条目, + /// 并在 Console 输出警告。 + /// + private void ApplySprite(string emotion) + { + if (_currentCharacter.emotionSprites == null || _currentCharacter.emotionSprites.Count == 0) + { + Debug.LogWarning($"[SpritePortraitRenderer] 角色 '{_currentCharacter.characterId}' 没有配置任何情绪 Sprite。"); + return; + } + + // 1. 精确匹配 + if (!string.IsNullOrEmpty(emotion) && + _currentCharacter.emotionSprites.TryGetValue(emotion, out Sprite target)) + { + _image.sprite = target; + return; + } + + // 2. 回退 normal + if (_currentCharacter.emotionSprites.TryGetValue("normal", out Sprite fallback)) + { + Debug.LogWarning($"[SpritePortraitRenderer] 角色 '{_currentCharacter.characterId}' 没有情绪 '{emotion}',回退到 'normal'。"); + _image.sprite = fallback; + return; + } + + // 3. 使用第一个条目 + foreach (Sprite first in _currentCharacter.emotionSprites.Values) + { + Debug.LogWarning($"[SpritePortraitRenderer] 角色 '{_currentCharacter.characterId}' 也没有 'normal',使用第一张 Sprite。"); + _image.sprite = first; + return; + } + } + + private void SetGroupAlpha(float alpha) + { + if (_image != null) + { + Color c = _image.color; + c.a = alpha; + _image.color = c; + } + } + } +} diff --git a/Assets/Scripts/NewStorySystem/Dialogue/SpritePortraitRenderer.cs.meta b/Assets/Scripts/NewStorySystem/Dialogue/SpritePortraitRenderer.cs.meta new file mode 100644 index 00000000..f4b19209 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Dialogue/SpritePortraitRenderer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 331609805c7de66409dba07cce2f3a28 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/Dialogue/StoryDialogueController.cs b/Assets/Scripts/NewStorySystem/Dialogue/StoryDialogueController.cs index 1da0d704..7f24f3d1 100644 --- a/Assets/Scripts/NewStorySystem/Dialogue/StoryDialogueController.cs +++ b/Assets/Scripts/NewStorySystem/Dialogue/StoryDialogueController.cs @@ -153,11 +153,17 @@ namespace Ichni.Story.Dialogue List pending = new List(dialogueEndActions); dialogueEndActions.Clear(); foreach (UnityAction action in pending) + { action?.Invoke(); + } + + StoryMessageBoxUIPage.instance.FadeIn(); } if (storyUIPage != null) + { storyUIPage.FadeIn(); + } } } } diff --git a/Assets/Scripts/NewStorySystem/Dialogue/StoryVariableStorage.cs b/Assets/Scripts/NewStorySystem/Dialogue/StoryVariableStorage.cs deleted file mode 100644 index 370d1919..00000000 --- a/Assets/Scripts/NewStorySystem/Dialogue/StoryVariableStorage.cs +++ /dev/null @@ -1,207 +0,0 @@ -using System.Collections.Generic; -using System.Globalization; -using UnityEngine; -using Yarn.Unity; - -namespace Ichni.Story.Dialogue -{ - /// - /// 自定义 Yarn 变量存储。直接读写 (全局剧情变量), - /// 让 Yarn 对话中的 <<set $var to ...>> 与故事树解锁条件共享同一份数据来源, - /// 并借助存档模块的 ES3 序列化持久化。 - /// 变量名沿用 Yarn 约定(带 $ 前缀);解锁条件中的变量名也应保持一致。 - /// - public class StoryVariableStorage : VariableStorageBehaviour - { - // GameSaveManager 尚未就绪(编辑器早期 / 场景未初始化)时的兜底容器 - private readonly StoryVariablesSave _fallback = new StoryVariablesSave(); - - /// 当前生效的变量容器:优先取存档模块,缺失时用本地兜底容器。 - private StoryVariablesSave Variables - { - get - { - if (GameSaveManager.instance != null && GameSaveManager.instance.StorySaveModule != null) - return GameSaveManager.instance.StorySaveModule.variables; - return _fallback; - } - } - - // ── IVariableStorage 实现 ──────────────────────────────────────────────── - - public override bool TryGetValue(string variableName, out T result) - { - StoryVariablesSave vars = Variables; - - if (vars.floatVariables.TryGetValue(variableName, out float f)) - return TryConvert(f, out result); - - if (vars.boolVariables.TryGetValue(variableName, out bool b)) - return TryConvert(b, out result); - - if (vars.stringVariables.TryGetValue(variableName, out string s)) - return TryConvert(s, out result); - - result = default; - return false; - } - - public override void SetValue(string variableName, string stringValue) - { - RemoveStaleEntries(variableName, keepFloat: false, keepString: true, keepBool: false); - Variables.stringVariables[variableName] = stringValue; - NotifyVariableChanged(variableName, stringValue); - } - - public override void SetValue(string variableName, float floatValue) - { - RemoveStaleEntries(variableName, keepFloat: true, keepString: false, keepBool: false); - Variables.floatVariables[variableName] = floatValue; - NotifyVariableChanged(variableName, floatValue); - } - - public override void SetValue(string variableName, bool boolValue) - { - RemoveStaleEntries(variableName, keepFloat: false, keepString: false, keepBool: true); - Variables.boolVariables[variableName] = boolValue; - NotifyVariableChanged(variableName, boolValue); - } - - public override bool Contains(string variableName) - { - StoryVariablesSave vars = Variables; - return vars.floatVariables.ContainsKey(variableName) - || vars.boolVariables.ContainsKey(variableName) - || vars.stringVariables.ContainsKey(variableName); - } - - public override void Clear() - { - StoryVariablesSave vars = Variables; - vars.floatVariables.Clear(); - vars.stringVariables.Clear(); - vars.boolVariables.Clear(); - } - - public override void SetAllVariables( - Dictionary floats, - Dictionary strings, - Dictionary bools, - bool clear = true) - { - StoryVariablesSave vars = Variables; - - if (clear) - { - vars.floatVariables.Clear(); - vars.stringVariables.Clear(); - vars.boolVariables.Clear(); - } - - if (floats != null) - foreach (KeyValuePair kv in floats) vars.floatVariables[kv.Key] = kv.Value; - if (strings != null) - foreach (KeyValuePair kv in strings) vars.stringVariables[kv.Key] = kv.Value; - if (bools != null) - foreach (KeyValuePair kv in bools) vars.boolVariables[kv.Key] = kv.Value; - } - - public override (Dictionary FloatVariables, - Dictionary StringVariables, - Dictionary BoolVariables) GetAllVariables() - { - StoryVariablesSave vars = Variables; - return ( - new Dictionary(vars.floatVariables), - new Dictionary(vars.stringVariables), - new Dictionary(vars.boolVariables) - ); - } - - // ── 供故事树解锁条件复用的便捷读取 ──────────────────────────────────────── - - /// 读取变量的整数近似值(float 四舍五入、bool 取 0/1);不存在返回 0。 - public int GetIntVariable(string variableName) - { - StoryVariablesSave vars = Variables; - if (vars.floatVariables.TryGetValue(variableName, out float f)) - return Mathf.RoundToInt(f); - if (vars.boolVariables.TryGetValue(variableName, out bool b)) - return b ? 1 : 0; - return 0; - } - - /// 该变量是否存在于任一类型的存储中。 - public bool HasVariable(string variableName) => Contains(variableName); - - // ── 内部 ──────────────────────────────────────────────────────────────── - - // 当变量被重新赋值为其它类型时,从旧类型字典移除,避免同名变量残留多份 - private void RemoveStaleEntries(string name, bool keepFloat, bool keepString, bool keepBool) - { - StoryVariablesSave vars = Variables; - if (!keepFloat) vars.floatVariables.Remove(name); - if (!keepString) vars.stringVariables.Remove(name); - if (!keepBool) vars.boolVariables.Remove(name); - } - - // 将存储中的原始值转换为 Yarn 请求的类型(float / bool / string / int 之间互转) - private static bool TryConvert(object value, out T result) - { - if (value is T typed) - { - result = typed; - return true; - } - - try - { - if (typeof(T) == typeof(float) || typeof(T) == typeof(double) || typeof(T) == typeof(int)) - { - float f = value switch - { - float fv => fv, - bool bv => bv ? 1f : 0f, - string sv => float.TryParse(sv, NumberStyles.Any, CultureInfo.InvariantCulture, out float p) ? p : 0f, - _ => 0f - }; - result = (T)System.Convert.ChangeType(f, typeof(T), CultureInfo.InvariantCulture); - return true; - } - - if (typeof(T) == typeof(bool)) - { - bool b = value switch - { - bool bv => bv, - float fv => fv != 0f, - string sv => bool.TryParse(sv, out bool p) && p, - _ => false - }; - result = (T)(object)b; - return true; - } - - if (typeof(T) == typeof(string)) - { - string s = value switch - { - string sv => sv, - float fv => fv.ToString(CultureInfo.InvariantCulture), - bool bv => bv.ToString(), - _ => value != null ? value.ToString() : string.Empty - }; - result = (T)(object)s; - return true; - } - } - catch - { - // 转换失败时落到下方失败分支 - } - - result = default; - return false; - } - } -} diff --git a/Assets/Scripts/NewStorySystem/Dialogue/StoryVariableStorage.cs.meta b/Assets/Scripts/NewStorySystem/Dialogue/StoryVariableStorage.cs.meta deleted file mode 100644 index dcd1c7fc..00000000 --- a/Assets/Scripts/NewStorySystem/Dialogue/StoryVariableStorage.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 7dc7dc14d9f97c043bf6fb67c3a70877 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/Dialogue/VNDialoguePresenter.cs b/Assets/Scripts/NewStorySystem/Dialogue/VNDialoguePresenter.cs index 18c6bddd..db6a390d 100644 --- a/Assets/Scripts/NewStorySystem/Dialogue/VNDialoguePresenter.cs +++ b/Assets/Scripts/NewStorySystem/Dialogue/VNDialoguePresenter.cs @@ -3,6 +3,7 @@ using TMPro; using UnityEngine; using UnityEngine.UI; using Yarn.Unity; +using Ichni.Story.UI; namespace Ichni.Story.Dialogue { @@ -11,61 +12,21 @@ namespace Ichni.Story.Dialogue /// /// 职责: /// - /// 对话开始/结束时淡入/淡出 - /// :逐字打字效果 + 点击推进。 - /// :显示选项按钮 + 等待玩家选择。 + /// 对话流控制:打字机效果、点击推进、等待选项。 + /// 将所有的 UI 引用委托给 进行管理。 /// /// - /// - /// 挂载位置:与 同一 GameObject(StoryDialogueRoot)。 - /// UI 引用字段需在 Inspector 中连接到 DialogPage 下的对应节点。 - /// /// public class VNDialoguePresenter : DialoguePresenterBase { - // ── UI 引用 ───────────────────────────────────────────────────────────── - - [Header("面板控制")] - [Tooltip("对话面板整体的 CanvasGroup(DialogPage/DialogCanvas)。用于淡入/淡出及交互开关。")] - [SerializeField] private CanvasGroup panelGroup; - - [Header("台词区")] - [Tooltip("台词主体文本 TMP(DialogContentFrame/Background/Text)。")] - [SerializeField] private TextMeshProUGUI dialogueText; - - [Tooltip("说话者名称的父容器 GameObject(DialogContentFrame/Speaker)。无说话者时整体隐藏。")] - [SerializeField] private GameObject speakerContainer; - - [Tooltip("说话者名称 TMP(DialogContentFrame/Speaker/Text)。")] - [SerializeField] private TextMeshProUGUI speakerText; - - [Header("推进按钮")] - [Tooltip("点击此按钮推进对话。\n" + - " • 打字效果进行中 → 加速(RequestHurryUpLine)显示全文。\n" + - " • 打字已完成 → 进入下一行(RequestNextLine)。\n" + - "推荐:将场景中 DialogContentFrame/Background 或 BackButton 的 Button 拖入此处。")] - [SerializeField] private Button advanceButton; - - [Header("选项区")] - [Tooltip("选项按钮容器根节点(ChoiceFrame)。有选项时显示,无选项时隐藏。")] - [SerializeField] private GameObject choiceFrame; - - [Tooltip("选项按钮数组(最多 4 个,对应 ChoiceFrame 下的四个 GameObject)。")] - [SerializeField] private Button[] choiceButtons = new Button[4]; - - [Tooltip("每个选项按钮上的文本 TMP,与 choiceButtons 按索引一一对应。")] - [SerializeField] private TextMeshProUGUI[] choiceTexts = new TextMeshProUGUI[4]; - - // ── 打字 / 淡入淡出设置 ────────────────────────────────────────────────── + [Header("UI 管理")] + [Tooltip("负责当前对话界面的 UI Page 容器。如果为空,将尝试获取全局单例。")] + [SerializeField] private DialogUIPage uiPage; [Header("打字效果")] [Tooltip("每秒显示的字符数。设为 0 则瞬间显示全文。")] [SerializeField] private float lettersPerSecond = 40f; - [Header("淡入淡出")] - [SerializeField] private float fadeInDuration = 0.2f; - [SerializeField] private float fadeOutDuration = 0.15f; - // ── 私有状态 ───────────────────────────────────────────────────────────── /// @@ -74,6 +35,11 @@ namespace Ichni.Story.Dialogue /// private bool _typewriterComplete; + /// + /// 是否处于快进状态(遇到选项或玩家再次点击时会打断)。 + /// + private bool _isFastForwarding; + /// /// 选项选择的异步结果来源。RunOptionsAsync 等待其 Task 完成, /// 点击按钮时 TrySetResult 触发完成。 @@ -81,179 +47,180 @@ namespace Ichni.Story.Dialogue private YarnTaskCompletionSource _optionTcs; /// - /// 对应 StoryDialogueRoot 上的 DialogueRunner,用于调用 RequestNextLine / RequestHurryUpLine。 - /// 在 Awake 中通过 GetComponent 取得。 + /// 对应 StoryDialogueRoot 上的 DialogueRunner。 /// private DialogueRunner _runner; + private DialogUIPage Page => uiPage != null ? uiPage : DialogUIPage.instance; + // ── 生命周期 ───────────────────────────────────────────────────────────── private void Awake() { - // VNDialoguePresenter 需要与 DialogueRunner 同 GameObject,通过 GetComponent 获取引用。 _runner = GetComponent(); if (_runner == null) Debug.LogWarning("[VNDialoguePresenter] 未在同 GameObject 上找到 DialogueRunner。" + "请确认 VNDialoguePresenter 挂载在 StoryDialogueRoot 上。"); + } - // 启动时隐藏面板(alpha=0, 不响应交互) - SetPanelState(visible: false, instant: true); + private void Start() + { + if (Page == null) return; // 启动时隐藏选项容器 - if (choiceFrame != null) choiceFrame.SetActive(false); + if (Page.choiceFrame != null) Page.choiceFrame.SetActive(false); // 注册推进按钮回调 - if (advanceButton != null) - advanceButton.onClick.AddListener(OnAdvanceButtonClicked); + if (Page.advanceButton != null) + Page.advanceButton.onClick.AddListener(OnAdvanceButtonClicked); + + // 注册快进按钮回调 + if (Page.fastForwardButton != null) + Page.fastForwardButton.onClick.AddListener(OnFastForwardButtonClicked); } private void OnDestroy() { - if (advanceButton != null) - advanceButton.onClick.RemoveListener(OnAdvanceButtonClicked); + if (Page != null) + { + if (Page.advanceButton != null) + Page.advanceButton.onClick.RemoveListener(OnAdvanceButtonClicked); + if (Page.fastForwardButton != null) + Page.fastForwardButton.onClick.RemoveListener(OnFastForwardButtonClicked); + } } // ── DialoguePresenterBase 实现 ─────────────────────────────────────────── - /// - /// 对话开始:将面板淡入到可见状态。 - /// 在 DialogueRunner 开始第一行前由 Yarn 调用。 - /// public override async YarnTask OnDialogueStartedAsync() { - // 先令 CanvasGroup 可交互但 alpha=0(为淡入动画做准备) - SetPanelState(visible: true, instant: false); - - if (panelGroup != null) - await Effects.FadeAlphaAsync(panelGroup, 0f, 1f, fadeInDuration, CancellationToken.None); + if (Page != null) + { + var tcs = new YarnTaskCompletionSource(); + Page.PlayFadeIn(() => tcs.TrySetResult(true)); + await tcs.Task; + } } - /// - /// 呈现一行台词。 - /// - /// 隐藏选项区,显示说话者名称(若有)。 - /// 逐字打字效果,期间可被 HurryUpToken 中断(显示全文)。 - /// 等待玩家点击推进(NextContentToken 取消)。 - /// - /// public override async YarnTask RunLineAsync(LocalizedLine line, LineCancellationToken token) { + if (Page == null) return; + // 确保选项区不可见;台词区始终可见 - if (choiceFrame != null) choiceFrame.SetActive(false); + if (Page.choiceFrame != null) Page.choiceFrame.SetActive(false); // ── 说话者名称 ── bool hasSpeaker = !string.IsNullOrEmpty(line.CharacterName); - if (speakerContainer != null) speakerContainer.SetActive(hasSpeaker); - if (speakerText != null) speakerText.text = hasSpeaker ? line.CharacterName : string.Empty; + if (Page.speakerContainer != null) Page.speakerContainer.SetActive(hasSpeaker); + if (Page.speakerText != null) Page.speakerText.text = hasSpeaker ? line.CharacterName : string.Empty; + + // ── 立绘高亮 ── + Page.portraitStage?.HighlightSpeaker(line.CharacterName); // ── 打字效果 ── string fullText = line.TextWithoutCharacterName.Text; _typewriterComplete = false; - if (dialogueText != null) + if (Page.dialogueText != null) { - // 先将全文赋给 TMP,再通过 maxVisibleCharacters 逐步显示 - // (避免每帧 Substring 产生大量 GC 分配) - dialogueText.text = fullText; - dialogueText.maxVisibleCharacters = 0; + Page.dialogueText.text = fullText; + Page.dialogueText.maxVisibleCharacters = 0; } - // 逐字播放;若 HurryUpToken 被取消(玩家第一次点击)则立即跳出循环 - await TypewriterAsync(fullText, token.HurryUpToken); + if (_isFastForwarding) + { + // 瞬间显示全文 + if (Page.dialogueText != null) Page.dialogueText.maxVisibleCharacters = int.MaxValue; + _typewriterComplete = true; - // 确保全文可见(无论正常完成还是被加速中断) - if (dialogueText != null) - dialogueText.maxVisibleCharacters = int.MaxValue; + // 极短的延迟,防止瞬间刷过几百句话造成卡顿,也给玩家微小的视觉感知 + await YarnTask.Delay(50).SuppressCancellationThrow(); - _typewriterComplete = true; + if (_isFastForwarding && _runner != null) + { + _runner.RequestNextLine(); + } + } + else + { + // 正常逐字播放 + await TypewriterAsync(fullText, token.HurryUpToken); + + // 确保全文可见 + if (Page.dialogueText != null) + Page.dialogueText.maxVisibleCharacters = int.MaxValue; + + _typewriterComplete = true; + } // ── 等待玩家推进 ── - // token.NextContentToken 由外部 DialogueRunner.RequestNextLine() 取消, - // SuppressCancellationThrow 确保不抛出 OperationCanceledException。 await YarnTask.WaitUntilCanceled(token.NextContentToken).SuppressCancellationThrow(); } - /// - /// 呈现选项列表,等待玩家选择。 - /// - /// 显示选项容器,配置每个按钮的文本与点击监听。 - /// 通过 异步等待玩家选择。 - /// 返回玩家选择的 (对话被外部取消则返回 null)。 - /// - /// public override async YarnTask RunOptionsAsync( DialogueOption[] options, LineCancellationToken token) { + if (Page == null) return null; + + // 遇到选项强制打断快进 + _isFastForwarding = false; + // 清空台词区,准备显示选项 - if (speakerContainer != null) speakerContainer.SetActive(false); - if (dialogueText != null) dialogueText.text = string.Empty; + if (Page.speakerContainer != null) Page.speakerContainer.SetActive(false); + if (Page.dialogueText != null) Page.dialogueText.text = string.Empty; // 显示选项容器 - if (choiceFrame != null) choiceFrame.SetActive(true); + if (Page.choiceFrame != null) Page.choiceFrame.SetActive(true); - // 创建选项选择的异步结果来源 _optionTcs = new YarnTaskCompletionSource(); - // 当 NextContentToken 被外部取消(对话被强制结束),提前将 TCS 置为 null 结果, - // 使 await _optionTcs.Task 能正常退出而不死锁。 WaitForExternalCancelAsync(token.NextContentToken).Forget(); // ── 配置每个选项按钮 ── - for (int i = 0; i < choiceButtons.Length; i++) + for (int i = 0; i < Page.choiceButtons.Length; i++) { - // 只显示当前实际有效且可用的选项 - bool active = i < options.Length && options[i].IsAvailable; - if (choiceButtons[i] != null) - choiceButtons[i].gameObject.SetActive(active); + if (Page.choiceButtons[i] == null) continue; - if (!active) continue; - - // 设置按钮文本 - if (i < choiceTexts.Length && choiceTexts[i] != null) - choiceTexts[i].text = options[i].Line.TextWithoutCharacterName.Text; - - // 捕获循环变量,避免闭包捕获错误索引 - DialogueOption captured = options[i]; - choiceButtons[i].onClick.RemoveAllListeners(); - choiceButtons[i].onClick.AddListener(() => _optionTcs.TrySetResult(captured)); + if (i < options.Length) + Page.choiceButtons[i].Setup(options[i], opt => _optionTcs.TrySetResult(opt)); + else + Page.choiceButtons[i].Cleanup(); } // ── 等待玩家选择 ── DialogueOption? selected = await _optionTcs.Task; - // 清理按钮监听,隐藏选项容器 - foreach (Button btn in choiceButtons) - if (btn != null) btn.onClick.RemoveAllListeners(); + // 清理所有按钮并隐藏选项容器 + foreach (ChoiceButton btn in Page.choiceButtons) + btn?.Cleanup(); - if (choiceFrame != null) choiceFrame.SetActive(false); + if (Page.choiceFrame != null) Page.choiceFrame.SetActive(false); return selected; } - /// - /// 对话结束:淡出并隐藏对话面板。 - /// 在 DialogueRunner 处理完最后一行/选项后由 Yarn 调用。 - /// public override async YarnTask OnDialogueCompleteAsync() { - if (panelGroup != null) - await Effects.FadeAlphaAsync(panelGroup, 1f, 0f, fadeOutDuration, CancellationToken.None); - - SetPanelState(visible: false, instant: true); + if (Page != null) + { + var tcs = new YarnTaskCompletionSource(); + Page.PlayFadeOut(() => tcs.TrySetResult(true)); + await tcs.Task; + } } // ── 内部方法 ───────────────────────────────────────────────────────────── - /// - /// 推进按钮点击回调。 - /// - /// 打字中 → RequestHurryUpLine(取消 HurryUpToken,立即显示全文)。 - /// 打字完毕 → RequestNextLine(取消 NextContentToken,进入下一行)。 - /// - /// private void OnAdvanceButtonClicked() { + // 如果玩家在快进时点击屏幕/推进键,则打断快进状态并停止当前动作 + if (_isFastForwarding) + { + _isFastForwarding = false; + return; + } + if (_runner == null) return; if (!_typewriterComplete) @@ -262,55 +229,40 @@ namespace Ichni.Story.Dialogue _runner.RequestNextLine(); // 第二次点击:推进到下一行 } - /// - /// 控制对话面板 的显示状态。 - /// - /// 是否可见且可交互。 - /// 为 true 时立即设置 alpha;为 false 时仅设置 interactable/blocksRaycasts, - /// alpha 留给外部的 FadeAlphaAsync 动画处理。 - private void SetPanelState(bool visible, bool instant) + private void OnFastForwardButtonClicked() { - if (panelGroup == null) return; - panelGroup.interactable = visible; - panelGroup.blocksRaycasts = visible; - if (instant) panelGroup.alpha = visible ? 1f : 0f; + _isFastForwarding = true; + + if (_runner == null) return; + + // 立即跳过当前的等待状态 + if (!_typewriterComplete) + _runner.RequestHurryUpLine(); + else + _runner.RequestNextLine(); } - /// - /// 逐字打字效果。 - /// 通过 maxVisibleCharacters 逐步显示文本(无 GC 分配)。 - /// 被 取消时立即返回,调用方负责将 maxVisibleCharacters 设为 MaxValue。 - /// - /// 要逐字展示的完整文本(已预先赋值给 dialogueText.text)。 - /// 取消此 token 可跳过打字效果。 private async YarnTask TypewriterAsync(string text, CancellationToken hurryUpToken) { - if (dialogueText == null) return; + if (Page.dialogueText == null) return; - // lettersPerSecond <= 0 时瞬间显示全文 if (lettersPerSecond <= 0f) { - dialogueText.maxVisibleCharacters = int.MaxValue; + Page.dialogueText.maxVisibleCharacters = int.MaxValue; return; } int delayMs = Mathf.Max(1, Mathf.RoundToInt(1000f / lettersPerSecond)); - // TMP 的 maxVisibleCharacters 控制可见字符数(不含 rich-text 标签) - // 逐帧递增直到全文显示或被 hurryUpToken 中断 for (int i = 1; i <= text.Length; i++) { if (hurryUpToken.IsCancellationRequested) return; - dialogueText.maxVisibleCharacters = i; + Page.dialogueText.maxVisibleCharacters = i; await YarnTask.Delay(delayMs, hurryUpToken).SuppressCancellationThrow(); if (hurryUpToken.IsCancellationRequested) return; } } - /// - /// 监听外部取消信号(对话被强制终止),将 设为 null 结果, - /// 确保 的 await 能正常退出而不会死锁。 - /// private async YarnTask WaitForExternalCancelAsync(CancellationToken externalToken) { await YarnTask.WaitUntilCanceled(externalToken).SuppressCancellationThrow(); diff --git a/Assets/Scripts/NewStorySystem/Dialogue/VNPortraitStage.cs b/Assets/Scripts/NewStorySystem/Dialogue/VNPortraitStage.cs new file mode 100644 index 00000000..67d6c9b1 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Dialogue/VNPortraitStage.cs @@ -0,0 +1,334 @@ +using System.Collections.Generic; +using Sirenix.OdinInspector; +using UnityEngine; + +namespace Ichni.Story.Dialogue +{ + /// + /// VN 立绘舞台。管理当前对话中所有已上台角色的 实例。 + /// 依据用户的合理建议,为了支持未知数量的角色同时出现,本系统改为【动态生成与移除】机制: + /// + /// 当角色需要上台时,依据其 动态实例化 Prefab。 + /// 当角色下台时,直接销毁(Destroy)对应的 GameObject 释放内存。 + /// + /// + public class VNPortraitStage : MonoBehaviour + { + public static VNPortraitStage Instance { get; private set; } + + // ── 配置 ──────────────────────────────────────────────────────────────── + + [Header("Prefab Settings")] + [Tooltip("默认的 Sprite 立绘预制体。当角色的 Portrait Style 为 Sprite 时使用此预制体进行实例化。" + + "该预制体上必须挂载了实现 IPortraitRenderer 的组件(如 SpritePortraitRenderer)。")] + [SerializeField] + private GameObject _spritePortraitPrefab; + + [Header("Canvas Reference")] + [Tooltip("立绘容器的 RectTransform,作为所有生成立绘的父节点。也是坐标映射的基准(通常指向 DialogPage/PortraitContainer)。")] + [SerializeField] + private RectTransform _portraitContainer; + + // ── 运行时状态 ─────────────────────────────────────────────────────────── + + /// 当前已上台的活跃角色:characterId → 其对应的渲染器实例 + private readonly Dictionary _activePortraits = + new Dictionary(); + + // ── 生命周期 ───────────────────────────────────────────────────────────── + + private void Awake() + { + Instance = this; + } + + private void OnDestroy() + { + if (Instance == this) + { + Instance = null; + } + } + + // ── 公共 API ───────────────────────────────────────────────────────────── + + /// + /// 当前说话者角色 Id(由 Yarn 行数据驱动)。 + /// + public string CurrentSpeakerId { get; private set; } + + /// + /// 显示角色立绘。如果角色已在台上则更新情绪和位置; + /// 如果不在台上,则根据其渲染类型动态生成,并置于容器内。 + /// 这里的坐标是归一化坐标 (-100, 100),内部会自动加上该角色的 positionOffset。 + /// + /// 角色 ID(需在 CharacterRegistry 中存在)。 + /// 初始情绪名。 + /// 目标归一化坐标 [-100, 100]。 + /// 成功生成或更新返回 true,失败返回 false。 + public bool ShowPortrait(string characterId, string emotion, Vector2 normalizedPosition) + { + CharacterData data = GetCharacterData(characterId); + if (data == null) return false; + + // 1. 计算最终的像素坐标(应用 CharacterData 中配置的 positionOffset) + Vector2 finalNormalizedPos = normalizedPosition + data.positionOffset; + Vector2 pixelPos = NormalizedToAnchoredPosition(finalNormalizedPos.x, finalNormalizedPos.y); + + // 2. 如果角色已在台上,直接更新情绪与位置 + if (_activePortraits.TryGetValue(characterId, out IPortraitRenderer existing)) + { + existing.SetEmotion(emotion); + existing.SetPosition(pixelPos); + return true; + } + + // 2. 如果不在台上,决定使用哪一个预制体进行动态生成 + GameObject prefabToInstantiate = null; + + if (data.portraitStyle == PortraitStyle.Sprite) + { + prefabToInstantiate = _spritePortraitPrefab; + if (prefabToInstantiate == null) + { + Debug.LogError("[VNPortraitStage] 未配置 _spritePortraitPrefab,无法动态生成 Sprite 立绘!"); + return false; + } + } + else // Live2D / Spine + { + prefabToInstantiate = data.dynamicPortraitPrefab; + if (prefabToInstantiate == null) + { + Debug.LogError($"[VNPortraitStage] 角色 '{characterId}' 为动态立绘,但 CharacterData 中未配置 dynamicPortraitPrefab!"); + return false; + } + } + + // 3. 动态实例化 + GameObject go = Instantiate(prefabToInstantiate, _portraitContainer); + go.name = $"Portrait_{characterId}"; + + // 确保坐标系和缩放正确 + RectTransform rect = go.GetComponent(); + if (rect != null) + { + rect.localScale = Vector3.one; + rect.localRotation = Quaternion.identity; + } + + IPortraitRenderer renderer = go.GetComponent(); + if (renderer == null) + { + Debug.LogError($"[VNPortraitStage] 生成的预制体 '{go.name}' 缺少实现 IPortraitRenderer 接口的组件!"); + Destroy(go); + return false; + } + + // 4. 显示并定位 + renderer.Show(data, emotion); + renderer.SetPosition(pixelPos); + + // 5. 登记到活跃立绘列表 + _activePortraits[characterId] = renderer; + + // 6. 保持当前说话者的高亮状态一致 + renderer.SetActiveVisual(characterId == CurrentSpeakerId); + + return true; + } + + /// + /// 移除并销毁指定角色的立绘。 + /// + public void HidePortrait(string characterId) + { + if (_activePortraits.TryGetValue(characterId, out IPortraitRenderer renderer)) + { + if (renderer is MonoBehaviour mb && mb != null) + { + Destroy(mb.gameObject); + } + _activePortraits.Remove(characterId); + } + } + + /// + /// 清空并销毁所有当前在台上的立绘。 + /// + public void HideAll() + { + foreach (IPortraitRenderer renderer in _activePortraits.Values) + { + if (renderer is MonoBehaviour mb && mb != null) + { + Destroy(mb.gameObject); + } + } + _activePortraits.Clear(); + } + + /// + /// 设置或移动立绘位置,并可选择性地更新表情。如果角色不在台上,则会动态生成它。 + /// + /// 角色 ID。 + /// 目标归一化坐标 [-100, 100],会自动应用角色的 positionOffset。 + /// 可选表情。如果为 null 且角色已在台上,则保持当前表情;若角色不在台上,则默认使用 "normal"。 + public void SetPortraitPosition(string characterId, Vector2 normalizedPosition, string emotion = null) + { + CharacterData data = GetCharacterData(characterId); + if (data == null) return; + + // 计算包含角色特定偏移量的最终像素坐标 + Vector2 finalNormalizedPos = normalizedPosition + data.positionOffset; + Vector2 pixelPos = NormalizedToAnchoredPosition(finalNormalizedPos.x, finalNormalizedPos.y); + + if (_activePortraits.TryGetValue(characterId, out IPortraitRenderer renderer)) + { + renderer.SetPosition(pixelPos); + if (!string.IsNullOrEmpty(emotion)) + { + renderer.SetEmotion(emotion); + } + } + else + { + // 不在台上,则用指定表情(空时默认 "normal")在目标位置生成它 + string targetEmotion = string.IsNullOrEmpty(emotion) ? "normal" : emotion; + ShowPortrait(characterId, targetEmotion, normalizedPosition); + } + } + + /// + /// 说话者高亮压暗处理:当前说话者高亮,其余压暗。 + /// + public void HighlightSpeaker(string characterId) + { + CurrentSpeakerId = characterId; + + foreach (KeyValuePair kv in _activePortraits) + { + kv.Value.SetActiveVisual(kv.Key == characterId); + } + } + + /// + /// 仅改变角色的表情(角色必须已在台上)。 + /// + public void SetPortraitEmotion(string characterId, string emotion) + { + if (_activePortraits.TryGetValue(characterId, out IPortraitRenderer renderer)) + { + renderer.SetEmotion(emotion); + } + else + { + Debug.LogWarning($"[VNPortraitStage] 无法仅设置表情:角色 '{characterId}' 目前不在台上。"); + } + } + + /// + /// 平滑移动立绘到目标归一化坐标。 + /// + public void MovePortrait(string characterId, Vector2 normalizedPosition, float duration) + { + if (_activePortraits.TryGetValue(characterId, out IPortraitRenderer renderer)) + { + CharacterData data = GetCharacterData(characterId); + if (data != null) + { + Vector2 finalNormalizedPos = normalizedPosition + data.positionOffset; + Vector2 pixelPos = NormalizedToAnchoredPosition(finalNormalizedPos.x, finalNormalizedPos.y); + renderer.MoveTo(pixelPos, duration); + } + } + else + { + Debug.LogWarning($"[VNPortraitStage] 无法移动:角色 '{characterId}' 目前不在台上。"); + } + } + + /// + /// 让指定角色的立绘跳跃。 + /// + /// 跳跃高度(归一化坐标尺度) + public void JumpPortrait(string characterId, float normalizedPower, int numJumps, float duration) + { + if (_activePortraits.TryGetValue(characterId, out IPortraitRenderer renderer)) + { + float pixelPower = NormalizedToPixelDistance(normalizedPower, false); // 跳跃基于 Y 轴高度 + renderer.Jump(pixelPower, numJumps, duration); + } + else + { + Debug.LogWarning($"[VNPortraitStage] 无法跳跃:角色 '{characterId}' 目前不在台上。"); + } + } + + /// + /// 让指定角色的立绘震动。 + /// + /// 震动幅度(归一化坐标尺度) + public void ShakePortrait(string characterId, float duration, float normalizedStrength, int vibrato) + { + if (_activePortraits.TryGetValue(characterId, out IPortraitRenderer renderer)) + { + float pixelStrength = NormalizedToPixelDistance(normalizedStrength, true); // 左右震动基于 X 轴宽度 + renderer.Shake(duration, pixelStrength, vibrato); + } + else + { + Debug.LogWarning($"[VNPortraitStage] 无法震动:角色 '{characterId}' 目前不在台上。"); + } + } + + /// + /// 将归一化坐标 (-100, 100) 映射为 anchoredPosition 像素坐标。 + /// + public Vector2 NormalizedToAnchoredPosition(float normalizedX, float normalizedY) + { + if (_portraitContainer == null) + { + Debug.LogWarning("[VNPortraitStage] _portraitContainer 未配置,坐标映射使用 1920x1080 默认尺寸映射。"); + return new Vector2(normalizedX / 100f * 960f, normalizedY / 100f * 540f); + } + + Vector2 halfSize = _portraitContainer.rect.size * 0.5f; + return new Vector2(normalizedX / 100f * halfSize.x, normalizedY / 100f * halfSize.y); + } + + /// + /// 将归一化距离映射为像素距离(用于动画幅度换算)。 + /// + /// 归一化长度 + /// 是否基于 X 轴进行映射(否则基于 Y 轴) + public float NormalizedToPixelDistance(float normalizedDistance, bool useXAxis = false) + { + if (_portraitContainer == null) + { + return normalizedDistance / 100f * (useXAxis ? 960f : 540f); + } + Vector2 halfSize = _portraitContainer.rect.size * 0.5f; + return normalizedDistance / 100f * (useXAxis ? halfSize.x : halfSize.y); + } + + // ── 内部辅助 ───────────────────────────────────────────────────────────── + + private CharacterData GetCharacterData(string characterId) + { + if (StoryManager.instance == null || StoryManager.instance.characterRegistry == null) + { + Debug.LogError("[VNPortraitStage] StoryManager 或 CharacterRegistry 未初始化!"); + return null; + } + + if (!StoryManager.instance.characterRegistry.TryGet(characterId, out CharacterData data)) + { + Debug.LogWarning($"[VNPortraitStage] 在 CharacterRegistry 中找不到 ID 为 '{characterId}' 的 CharacterData 资产。"); + return null; + } + + return data; + } + } +} diff --git a/Assets/Scripts/NewStorySystem/Dialogue/VNPortraitStage.cs.meta b/Assets/Scripts/NewStorySystem/Dialogue/VNPortraitStage.cs.meta new file mode 100644 index 00000000..8e3b7add --- /dev/null +++ b/Assets/Scripts/NewStorySystem/Dialogue/VNPortraitStage.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ec4abf93d4e3d1d448630a311fe7c236 \ No newline at end of file diff --git a/Assets/Scripts/Story/StoryUI/StoryUIPage.cs b/Assets/Scripts/NewStorySystem/StoryUIPage.cs similarity index 93% rename from Assets/Scripts/Story/StoryUI/StoryUIPage.cs rename to Assets/Scripts/NewStorySystem/StoryUIPage.cs index 1eb178c7..8aed4dfb 100644 --- a/Assets/Scripts/Story/StoryUI/StoryUIPage.cs +++ b/Assets/Scripts/NewStorySystem/StoryUIPage.cs @@ -9,7 +9,6 @@ namespace Ichni.Story.UI { public class StoryUIPage : UIPageBase { - public MessageBox messageBox; public Button backButton; protected override void Awake() diff --git a/Assets/Scripts/Story/StoryUI/StoryUIPage.cs.meta b/Assets/Scripts/NewStorySystem/StoryUIPage.cs.meta similarity index 83% rename from Assets/Scripts/Story/StoryUI/StoryUIPage.cs.meta rename to Assets/Scripts/NewStorySystem/StoryUIPage.cs.meta index e3f3cddf..d0afaac8 100644 --- a/Assets/Scripts/Story/StoryUI/StoryUIPage.cs.meta +++ b/Assets/Scripts/NewStorySystem/StoryUIPage.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3ec0b23c77de2764d9425add8f28ea00 +guid: 981c044487823304aade761b1adaf914 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Story/Dialog.meta b/Assets/Scripts/NewStorySystem/UI.meta similarity index 77% rename from Assets/Scripts/Story/Dialog.meta rename to Assets/Scripts/NewStorySystem/UI.meta index c78470d6..aab3c508 100644 --- a/Assets/Scripts/Story/Dialog.meta +++ b/Assets/Scripts/NewStorySystem/UI.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2de1e277bcf059c42826353d1c086ccc +guid: 0d5fd17f91f4f8049953f00fe242b32c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/NewStorySystem/UI/DialogUIPage.cs b/Assets/Scripts/NewStorySystem/UI/DialogUIPage.cs new file mode 100644 index 00000000..5b1898ce --- /dev/null +++ b/Assets/Scripts/NewStorySystem/UI/DialogUIPage.cs @@ -0,0 +1,71 @@ +using Ichni.Story.Dialogue; +using Ichni.UI; +using UnityEngine; +using UnityEngine.Events; + +namespace Ichni.Story.UI +{ + /// + /// 对话系统专用的 UI 页面容器。 + /// 接管整个对话面板的淡入淡出及交互状态控制, + /// 将显示生命周期与对话流逻辑 (VNDialoguePresenter) 彻底解耦。 + /// + public class DialogUIPage : UIPageBase + { + public static DialogUIPage instance; + + [Header("立绘舞台")] + public VNPortraitStage portraitStage; + + [Header("台词区")] + public TMPro.TextMeshProUGUI dialogueText; + public GameObject speakerContainer; + public TMPro.TextMeshProUGUI speakerText; + + [Header("推进按钮")] + public UnityEngine.UI.Button advanceButton; + [Tooltip("点击后自动快进,直到遇到选项")] + public UnityEngine.UI.Button fastForwardButton; + + [Header("选项区")] + public GameObject choiceFrame; + public ChoiceButton[] choiceButtons = new ChoiceButton[4]; + + [Header("动态组件")] + public DialogWheel dialogWheel; + + protected override void Awake() + { + base.Awake(); + + if (instance == null) + { + instance = this; + } + else + { + Destroy(gameObject); + return; + } + + // 默认启动时强制隐藏 + if (mainCanvasGroup != null) + { + mainCanvasGroup.alpha = 0f; + mainCanvasGroup.interactable = false; + mainCanvasGroup.blocksRaycasts = false; + mainCanvasGroup.gameObject.SetActive(false); + } + } + + public void PlayFadeIn(UnityAction onComplete = null) + { + FadeIn(0.2f, false, onComplete); + } + + public void PlayFadeOut(UnityAction onComplete = null) + { + FadeOut(0.2f, false, onComplete); + } + } +} diff --git a/Assets/Scripts/NewStorySystem/UI/DialogUIPage.cs.meta b/Assets/Scripts/NewStorySystem/UI/DialogUIPage.cs.meta new file mode 100644 index 00000000..4b3e4433 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/UI/DialogUIPage.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0e1e4a2c0a479784e839bdf448215e19 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/UI/DialogWheel.cs b/Assets/Scripts/NewStorySystem/UI/DialogWheel.cs new file mode 100644 index 00000000..55ea90dc --- /dev/null +++ b/Assets/Scripts/NewStorySystem/UI/DialogWheel.cs @@ -0,0 +1,72 @@ +using DG.Tweening; +using UnityEngine; + +namespace Ichni.Story.UI +{ + /// + /// 对话时常驻转动的齿轮/轮盘,以及伴随浮动的指针。 + /// + public class DialogWheel : MonoBehaviour + { + [Header("轮盘旋转")] + [Tooltip("要旋转的 RectTransform。如果不填,默认获取自身。")] + public RectTransform wheelRect; + + [Tooltip("顺时针旋转一整圈(360度)所需的时间(秒)")] + public float rotationCycleDuration = 5f; + + [Header("指针浮动")] + [Tooltip("常驻上下浮动的指针对象 (RectTransform)")] + public RectTransform pointerRect; + + [Tooltip("指针单向浮动的距离(像素)")] + public float pointerFloatDistance = 5f; + + [Tooltip("指针完成单向浮动所需的时间")] + public float pointerFloatDuration = 0.3f; + + private Tween _rotateTween; + private Tween _pointerTween; + private float _pointerStartY; + + private void Awake() + { + if (wheelRect == null) wheelRect = GetComponent(); + + if (pointerRect != null) + { + _pointerStartY = pointerRect.anchoredPosition.y; + } + } + + private void Start() + { + // 轮盘常驻匀速旋转 + if (wheelRect != null && rotationCycleDuration > 0f) + { + // SetRelative(true) 保证无论当前角度是多少,都在其基础上转 -360 度 + // LoopType.Restart 配合 Linear 缓动,实现无限丝滑旋转 + _rotateTween = wheelRect.DORotate(new Vector3(0, 0, -360f), rotationCycleDuration, RotateMode.FastBeyond360) + .SetRelative(true) + .SetLoops(-1, LoopType.Restart) + .SetEase(Ease.Linear); + _rotateTween.Play(); + } + + // 指针常驻浮动,启动后永不停止 + if (pointerRect != null) + { + _pointerTween = pointerRect.DOAnchorPosY(_pointerStartY + pointerFloatDistance, pointerFloatDuration) + .SetLoops(-1, LoopType.Yoyo) + .SetEase(Ease.InOutSine); + _pointerTween.Play(); + } + } + + private void OnDestroy() + { + _rotateTween?.Kill(); + _pointerTween?.Kill(); + } + } +} diff --git a/Assets/Scripts/NewStorySystem/UI/DialogWheel.cs.meta b/Assets/Scripts/NewStorySystem/UI/DialogWheel.cs.meta new file mode 100644 index 00000000..5c7a1411 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/UI/DialogWheel.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 027bcd2c2d137f5458f8b12002234663 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/UI/StoryMessageBoxUIPage.cs b/Assets/Scripts/NewStorySystem/UI/StoryMessageBoxUIPage.cs new file mode 100644 index 00000000..61db3d15 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/UI/StoryMessageBoxUIPage.cs @@ -0,0 +1,143 @@ +using System.Collections.Generic; +using Ichni.Menu.UI; +using Ichni.UI; +using UnityEngine; + +namespace Ichni.Story.UI +{ + /// + /// 用于在剧情系统中管理并顺序展示 MessageBox 的独立 UI 页面。 + /// 支持动态实例化给定的 MessageBox Prefab,并在所有消息展示完毕后进行大页面的 FadeOut。 + /// + public class StoryMessageBoxUIPage : UIPageBase + { + public static StoryMessageBoxUIPage instance; + + [Header("Prefabs & Containers")] + [Tooltip("默认使用的 MessageBox 预制体(请从 Project 中拖拽,而非场景中的实例)")] + public MessageBox defaultMessageBoxPrefab; + + [Tooltip("生成的 MessageBox 挂载在哪?如果不填,默认挂载在自己身上")] + public Transform messageContainer; + + // 用于排队的内部消息数据结构 + private struct PendingMessage + { + public string title; + public string content; + public MessageBox customPrefab; // 支持未来传入不同种类的 Prefab + } + + private Queue _messageQueue = new Queue(); + private MessageBox _currentActiveBox; + private bool _isPageActive = false; + + protected override void Awake() + { + base.Awake(); + + if (instance == null) + { + instance = this; + } + else + { + Debug.LogWarning("[StoryMessageBoxUIPage] 场景中存在多个实例,正在销毁多余的实例。"); + Destroy(gameObject); + return; + } + + if (messageContainer == null) + { + messageContainer = this.transform; + } + } + + /// + /// 将歌曲解锁提示加入弹窗队列。 + /// + public void ShowUnlockMessage(string songUnlockKey) + { + string title = "New Song Unlocked!"; + string content = $"You have unlocked the song: {songUnlockKey}!"; + EnqueueMessage(title, content, defaultMessageBoxPrefab); + } + + /// + /// 将自定义文本提示加入弹窗队列。 + /// + public void ShowCustomMessage(string title, string content) + { + EnqueueMessage(title, content, defaultMessageBoxPrefab); + } + + /// + /// 将指定消息入队。如果是空闲状态,则唤醒大页面并开始处理队列。 + /// + private void EnqueueMessage(string title, string content, MessageBox prefab) + { + if (prefab == null) + { + Debug.LogError("[StoryMessageBoxUIPage] 没有可用的 MessageBox 预制体!"); + return; + } + + _messageQueue.Enqueue(new PendingMessage + { + title = title, + content = content, + customPrefab = prefab + }); + + // 如果当前页面没有在显示中,则开始整体流程 + if (!_isPageActive) + { + _isPageActive = true; + + // 唤醒大页面(执行 UIPageBase 的渐入并拦截底层射线) + this.FadeIn(0.5f, false, ShowNextInQueue); + } + } + + /// + /// 从队列中取出一个并实例化显示。 + /// + private void ShowNextInQueue() + { + if (_messageQueue.Count == 0) + { + // 队列处理完毕,大页面整体退场 + _currentActiveBox = null; + _isPageActive = false; + this.FadeOut(); + return; + } + + PendingMessage msg = _messageQueue.Dequeue(); + + // 实例化预制体 + _currentActiveBox = Instantiate(msg.customPrefab, messageContainer); + + // 订阅“当这个消息框彻底结束关闭时”的事件 + _currentActiveBox.onAllMessagesClosed.AddListener(() => + { + // 销毁旧实例 + if (_currentActiveBox != null) + { + Destroy(_currentActiveBox.gameObject); + } + + // 检查并显示下一个 + ShowNextInQueue(); + }); + + // 配置并启动 MessageBox + _currentActiveBox.Clear(); + _currentActiveBox.AddInfo(msg.title, msg.content, null); + + // MessageBox.SetUp() 内部会激活自己并执行自己的 FadeIn + _currentActiveBox.gameObject.SetActive(true); + _currentActiveBox.SetUp(); + } + } +} diff --git a/Assets/Scripts/NewStorySystem/UI/StoryMessageBoxUIPage.cs.meta b/Assets/Scripts/NewStorySystem/UI/StoryMessageBoxUIPage.cs.meta new file mode 100644 index 00000000..e7b1241a --- /dev/null +++ b/Assets/Scripts/NewStorySystem/UI/StoryMessageBoxUIPage.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 07f2a7ffd4b513d4e90d60a6587914cc \ No newline at end of file diff --git a/Assets/Scripts/Story/StoryData.meta b/Assets/Scripts/NewStorySystem/YarnFunctions.meta similarity index 77% rename from Assets/Scripts/Story/StoryData.meta rename to Assets/Scripts/NewStorySystem/YarnFunctions.meta index d4c0850c..d0867d0d 100644 --- a/Assets/Scripts/Story/StoryData.meta +++ b/Assets/Scripts/NewStorySystem/YarnFunctions.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 31a6a9bf0919951489cacfb86fb715c9 +guid: 0700ab9bd015c9e4f8e5dcdc6f5f59ce folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/GeneralFunctions.cs b/Assets/Scripts/NewStorySystem/YarnFunctions/GeneralFunctions.cs new file mode 100644 index 00000000..2ba11ccf --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/GeneralFunctions.cs @@ -0,0 +1,30 @@ +using UnityEngine; +using Yarn.Unity; + +namespace Ichni.Story.YarnFunctions +{ + public static class GeneralFunctions + { + [YarnCommand("log")] + public static void Log(string message, string logType) + { + logType = logType.ToLower(); + + switch (logType) + { + case "info": + Debug.Log(message); + break; + case "warning": + Debug.LogWarning(message); + break; + case "error": + Debug.LogError(message); + break; + default: + Debug.Log(message); + break; + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/GeneralFunctions.cs.meta b/Assets/Scripts/NewStorySystem/YarnFunctions/GeneralFunctions.cs.meta new file mode 100644 index 00000000..87243bf7 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/GeneralFunctions.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1af4095ad0bedbe41b834a162253a0e8 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs b/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs new file mode 100644 index 00000000..eaaa5ad8 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs @@ -0,0 +1,69 @@ +using UnityEngine; +using Yarn.Unity; + +namespace Ichni.Story.YarnFunctions +{ + /// + /// 立绘动画控制相关的 Yarn 自定义命令静态注册器。 + /// 包含平移、跳跃、震动等 DOTween 动画表现。 + /// + public static class PortraitAnimationCommands + { + // ── Yarn Commands ──────────────────────────────────────────────────────── + + /// + /// 平滑移动角色立绘到目标位置。 + /// 格式: <<move_portrait characterId x y duration>> + /// + /// 角色标识 ID + /// 目标 X 坐标 [-100, 100] + /// 目标 Y 坐标 [-100, 100] + /// 动画持续时间(秒) + [YarnCommand("move_portrait")] + public static void MovePortrait(string characterId, float x, float y, float duration) + { + if (!EnsureStage()) return; + Dialogue.VNPortraitStage.Instance.MovePortrait(characterId, new Vector2(x, y), duration); + } + + /// + /// 让角色立绘原地跳跃。 + /// 格式: <<jump_portrait characterId power numJumps duration>> + /// + /// 角色标识 ID + /// 跳跃高度(使用与坐标域相同的归一化尺度,如 10 表示 10% 高度) + /// 跳跃次数 + /// 动画总持续时间(秒) + [YarnCommand("jump_portrait")] + public static void JumpPortrait(string characterId, float power, int numJumps, float duration) + { + if (!EnsureStage()) return; + Dialogue.VNPortraitStage.Instance.JumpPortrait(characterId, power, numJumps, duration); + } + + /// + /// 让角色立绘产生左右震动效果。 + /// 格式: <<shake_portrait characterId duration strength vibrato>> + /// + /// 角色标识 ID + /// 震动持续时间(秒) + /// 震动幅度(使用与坐标域相同的归一化尺度) + /// 震动频率 + [YarnCommand("shake_portrait")] + public static void ShakePortrait(string characterId, float duration, float strength, int vibrato) + { + if (!EnsureStage()) return; + Dialogue.VNPortraitStage.Instance.ShakePortrait(characterId, duration, strength, vibrato); + } + + // ── 内部辅助 ───────────────────────────────────────────────────────────── + + private static bool EnsureStage() + { + if (Dialogue.VNPortraitStage.Instance != null) return true; + + Debug.LogError("[PortraitAnimationCommands] 未找到 VNPortraitStage 实例!请确保在当前场景中存在挂载了 VNPortraitStage 的游戏物体。"); + return false; + } + } +} diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs.meta b/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs.meta new file mode 100644 index 00000000..e8c2af9a --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 50b4898984f9bfc4da527dcd444f87b3 \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs b/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs new file mode 100644 index 00000000..09e4218d --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs @@ -0,0 +1,112 @@ +using UnityEngine; +using Yarn.Unity; + +namespace Ichni.Story.YarnFunctions +{ + /// + /// 立绘控制相关的 Yarn 自定义命令静态注册器。 + /// + /// 全局静态命令,不依赖于 GameObject 的挂载。所有方法都使用强类型的参数, + /// 以更明确、简洁的指令名称区分不同应用场景,从而抛弃复杂的内部字符串解析判断。 + /// + /// + public static class PortraitCommands + { + // ── Yarn Commands ──────────────────────────────────────────────────────── + + /// + /// 最基础、最全面的立绘指令:设置指定角色的坐标和表情。 + /// 若角色不在台上,会自动以指定的表情和位置实例化。 + /// 格式: <<set_portrait characterId x y [emotion]>> + /// + /// 角色标识 ID。 + /// 归一化 X 坐标 [-100, 100] + /// 归一化 Y 坐标 [-100, 100] + /// 表情名称。如果不填,默认保持不变或初始化为 "normal" + [YarnCommand("set_portrait")] + public static void SetPortrait(string characterId, float x, float y, string emotion = null) + { + if (!EnsureStage()) return; + + // 传入归一化坐标,由 VNPortraitStage 内部自动应用 positionOffset 并转换为像素坐标 + Vector2 normalizedPos = new Vector2(x, y); + Dialogue.VNPortraitStage.Instance.SetPortraitPosition(characterId, normalizedPos, emotion); + } + + /// + /// 设置当前说话角色的坐标和表情。 + /// 格式: <<set_portrait_current x y [emotion]>> + /// + [YarnCommand("set_portrait_current")] + public static void SetPortraitCurrent(float x, float y, string emotion = null) + { + if (!EnsureStage()) return; + + string characterId = Dialogue.VNPortraitStage.Instance.CurrentSpeakerId; + if (string.IsNullOrEmpty(characterId)) + { + Debug.LogWarning("[PortraitCommands] set_portrait_current: 当前没有活动的说话者,无法执行此命令!"); + return; + } + + SetPortrait(characterId, x, y, emotion); + } + + /// + /// 仅设置或移动指定角色的坐标(不改变当前表情)。 + /// 格式: <<set_portrait_position characterId x y>> + /// + [YarnCommand("set_portrait_position")] + public static void SetPortraitPosition(string characterId, float x, float y) + { + // 通过传入 emotion = null,VNPortraitStage 在更新时将保持角色原有表情 + SetPortrait(characterId, x, y, null); + } + + /// + /// 仅改变指定角色的表情(角色必须已经上台)。 + /// 格式: <<set_portrait_emotion characterId emotion>> + /// + [YarnCommand("set_portrait_emotion")] + public static void SetPortraitEmotion(string characterId, string emotion) + { + if (!EnsureStage()) return; + + Dialogue.VNPortraitStage.Instance.SetPortraitEmotion(characterId, emotion); + } + + /// + /// 隐藏指定角色的立绘。 + /// 格式: <<hide_portrait characterId>> + /// + [YarnCommand("hide_portrait")] + public static void HidePortrait(string characterId) + { + if (!EnsureStage()) return; + + Dialogue.VNPortraitStage.Instance.HidePortrait(characterId); + } + + /// + /// 隐藏当前所有在台上的立绘。 + /// 格式: <<hide_all_portraits>> + /// + [YarnCommand("hide_all_portraits")] + public static void HideAllPortraits() + { + if (!EnsureStage()) return; + + Dialogue.VNPortraitStage.Instance.HideAll(); + } + + // ── 内部辅助 ───────────────────────────────────────────────────────────── + + private static bool EnsureStage() + { + if (Dialogue.VNPortraitStage.Instance != null) return true; + + Debug.LogError("[PortraitCommands] 未找到 VNPortraitStage 实例!请确保在当前场景中存在挂载了 VNPortraitStage 的游戏物体。"); + return false; + } + } +} diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs.meta b/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs.meta new file mode 100644 index 00000000..bb6f3314 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d56251fa130b1334eab42a8d3069932f \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs b/Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs new file mode 100644 index 00000000..83541132 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs @@ -0,0 +1,103 @@ +using Ichni.Story.Dialogue; +using Ichni.Story.UI; +using UnityEngine; +using UnityEngine.Localization.Settings; +using Yarn.Unity; + +namespace Ichni.Story.YarnFunctions +{ + /// + /// 包含与故事树节点控制、全局进程、存档交互相关的 Yarn 自定义命令注册器。 + /// + public static class StoryTreeCommands + { + // ── Yarn Commands ──────────────────────────────────────────────────────── + + /// + /// 解锁一首新歌曲,并在当前这段对话结束(对话 UI 淡出)后,弹出 MessageBox 提示。 + /// 格式: <<unlock_song songUnlockKey>> + /// + /// 要解锁的歌曲密钥/ID + [YarnCommand("unlock_song")] + public static void UnlockSong(string songUnlockKey) + { + if (GameSaveManager.instance == null || GameSaveManager.instance.SongSaveModule == null) + { + Debug.LogError("[StoryTreeCommands] 无法解锁歌曲:GameSaveManager 或其 SongSaveModule 未初始化!"); + return; + } + + // 1. 检查是否已经解锁 + if (GameSaveManager.instance.SongSaveModule.CheckStoryKey(songUnlockKey)) + { + Debug.Log($"[StoryTreeCommands] 歌曲 {songUnlockKey} 已处于解锁状态。"); + return; + } + + // 2. 写入解锁状态并保存存档 + GameSaveManager.instance.SongSaveModule.storyUnlockKeys.Add(songUnlockKey); + GameSaveManager.instance.SongSaveModule.SaveStoryUnlockKeys(); + Debug.Log($"[StoryTreeCommands] 已成功写入并保存歌曲解锁密钥:{songUnlockKey}"); + + // 3. 将 UI 弹窗提示加入到对话结束队列中 + if (StoryDialogueController.instance != null) + { + StoryDialogueController.instance.dialogueEndActions.Add(() => + { + if (StoryMessageBoxUIPage.instance != null) + { + StoryMessageBoxUIPage.instance.ShowUnlockMessage(songUnlockKey); + } + else + { + Debug.LogError("[StoryTreeCommands] 弹窗失败:场景中未找到 StoryMessageBoxUIPage 实例!"); + } + }); + } + else + { + Debug.LogError("[StoryTreeCommands] 弹窗队列注册失败:未找到 StoryDialogueController 实例!"); + } + } + + /// + /// 在对话结束后,弹出一个自定义 MessageBox 提示。 + /// 会尝试使用 Unity Localization 进行翻译,如果找不到对应条目则回退显示原文本(Key)。 + /// 格式: <<show_message titleKey contentKey [tableName]>> + /// + /// 标题文本或本地化键 + /// 正文文本或本地化键 + /// Unity Localization 中的 String Table 名称 + [YarnCommand("show_message")] + public static void ShowMessage(string titleKey, string contentKey, string tableName = "Message") + { + string translatedTitle = GetTranslatedText(tableName, titleKey); + string translatedContent = GetTranslatedText(tableName, contentKey); + Debug.Log($"[StoryTreeCommands] 准备在对话结束后显示自定义弹窗:标题='{translatedTitle}',内容='{translatedContent}'"); + StoryDialogueController.instance.dialogueEndActions.Add(() => + { + StoryMessageBoxUIPage.instance.ShowCustomMessage(translatedTitle, translatedContent); + }); + } + + // ── 内部辅助 ───────────────────────────────────────────────────────────── + + private static string GetTranslatedText(string tableName, string key) + { + if (string.IsNullOrEmpty(key)) return string.Empty; + + try + { + // 尝试从 Unity Localization 中获取翻译文本 + string translated = LocalizationSettings.StringDatabase.GetLocalizedString(tableName, key); + // 若获取失败或为空,则直接原样返回 key 作为兜底文本 + return string.IsNullOrEmpty(translated) ? key : translated; + } + catch + { + // 如果表不存在或其他异常,返回原 key + return key; + } + } + } +} diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs.meta b/Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs.meta new file mode 100644 index 00000000..0a73caf8 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7a048ef81fee2164b8c7ae9748690cfd \ No newline at end of file diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs b/Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs new file mode 100644 index 00000000..2cb6c450 --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs @@ -0,0 +1,76 @@ +using UnityEngine; +using Yarn.Unity; +using Ichni.Story; + +namespace Ichni.Story.YarnFunctions +{ + /// + /// 提供可以直接在 Yarn 脚本中调用的全局变量读写指令。 + /// 完全兼容旧系统中的自定义函数(避免旧的 .yarn 报错), + /// 底层统一指向全新的 StoryVariables 枢纽。 + /// + public static class VariableCommands + { + [YarnCommand("set_bool")] + public static void SetBool(string key, bool value) + { + StoryVariables.SetBool(key, value); + } + + [YarnFunction("get_bool")] + public static bool GetBool(string key) + { + return StoryVariables.GetBool(key); + } + + [YarnCommand("set_int")] + public static void SetInt(string key, int value) + { + StoryVariables.SetInt(key, value); + } + + [YarnCommand("modify_int")] + public static void ModifyInt(string key, int modification) + { + int currentValue = StoryVariables.GetInt(key); + StoryVariables.SetInt(key, currentValue + modification); + } + + [YarnFunction("get_int")] + public static int GetInt(string key) + { + return StoryVariables.GetInt(key); + } + + [YarnCommand("set_float")] + public static void SetFloat(string key, float value) + { + StoryVariables.SetFloat(key, value); + } + + [YarnCommand("modify_float")] + public static void ModifyFloat(string key, float modification) + { + float currentValue = StoryVariables.GetFloat(key); + StoryVariables.SetFloat(key, currentValue + modification); + } + + [YarnFunction("get_float")] + public static float GetFloat(string key) + { + return StoryVariables.GetFloat(key); + } + + [YarnCommand("set_string")] + public static void SetString(string key, string value) + { + StoryVariables.SetString(key, value); + } + + [YarnFunction("get_string")] + public static string GetString(string key) + { + return StoryVariables.GetString(key); + } + } +} diff --git a/Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs.meta b/Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs.meta new file mode 100644 index 00000000..be95e9df --- /dev/null +++ b/Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b9094628fd04644439b4afd553c7a6aa \ No newline at end of file diff --git a/Assets/Scripts/SLSUtilities/Narrative/Base/YarnFunctions.cs b/Assets/Scripts/SLSUtilities/Narrative/Base/YarnFunctions.cs deleted file mode 100644 index 48b43ee5..00000000 --- a/Assets/Scripts/SLSUtilities/Narrative/Base/YarnFunctions.cs +++ /dev/null @@ -1,95 +0,0 @@ -using System.Collections.Generic; -using Yarn.Unity; - -namespace SLSUtilities.Narrative -{ - public static partial class YarnFunctions - { - [YarnCommand("set_bool")] - public static void Yarn_SetBool(string key, bool value) - { - StorySystem.Variables.boolVariables[key] = value; - } - - [YarnFunction("get_bool")] - public static bool Yarn_GetBool(string key) - { - return StorySystem.Variables.boolVariables.GetValueOrDefault(key, false); - } - - [YarnCommand("set_int")] - public static void Yarn_SetInt(string key, int value) - { - StorySystem.Variables.intVariables[key] = value; - } - - [YarnCommand("modify_int")] - public static void Yarn_ModifyInt(string key, int modification) - { - int currentValue = StorySystem.Variables.intVariables.GetValueOrDefault(key, 0); - StorySystem.Variables.intVariables[key] = currentValue + modification; - } - - [YarnFunction("get_int")] - public static int Yarn_GetInt(string key) - { - return StorySystem.Variables.intVariables.GetValueOrDefault(key, 0); - } - - [YarnCommand("set_float")] - public static void Yarn_SetFloat(string key, float value) - { - StorySystem.Variables.floatVariables[key] = value; - } - - [YarnCommand("modify_float")] - public static void Yarn_ModifyFloat(string key, float modification) - { - float currentValue = StorySystem.Variables.floatVariables.GetValueOrDefault(key, 0f); - StorySystem.Variables.floatVariables[key] = currentValue + modification; - } - - [YarnFunction("get_float")] - public static float Yarn_GetFloat(string key) - { - return StorySystem.Variables.floatVariables.GetValueOrDefault(key, 0f); - } - - [YarnCommand("set_string")] - public static void Yarn_SetString(string key, string value) - { - StorySystem.Variables.stringVariables[key] = value; - } - - [YarnFunction("get_string")] - public static string Yarn_GetString(string key) - { - return StorySystem.Variables.stringVariables.GetValueOrDefault(key, ""); - } - } - - public static partial class YarnFunctions - { - [YarnCommand("log")] - public static void Log(string message, string logType) - { - logType = logType.ToLower(); - - switch (logType) - { - case "info": - UnityEngine.Debug.Log(message); - break; - case "warning": - UnityEngine.Debug.LogWarning(message); - break; - case "error": - UnityEngine.Debug.LogError(message); - break; - default: - UnityEngine.Debug.Log(message); - break; - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/SLSUtilities/Narrative/Base/YarnFunctions.cs.meta b/Assets/Scripts/SLSUtilities/Narrative/Base/YarnFunctions.cs.meta deleted file mode 100644 index cb67d7f9..00000000 --- a/Assets/Scripts/SLSUtilities/Narrative/Base/YarnFunctions.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: fd615694e3d8cc842a6c75bc3956a926 \ No newline at end of file diff --git a/Assets/Scripts/Story/StoryUI/Blocks.meta b/Assets/Scripts/Story/StoryUI/Blocks.meta deleted file mode 100644 index d9234b71..00000000 --- a/Assets/Scripts/Story/StoryUI/Blocks.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b2c23056fb0ab4b45a8db11866018794 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Story/StoryUI/Blocks/BeatmapStatusMark.cs b/Assets/Scripts/Story/StoryUI/Blocks/BeatmapStatusMark.cs deleted file mode 100644 index 349b514e..00000000 --- a/Assets/Scripts/Story/StoryUI/Blocks/BeatmapStatusMark.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class BeatmapStatusMark : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } -} diff --git a/Assets/Scripts/Story/StoryUI/Blocks/BeatmapStatusMark.cs.meta b/Assets/Scripts/Story/StoryUI/Blocks/BeatmapStatusMark.cs.meta deleted file mode 100644 index 5a3c0900..00000000 --- a/Assets/Scripts/Story/StoryUI/Blocks/BeatmapStatusMark.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b547d2cc398393a46a2a4c503f128cac -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Story/StoryUI/DialogUI.meta b/Assets/Scripts/Story/StoryUI/DialogUI.meta deleted file mode 100644 index 8ad1d3f4..00000000 --- a/Assets/Scripts/Story/StoryUI/DialogUI.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 8c234abdb2207c8459280e59152ba1c9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/UI/Elements/MessageBox.cs b/Assets/Scripts/UI/Elements/MessageBox.cs index a8db9e40..f5698618 100644 --- a/Assets/Scripts/UI/Elements/MessageBox.cs +++ b/Assets/Scripts/UI/Elements/MessageBox.cs @@ -2,7 +2,6 @@ using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; -using I2.Loc; using Sirenix.OdinInspector; using SLSUtilities.WwiseAssistance; using TMPro; @@ -17,16 +16,16 @@ namespace Ichni.Menu.UI { public CanvasGroup canvasGroup; + [Tooltip("当该消息框结束所有消息并彻底淡出消失时触发。")] + public UnityEvent onAllMessagesClosed = new UnityEvent(); + public int infoIndex; public List infos; public Sprite defaultIcon; public Image iconImage; - public Localize titleLocalize; public TMP_Text titleText; - public Localize contentLocalize; public TMP_Text contentText; - public LocalizationParamsManager parametersManager; public Button receiveButton; @@ -76,8 +75,8 @@ namespace Ichni.Menu.UI infos[infoIndex].action?.Invoke(); - titleLocalize.SetTerm(infos[infoIndex].title); - contentLocalize.SetTerm(infos[infoIndex].content); + if (titleText != null) titleText.text = infos[infoIndex].title; + if (contentText != null) contentText.text = infos[infoIndex].content; this.iconImage.sprite = infos[infoIndex].icon != null ? infos[infoIndex].icon : defaultIcon; infoIndex++; @@ -95,17 +94,10 @@ namespace Ichni.Menu.UI public partial class MessageBox { - public void SetParameter(string paramName, string paramValue, bool localize = false) - { - if (localize) - { - parametersManager.SetParameterValue(paramName, paramValue); - } - else - { - parametersManager.SetParameterValue(paramName, paramValue, false); - } - } + // 废弃对 I2.Loc 参数化功能的支持 + // public void SetParameter(string paramName, string paramValue, bool localize = false) + // { + // } } public partial class MessageBox @@ -136,6 +128,7 @@ namespace Ichni.Menu.UI fadeTweener = canvasGroup.DOFade(0f, duration).OnComplete(() => { canvasGroup.gameObject.SetActive(false); + onAllMessagesClosed?.Invoke(); }); if (ignoreTimeScale) diff --git a/Assets/Story/Chapter0/C0_A0.yarn b/Assets/Story/Chapter0/C0_A0.yarn index 53fc4081..c7751639 100644 --- a/Assets/Story/Chapter0/C0_A0.yarn +++ b/Assets/Story/Chapter0/C0_A0.yarn @@ -1,4 +1,4 @@ -// ============================================================ +// ============================================================ // Chapter 0 · Block A0 // 命名约定:C{章节}_{BlockId}_{分段} // 入口节点:C0_A0 @@ -12,26 +12,22 @@ position: 0,0 // 变量声明(默认值;StoryVariableStorage 存有存档值时会自动覆盖) <> <> - SLS: 勇士,你终于来了。我们等待你很久了。 #line:0c2e7ae +<> Asahi: ……这就是那个传说中的地方吗? #line:0871a99 - -// 条件分支:朝日是否已知晓真相(再访时触发) -<> - SLS: 朝日,你已经了解实情了。那就省去许多解释。 #line:036f930 - <> -<> - <> -<> +<> === title: C0_A0_first_meeting position: -150,250 --- +<> SLS: 这里曾是一场被时间掩埋的战争的终结之地。 #line:0cdce7d SLS: 我们称之为"遗忘之地"。 #line:0fe1e57 +<> Asahi: 为什么叫这个名字? #line:068875f SLS: 因为死去的人希望被遗忘—— #line:04a17d7 +<> SLS: ——而活下来的人,却永远无法忘记。 #line:03e5d89 Asahi: …… #line:0a4b2fc @@ -41,6 +37,9 @@ Asahi: …… #line:0a4b2fc <> -> 暂时不告诉朝日 #line:02b0524 <> +-> 聊聊朝日的过去 <> #line:0e8d4c1 + Asahi: 那段记忆……我终于能开口谈了。 #line:0a3f9b7 + <> === title: C0_A0_reveal @@ -77,6 +76,7 @@ Asahi: 我已经准备好了。 #line:04617a4 title: C0_A0_end position: 0,750 --- +<> SLS: 无论你作何选择,这段旅途都只属于你。 #line:00bf206 SLS: 去吧,勇士。前方还有很长的路。 #line:03c5112 Asahi: 我会一直陪着你的,不管去哪里。 #line:06d2a12 diff --git a/Assets/Story/Chapter0/CharacterRegistry.asset b/Assets/Story/Chapter0/CharacterRegistry.asset index 165f8fda..16b3af22 100644 --- a/Assets/Story/Chapter0/CharacterRegistry.asset +++ b/Assets/Story/Chapter0/CharacterRegistry.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ef30a7b2fbb26d6e35da3aeb86037e3549f04366319bd406725f5c76d5dd583 -size 2017 +oid sha256:d7bdbba66204fad3ba0a8119895c1a00e68b963f7843cd05a2d537f35bfdb60e +size 2297 diff --git a/Assets/Story/Chapter0/StoryData_Chapter0.asset b/Assets/Story/Chapter0/StoryData_Chapter0.asset index 0c17cab0..ebe587a3 100644 --- a/Assets/Story/Chapter0/StoryData_Chapter0.asset +++ b/Assets/Story/Chapter0/StoryData_Chapter0.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2e541d2d13053a432720c2f266890bd1cf5a83861b2a513586c18c864c8e45b +oid sha256:f783684cdd8f7a84fe2e6813b2d5822b0c93610170e1b7d40811606fa7980043 size 3647 diff --git a/Assets/StreamingAssets/ThemeBundles/Android/Android b/Assets/StreamingAssets/ThemeBundles/Android/Android index 1086979c..77be6a9a 100644 Binary files a/Assets/StreamingAssets/ThemeBundles/Android/Android and b/Assets/StreamingAssets/ThemeBundles/Android/Android differ diff --git a/Assets/StreamingAssets/ThemeBundles/Android/Android.manifest b/Assets/StreamingAssets/ThemeBundles/Android/Android.manifest index a5c5f9ea..d66fc99c 100644 --- a/Assets/StreamingAssets/ThemeBundles/Android/Android.manifest +++ b/Assets/StreamingAssets/ThemeBundles/Android/Android.manifest @@ -1,6 +1,6 @@ ManifestFileVersion: 0 UnityVersion: 6000.3.7f1 -CRC: 2623424500 +CRC: 429033785 HashAppended: 0 AssetBundleManifest: AssetBundleInfos: diff --git a/Assets/StreamingAssets/ThemeBundles/Android/basic b/Assets/StreamingAssets/ThemeBundles/Android/basic index dd8bfd84..f4881513 100644 Binary files a/Assets/StreamingAssets/ThemeBundles/Android/basic and b/Assets/StreamingAssets/ThemeBundles/Android/basic differ diff --git a/Assets/StreamingAssets/ThemeBundles/Android/basic.manifest b/Assets/StreamingAssets/ThemeBundles/Android/basic.manifest index b049feb4..3f07d656 100644 --- a/Assets/StreamingAssets/ThemeBundles/Android/basic.manifest +++ b/Assets/StreamingAssets/ThemeBundles/Android/basic.manifest @@ -1,16 +1,16 @@ ManifestFileVersion: 0 UnityVersion: 6000.3.7f1 -CRC: 3927326319 +CRC: 1054575820 Hashes: AssetFileHash: serializedVersion: 2 - Hash: 512dd2d788d66c7fe4fad82c9898ac5a + Hash: 007f20ee8efa9449fd672739395d8b8b TypeTreeHash: serializedVersion: 2 Hash: dfed41e3b38758e5f34df30221d719dc IncrementalBuildHash: serializedVersion: 2 - Hash: 11597e67617d09816dd570d9aea10af1 + Hash: d5b71e5a50fcc975f61f5696454edfd0 HashAppended: 0 ClassTypes: - Class: 1 diff --git a/Assets/StreamingAssets/ThemeBundles/Android/departure_to_multiverse b/Assets/StreamingAssets/ThemeBundles/Android/departure_to_multiverse index 084aab9d..241d977d 100644 --- a/Assets/StreamingAssets/ThemeBundles/Android/departure_to_multiverse +++ b/Assets/StreamingAssets/ThemeBundles/Android/departure_to_multiverse @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0a6ed744644dd742bf4cda461c650f7f4ca9bbef06ef7ae5fedaa630763c4fdf -size 1362798 +oid sha256:15e4245d8138aa63c6f4a9b56bb8837dd2e094dd7099b25aeb1de85b9d8aa745 +size 1362227 diff --git a/Assets/StreamingAssets/ThemeBundles/Android/departure_to_multiverse.manifest b/Assets/StreamingAssets/ThemeBundles/Android/departure_to_multiverse.manifest index 096a71f6..2f9d6356 100644 --- a/Assets/StreamingAssets/ThemeBundles/Android/departure_to_multiverse.manifest +++ b/Assets/StreamingAssets/ThemeBundles/Android/departure_to_multiverse.manifest @@ -1,16 +1,16 @@ ManifestFileVersion: 0 UnityVersion: 6000.3.7f1 -CRC: 3130613331 +CRC: 3864940768 Hashes: AssetFileHash: serializedVersion: 2 - Hash: 0782fed7ca84aeedfdeb1c740adc5b26 + Hash: 8b97cbc629946fe6dd535e8a6f698e0c TypeTreeHash: serializedVersion: 2 - Hash: 8cc3f86bb5dbc7fe3d0bf9f241837627 + Hash: 6dc25ede816b5f1e26e55c131592f792 IncrementalBuildHash: serializedVersion: 2 - Hash: d8a4fa251b182c13d591514f02a84c6d + Hash: 54ab974a222b103c89f3e0fe238ac426 HashAppended: 0 ClassTypes: - Class: 1 @@ -37,6 +37,8 @@ ClassTypes: Script: {fileID: 11500000, guid: 0def5156137c6d14082064fa7b5d5247, type: 3} - Class: 114 Script: {fileID: 11500000, guid: 77ab80dc0820f9d4a8cd9fddbbc89057, type: 3} +- Class: 114 + Script: {fileID: 11500000, guid: 2cc178b2441bca14eb1321c83761ab6f, type: 3} - Class: 114 Script: {fileID: 11500000, guid: 8ba3055fc57abcb41811796e6a0ed3aa, type: 3} - Class: 114 @@ -83,6 +85,7 @@ SerializeReferenceClassIdentifiers: - AssemblyName: Sirenix.Serialization ClassName: Sirenix.Serialization.SerializationData Assets: +- Assets/ThemeBundles/DepartureToMultiverse/Prefabs/Environment/DTM_CircleSpinTrails.prefab - Assets/ThemeBundles/DepartureToMultiverse/Prefabs/DTM_NoteVisualTap.prefab - Assets/ThemeBundles/DepartureToMultiverse/Materials/Skybox/DTM_Skybox_Starry.mat - Assets/ThemeBundles/DepartureToMultiverse/Prefabs/Environment/DTM_RandomGridTube.prefab diff --git a/Assets/StreamingAssets/ThemeBundles/Android/metropolis_on_orbit.manifest b/Assets/StreamingAssets/ThemeBundles/Android/metropolis_on_orbit.manifest index 68784dd6..9e9c5134 100644 --- a/Assets/StreamingAssets/ThemeBundles/Android/metropolis_on_orbit.manifest +++ b/Assets/StreamingAssets/ThemeBundles/Android/metropolis_on_orbit.manifest @@ -10,7 +10,7 @@ Hashes: Hash: 8ab77e54d824a64c30bc20496c5f5926 IncrementalBuildHash: serializedVersion: 2 - Hash: 7593ca8fd4ac3c250191162c1a3f3194 + Hash: d713e609a88c186608032508763d02c3 HashAppended: 0 ClassTypes: - Class: 1 diff --git a/Assets/StreamingAssets/ThemeBundles/Windows64/Windows64 b/Assets/StreamingAssets/ThemeBundles/Windows64/Windows64 index 1a581d1c..1a53f990 100644 Binary files a/Assets/StreamingAssets/ThemeBundles/Windows64/Windows64 and b/Assets/StreamingAssets/ThemeBundles/Windows64/Windows64 differ diff --git a/Assets/StreamingAssets/ThemeBundles/Windows64/Windows64.manifest b/Assets/StreamingAssets/ThemeBundles/Windows64/Windows64.manifest index 7e614bf2..17d449af 100644 --- a/Assets/StreamingAssets/ThemeBundles/Windows64/Windows64.manifest +++ b/Assets/StreamingAssets/ThemeBundles/Windows64/Windows64.manifest @@ -1,6 +1,6 @@ ManifestFileVersion: 0 UnityVersion: 6000.3.7f1 -CRC: 4273076075 +CRC: 3383810862 HashAppended: 0 AssetBundleManifest: AssetBundleInfos: diff --git a/Assets/StreamingAssets/ThemeBundles/Windows64/departure_to_multiverse b/Assets/StreamingAssets/ThemeBundles/Windows64/departure_to_multiverse index 4df1e5b7..7f71cb71 100644 --- a/Assets/StreamingAssets/ThemeBundles/Windows64/departure_to_multiverse +++ b/Assets/StreamingAssets/ThemeBundles/Windows64/departure_to_multiverse @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0309ee6449212905f4813a2afb2f3e6d917e99d037c7f347232e8a7170f33659 -size 2006697 +oid sha256:fd1ad3b18b2e6a6ca6f0a62f42c67e85f4d62ebc79819eef7b4ea4b3481d2faa +size 1413092 diff --git a/Assets/StreamingAssets/ThemeBundles/Windows64/departure_to_multiverse.manifest b/Assets/StreamingAssets/ThemeBundles/Windows64/departure_to_multiverse.manifest index 2eb3f4ea..68c309c1 100644 --- a/Assets/StreamingAssets/ThemeBundles/Windows64/departure_to_multiverse.manifest +++ b/Assets/StreamingAssets/ThemeBundles/Windows64/departure_to_multiverse.manifest @@ -1,16 +1,16 @@ ManifestFileVersion: 0 UnityVersion: 6000.3.7f1 -CRC: 874269373 +CRC: 4039318435 Hashes: AssetFileHash: serializedVersion: 2 - Hash: 8ecfb5459953077e6f509c9dc150eec6 + Hash: e59b40a27d3c2a868588952827b1934d TypeTreeHash: serializedVersion: 2 Hash: 6dc25ede816b5f1e26e55c131592f792 IncrementalBuildHash: serializedVersion: 2 - Hash: 5c3ae75a4cdbf2e6e5fc462d0226b21b + Hash: 19e5914687b1150ef00de5f4923cced6 HashAppended: 0 ClassTypes: - Class: 1 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Flick_HitFX.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Flick_HitFX.prefab index 6e5daeb9..fd60a446 100644 --- a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Flick_HitFX.prefab +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Flick_HitFX.prefab @@ -108,7 +108,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -4816,7 +4816,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &6436623435409707789 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -4832,6 +4832,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4853,9 +4858,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 2 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -4887,7 +4894,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &393908652242839112 GameObject: m_ObjectHideFlags: 0 @@ -4996,7 +5002,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -9740,7 +9746,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &5469123982439044343 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -9756,6 +9762,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9777,9 +9788,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 1 m_MeshDistribution: 0 m_SortMode: 0 @@ -9811,7 +9824,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &987757201259740425 GameObject: m_ObjectHideFlags: 0 @@ -9920,7 +9932,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -14664,7 +14676,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &7698517573709736333 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -14680,6 +14692,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14701,9 +14718,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 4 m_MeshDistribution: 0 m_SortMode: 0 @@ -14735,7 +14754,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &2649872400038691757 GameObject: m_ObjectHideFlags: 0 @@ -14844,7 +14862,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -19561,7 +19579,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &3804338172303829356 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -19577,6 +19595,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -19598,9 +19621,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -19632,7 +19657,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &4315719500094685406 GameObject: m_ObjectHideFlags: 0 @@ -19741,7 +19765,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -24574,7 +24598,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &3349403536436963533 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -24590,6 +24614,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -24611,9 +24640,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 1 m_MeshDistribution: 0 m_SortMode: 0 @@ -24645,7 +24676,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &6152325990999234384 GameObject: m_ObjectHideFlags: 0 @@ -24754,7 +24784,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -29498,7 +29528,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &6804594070940386649 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -29514,6 +29544,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -29535,9 +29570,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 1 m_MeshDistribution: 0 m_SortMode: 0 @@ -29569,7 +29606,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &7653901243468862591 GameObject: m_ObjectHideFlags: 0 @@ -29678,7 +29714,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -34511,7 +34547,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &3494879711755687896 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -34527,6 +34563,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -34548,9 +34589,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 1 m_MeshDistribution: 0 m_SortMode: 0 @@ -34582,7 +34625,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &7916584198410465453 GameObject: m_ObjectHideFlags: 0 @@ -34698,7 +34740,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -39348,7 +39390,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &6411650891525449585 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -39364,6 +39406,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -39385,9 +39432,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -39419,4 +39468,3 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_B.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_B.prefab index 39a883d0..70eaaed9 100644 --- a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_B.prefab +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_B.prefab @@ -4758,7 +4758,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &9090909857404846383 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -4774,6 +4774,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4795,9 +4800,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 + m_MaskInteraction: 0 m_RenderMode: 1 m_MeshDistribution: 0 m_SortMode: 0 @@ -4829,7 +4836,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &2070592205952932412 GameObject: m_ObjectHideFlags: 0 @@ -9588,7 +9594,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &9081262536151624848 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -9604,6 +9610,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9625,9 +9636,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 2 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -9659,7 +9672,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &2261133155526879230 GameObject: m_ObjectHideFlags: 0 @@ -14485,7 +14497,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &6151027602389049168 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -14501,6 +14513,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14522,9 +14539,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -14556,7 +14575,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &2376255500188663908 GameObject: m_ObjectHideFlags: 0 @@ -19315,7 +19333,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &1348402425390080252 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -19331,6 +19349,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -19352,9 +19375,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 2 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -19386,7 +19411,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &2943020494385716766 GameObject: m_ObjectHideFlags: 0 @@ -19501,7 +19525,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -24151,7 +24175,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &4188768693027638627 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -24167,6 +24191,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -24188,9 +24217,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -24222,7 +24253,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &6573924625455929684 GameObject: m_ObjectHideFlags: 0 @@ -28981,7 +29011,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &3563924814195315285 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -28997,6 +29027,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -29018,9 +29053,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 + m_MaskInteraction: 0 m_RenderMode: 1 m_MeshDistribution: 0 m_SortMode: 0 @@ -29052,7 +29089,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &6651680105352939543 GameObject: m_ObjectHideFlags: 0 @@ -33869,7 +33905,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &3958041096823129390 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -33885,6 +33921,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -33906,9 +33947,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 2 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -33940,4 +33983,3 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_G.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_G.prefab index 9d5880f7..d1d7b767 100644 --- a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_G.prefab +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_G.prefab @@ -4950,7 +4950,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_P.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_P.prefab index 52f342a6..919383ff 100644 --- a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_P.prefab +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Hold_HitFX_P.prefab @@ -29255,7 +29255,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Stay_HitFX.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Stay_HitFX.prefab index a9da753e..59efc4a1 100644 --- a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Stay_HitFX.prefab +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Stay_HitFX.prefab @@ -108,7 +108,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -4816,7 +4816,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &5640736116712977215 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -4832,6 +4832,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4853,9 +4858,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 2 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -4887,7 +4894,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &5249990677744981946 GameObject: m_ObjectHideFlags: 0 @@ -4999,7 +5005,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -9649,7 +9655,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &4138720391616017682 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -9665,6 +9671,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9686,9 +9697,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -9720,7 +9733,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &5931878544904699336 GameObject: m_ObjectHideFlags: 0 @@ -9829,7 +9841,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -14546,7 +14558,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &5870414974609834262 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -14562,6 +14574,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14583,9 +14600,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -14617,7 +14636,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &8633588085551914740 GameObject: m_ObjectHideFlags: 0 @@ -14726,7 +14744,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -19452,7 +19470,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &1602668134873900334 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -19468,6 +19486,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -19489,9 +19512,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 4 m_MeshDistribution: 0 m_SortMode: 0 @@ -19523,4 +19548,3 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HiEffect_B.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HiEffect_B.prefab index 6c700c87..99d7036c 100644 --- a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HiEffect_B.prefab +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HiEffect_B.prefab @@ -108,7 +108,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -4825,7 +4825,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &4109529955070703249 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -4841,6 +4841,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4862,9 +4867,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -4896,7 +4903,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &5480151176008203866 GameObject: m_ObjectHideFlags: 0 @@ -5005,7 +5011,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -9731,7 +9737,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &5640841965484054353 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -9747,6 +9753,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9768,9 +9779,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 4 m_MeshDistribution: 0 m_SortMode: 0 @@ -9802,7 +9815,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &8754511166712621810 GameObject: m_ObjectHideFlags: 0 @@ -9913,7 +9925,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -14563,7 +14575,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &1014060429300395170 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -14579,6 +14591,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14600,9 +14617,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -14634,4 +14653,3 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HitEffect_G.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HitEffect_G.prefab index 77c37853..5f205909 100644 --- a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HitEffect_G.prefab +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HitEffect_G.prefab @@ -108,7 +108,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -4825,7 +4825,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &3594631519425132185 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -4841,6 +4841,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4862,9 +4867,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -4896,7 +4903,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &3240066047640847786 GameObject: m_ObjectHideFlags: 0 @@ -5005,7 +5011,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -9749,7 +9755,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &3141689248629385762 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -9765,6 +9771,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9786,9 +9797,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 4 m_MeshDistribution: 0 m_SortMode: 0 @@ -9820,7 +9833,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &7671123070809976812 GameObject: m_ObjectHideFlags: 0 @@ -9932,7 +9944,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -14582,7 +14594,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &8700396741641032723 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -14598,6 +14610,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14619,9 +14636,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -14653,7 +14672,6 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 --- !u!1 &7986537471941685033 GameObject: m_ObjectHideFlags: 0 @@ -14762,7 +14780,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -19470,7 +19488,7 @@ ParticleSystem: vectorLabel1_3: W --- !u!199 &1832114136647296338 ParticleSystemRenderer: - serializedVersion: 6 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -19486,6 +19504,11 @@ ParticleSystemRenderer: m_ReflectionProbeUsage: 0 m_RayTracingMode: 0 m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -19507,9 +19530,11 @@ ParticleSystemRenderer: m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 2 + m_MaskInteraction: 0 m_RenderMode: 0 m_MeshDistribution: 0 m_SortMode: 0 @@ -19541,4 +19566,3 @@ ParticleSystemRenderer: m_MeshWeighting1: 1 m_MeshWeighting2: 1 m_MeshWeighting3: 1 - m_MaskInteraction: 0 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HitEffect_P.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HitEffect_P.prefab index b71f8012..c0e0b355 100644 --- a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HitEffect_P.prefab +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/NoteEffects/Tap_HitEffect_P.prefab @@ -108,7 +108,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -5025,7 +5025,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -9861,7 +9861,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -14755,7 +14755,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 @@ -19676,7 +19676,7 @@ ParticleSystem: m_RotationOrder: 4 moveWithTransform: 0 moveWithCustomTransform: {fileID: 0} - scalingMode: 1 + scalingMode: 0 randomSeed: 0 InitialModule: serializedVersion: 3 diff --git a/ProjectSettings/Packages/dev.yarnspinner/Assembly-CSharp-generated.ysls.json b/ProjectSettings/Packages/dev.yarnspinner/Assembly-CSharp-generated.ysls.json new file mode 100644 index 00000000..6a045c0a --- /dev/null +++ b/ProjectSettings/Packages/dev.yarnspinner/Assembly-CSharp-generated.ysls.json @@ -0,0 +1 @@ +{"version":2,"commands":[{"yarnName":"log","definitionName":"global::Ichni.Story.YarnFunctions.GeneralFunctions.Log","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/GeneralFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":7,"character":8},"end":{"line":27,"character":9}},"parameters":[{"name":"message","isParamsArray":false,"type":"string"},{"name":"logType","isParamsArray":false,"type":"string"}]},{"yarnName":"move_portrait","definitionName":"global::Ichni.Story.YarnFunctions.PortraitAnimationCommands.MovePortrait","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs","documentation":"\u5e73\u6ed1\u79fb\u52a8\u89d2\u8272\u7acb\u7ed8\u5230\u76ee\u6807\u4f4d\u7f6e\u3002 \u683c\u5f0f: <<move_portrait characterId x y duration>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":21,"character":8},"end":{"line":26,"character":9}},"parameters":[{"name":"characterId","documentation":"\u89d2\u8272\u6807\u8bc6 ID","isParamsArray":false,"type":"string"},{"name":"x","documentation":"\u76ee\u6807 X \u5750\u6807 [-100, 100]","isParamsArray":false,"type":"number"},{"name":"y","documentation":"\u76ee\u6807 Y \u5750\u6807 [-100, 100]","isParamsArray":false,"type":"number"},{"name":"duration","documentation":"\u52a8\u753b\u6301\u7eed\u65f6\u95f4\uff08\u79d2\uff09","isParamsArray":false,"type":"number"}]},{"yarnName":"jump_portrait","definitionName":"global::Ichni.Story.YarnFunctions.PortraitAnimationCommands.JumpPortrait","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs","documentation":"\u8ba9\u89d2\u8272\u7acb\u7ed8\u539f\u5730\u8df3\u8dc3\u3002 \u683c\u5f0f: <<jump_portrait characterId power numJumps duration>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":36,"character":8},"end":{"line":41,"character":9}},"parameters":[{"name":"characterId","documentation":"\u89d2\u8272\u6807\u8bc6 ID","isParamsArray":false,"type":"string"},{"name":"power","documentation":"\u8df3\u8dc3\u9ad8\u5ea6\uff08\u4f7f\u7528\u4e0e\u5750\u6807\u57df\u76f8\u540c\u7684\u5f52\u4e00\u5316\u5c3a\u5ea6\uff0c\u5982 10 \u8868\u793a 10% \u9ad8\u5ea6\uff09","isParamsArray":false,"type":"number"},{"name":"numJumps","documentation":"\u8df3\u8dc3\u6b21\u6570","isParamsArray":false,"type":"number"},{"name":"duration","documentation":"\u52a8\u753b\u603b\u6301\u7eed\u65f6\u95f4\uff08\u79d2\uff09","isParamsArray":false,"type":"number"}]},{"yarnName":"shake_portrait","definitionName":"global::Ichni.Story.YarnFunctions.PortraitAnimationCommands.ShakePortrait","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitAnimationCommands.cs","documentation":"\u8ba9\u89d2\u8272\u7acb\u7ed8\u4ea7\u751f\u5de6\u53f3\u9707\u52a8\u6548\u679c\u3002 \u683c\u5f0f: <<shake_portrait characterId duration strength vibrato>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":51,"character":8},"end":{"line":56,"character":9}},"parameters":[{"name":"characterId","documentation":"\u89d2\u8272\u6807\u8bc6 ID","isParamsArray":false,"type":"string"},{"name":"duration","documentation":"\u9707\u52a8\u6301\u7eed\u65f6\u95f4\uff08\u79d2\uff09","isParamsArray":false,"type":"number"},{"name":"strength","documentation":"\u9707\u52a8\u5e45\u5ea6\uff08\u4f7f\u7528\u4e0e\u5750\u6807\u57df\u76f8\u540c\u7684\u5f52\u4e00\u5316\u5c3a\u5ea6\uff09","isParamsArray":false,"type":"number"},{"name":"vibrato","documentation":"\u9707\u52a8\u9891\u7387","isParamsArray":false,"type":"number"}]},{"yarnName":"set_portrait","definitionName":"global::Ichni.Story.YarnFunctions.PortraitCommands.SetPortrait","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs","documentation":"\u6700\u57fa\u7840\u3001\u6700\u5168\u9762\u7684\u7acb\u7ed8\u6307\u4ee4\uff1a\u8bbe\u7f6e\u6307\u5b9a\u89d2\u8272\u7684\u5750\u6807\u548c\u8868\u60c5\u3002 \u82e5\u89d2\u8272\u4e0d\u5728\u53f0\u4e0a\uff0c\u4f1a\u81ea\u52a8\u4ee5\u6307\u5b9a\u7684\u8868\u60c5\u548c\u4f4d\u7f6e\u5b9e\u4f8b\u5316\u3002 \u683c\u5f0f: <<set_portrait characterId x y [emotion]>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":25,"character":8},"end":{"line":33,"character":9}},"parameters":[{"name":"characterId","documentation":"\u89d2\u8272\u6807\u8bc6 ID\u3002","isParamsArray":false,"type":"string"},{"name":"x","documentation":"\u5f52\u4e00\u5316 X \u5750\u6807 [-100, 100]","isParamsArray":false,"type":"number"},{"name":"y","documentation":"\u5f52\u4e00\u5316 Y \u5750\u6807 [-100, 100]","isParamsArray":false,"type":"number"},{"name":"emotion","documentation":"\u8868\u60c5\u540d\u79f0\u3002\u5982\u679c\u4e0d\u586b\uff0c\u9ed8\u8ba4\u4fdd\u6301\u4e0d\u53d8\u6216\u521d\u59cb\u5316\u4e3a \"normal\"","isParamsArray":false,"type":"string"}]},{"yarnName":"set_portrait_current","definitionName":"global::Ichni.Story.YarnFunctions.PortraitCommands.SetPortraitCurrent","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs","documentation":"\u8bbe\u7f6e\u5f53\u524d\u8bf4\u8bdd\u89d2\u8272\u7684\u5750\u6807\u548c\u8868\u60c5\u3002 \u683c\u5f0f: <<set_portrait_current x y [emotion]>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":39,"character":8},"end":{"line":52,"character":9}},"parameters":[{"name":"x","isParamsArray":false,"type":"number"},{"name":"y","isParamsArray":false,"type":"number"},{"name":"emotion","isParamsArray":false,"type":"string"}]},{"yarnName":"set_portrait_position","definitionName":"global::Ichni.Story.YarnFunctions.PortraitCommands.SetPortraitPosition","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs","documentation":"\u4ec5\u8bbe\u7f6e\u6216\u79fb\u52a8\u6307\u5b9a\u89d2\u8272\u7684\u5750\u6807\uff08\u4e0d\u6539\u53d8\u5f53\u524d\u8868\u60c5\uff09\u3002 \u683c\u5f0f: <<set_portrait_position characterId x y>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":58,"character":8},"end":{"line":63,"character":9}},"parameters":[{"name":"characterId","isParamsArray":false,"type":"string"},{"name":"x","isParamsArray":false,"type":"number"},{"name":"y","isParamsArray":false,"type":"number"}]},{"yarnName":"set_portrait_emotion","definitionName":"global::Ichni.Story.YarnFunctions.PortraitCommands.SetPortraitEmotion","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs","documentation":"\u4ec5\u6539\u53d8\u6307\u5b9a\u89d2\u8272\u7684\u8868\u60c5\uff08\u89d2\u8272\u5fc5\u987b\u5df2\u7ecf\u4e0a\u53f0\uff09\u3002 \u683c\u5f0f: <<set_portrait_emotion characterId emotion>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":69,"character":8},"end":{"line":75,"character":9}},"parameters":[{"name":"characterId","isParamsArray":false,"type":"string"},{"name":"emotion","isParamsArray":false,"type":"string"}]},{"yarnName":"hide_portrait","definitionName":"global::Ichni.Story.YarnFunctions.PortraitCommands.HidePortrait","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs","documentation":"\u9690\u85cf\u6307\u5b9a\u89d2\u8272\u7684\u7acb\u7ed8\u3002 \u683c\u5f0f: <<hide_portrait characterId>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":81,"character":8},"end":{"line":87,"character":9}},"parameters":[{"name":"characterId","isParamsArray":false,"type":"string"}]},{"yarnName":"hide_all_portraits","definitionName":"global::Ichni.Story.YarnFunctions.PortraitCommands.HideAllPortraits","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/PortraitCommands.cs","documentation":"\u9690\u85cf\u5f53\u524d\u6240\u6709\u5728\u53f0\u4e0a\u7684\u7acb\u7ed8\u3002 \u683c\u5f0f: <<hide_all_portraits>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":93,"character":8},"end":{"line":99,"character":9}},"parameters":[]},{"yarnName":"unlock_song","definitionName":"global::Ichni.Story.YarnFunctions.StoryTreeCommands.UnlockSong","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs","documentation":"\u89e3\u9501\u4e00\u9996\u65b0\u6b4c\u66f2\uff0c\u5e76\u5728\u5f53\u524d\u8fd9\u6bb5\u5bf9\u8bdd\u7ed3\u675f\uff08\u5bf9\u8bdd UI \u6de1\u51fa\uff09\u540e\uff0c\u5f39\u51fa MessageBox \u63d0\u793a\u3002 \u683c\u5f0f: <<unlock_song songUnlockKey>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":20,"character":8},"end":{"line":60,"character":9}},"parameters":[{"name":"songUnlockKey","documentation":"\u8981\u89e3\u9501\u7684\u6b4c\u66f2\u5bc6\u94a5/ID","isParamsArray":false,"type":"string"}]},{"yarnName":"show_message","definitionName":"global::Ichni.Story.YarnFunctions.StoryTreeCommands.ShowMessage","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/StoryTreeCommands.cs","documentation":"\u5728\u5bf9\u8bdd\u7ed3\u675f\u540e\uff0c\u5f39\u51fa\u4e00\u4e2a\u81ea\u5b9a\u4e49 MessageBox \u63d0\u793a\u3002 \u4f1a\u5c1d\u8bd5\u4f7f\u7528 Unity Localization \u8fdb\u884c\u7ffb\u8bd1\uff0c\u5982\u679c\u627e\u4e0d\u5230\u5bf9\u5e94\u6761\u76ee\u5219\u56de\u9000\u663e\u793a\u539f\u6587\u672c\uff08Key\uff09\u3002 \u683c\u5f0f: <<show_message titleKey contentKey [tableName]>>","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":70,"character":8},"end":{"line":80,"character":9}},"parameters":[{"name":"titleKey","documentation":"\u6807\u9898\u6587\u672c\u6216\u672c\u5730\u5316\u952e","isParamsArray":false,"type":"string"},{"name":"contentKey","documentation":"\u6b63\u6587\u6587\u672c\u6216\u672c\u5730\u5316\u952e","isParamsArray":false,"type":"string"},{"name":"tableName","documentation":"Unity Localization \u4e2d\u7684 String Table \u540d\u79f0","defaultValue":"Message","isParamsArray":false,"type":"string"}]},{"yarnName":"set_bool","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.SetBool","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":13,"character":8},"end":{"line":17,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"},{"name":"value","isParamsArray":false,"type":"bool"}]},{"yarnName":"set_int","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.SetInt","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":25,"character":8},"end":{"line":29,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"},{"name":"value","isParamsArray":false,"type":"number"}]},{"yarnName":"modify_int","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.ModifyInt","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":31,"character":8},"end":{"line":36,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"},{"name":"modification","isParamsArray":false,"type":"number"}]},{"yarnName":"set_float","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.SetFloat","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":44,"character":8},"end":{"line":48,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"},{"name":"value","isParamsArray":false,"type":"number"}]},{"yarnName":"modify_float","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.ModifyFloat","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":50,"character":8},"end":{"line":55,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"},{"name":"modification","isParamsArray":false,"type":"number"}]},{"yarnName":"set_string","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.SetString","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":63,"character":8},"end":{"line":67,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"},{"name":"value","isParamsArray":false,"type":"string"}]}],"functions":[{"yarnName":"get_bool","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.GetBool","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":19,"character":8},"end":{"line":23,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"}],"return":{"type":"bool"}},{"yarnName":"get_int","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.GetInt","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":38,"character":8},"end":{"line":42,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"}],"return":{"type":"number"}},{"yarnName":"get_float","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.GetFloat","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":57,"character":8},"end":{"line":61,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"}],"return":{"type":"number"}},{"yarnName":"get_string","definitionName":"global::Ichni.Story.YarnFunctions.VariableCommands.GetString","fileName":"D:\\Projects\\ichni Official\\Assets/Scripts/NewStorySystem/YarnFunctions/VariableFunctions.cs","language":"csharp","async":false,"containsErrors":false,"location":{"start":{"line":69,"character":8},"end":{"line":73,"character":9}},"parameters":[{"name":"key","isParamsArray":false,"type":"string"}],"return":{"type":"string"}}]} \ No newline at end of file diff --git a/UserSettings/Layouts/CurrentMaximizeLayout.dwlt b/UserSettings/Layouts/CurrentMaximizeLayout.dwlt index 174f3f0f..c0dcbb2e 100644 --- a/UserSettings/Layouts/CurrentMaximizeLayout.dwlt +++ b/UserSettings/Layouts/CurrentMaximizeLayout.dwlt @@ -23,7 +23,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 112} m_MaxSize: {x: 24288, y: 16192} vertical: 1 - controlID: 342 + controlID: 56 draggingID: 0 --- !u!114 &2 MonoBehaviour: @@ -47,10 +47,10 @@ MonoBehaviour: m_TextWithWhitespace: "Game\u200B" m_Pos: serializedVersion: 2 - x: 298.6667 + x: 271.33334 y: 78.66667 - width: 894.66675 - height: 544.6667 + width: 922 + height: 487.3333 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -72,7 +72,7 @@ MonoBehaviour: m_ShowGizmos: 0 m_TargetDisplay: 0 m_ClearColor: {r: 0, g: 0, b: 0, a: 0} - m_TargetSize: {x: 2732, y: 2048} + m_TargetSize: {x: 1920, y: 1080} m_TextureFilterMode: 0 m_TextureHideFlags: 61 m_RenderIMGUI: 1 @@ -81,16 +81,16 @@ MonoBehaviour: m_VSyncEnabled: 0 m_Gizmos: 0 m_Stats: 0 - m_SelectedSizes: 03000000000000001200000015000000000000000000000000000000000000000000000000000000 + m_SelectedSizes: 03000000000000001200000006000000000000000000000000000000000000000000000000000000 m_ZoomArea: m_HRangeLocked: 0 m_VRangeLocked: 0 hZoomLockedByDefault: 0 vZoomLockedByDefault: 0 - m_HBaseRangeMin: -910.6667 - m_HBaseRangeMax: 910.6667 - m_VBaseRangeMin: -682.6667 - m_VBaseRangeMax: 682.6667 + m_HBaseRangeMin: -640 + m_HBaseRangeMax: 640 + m_VBaseRangeMin: -360 + m_VBaseRangeMax: 360 m_HAllowExceedBaseRangeMin: 1 m_HAllowExceedBaseRangeMax: 1 m_VAllowExceedBaseRangeMin: 1 @@ -108,23 +108,23 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 21 - width: 894.66675 - height: 523.6667 - m_Scale: {x: 0.38354492, y: 0.38354492} - m_Translation: {x: 447.33337, y: 261.83334} + width: 922 + height: 466.3333 + m_Scale: {x: 0.64768517, y: 0.64768517} + m_Translation: {x: 461, y: 233.16666} m_MarginLeft: 0 m_MarginRight: 0 m_MarginTop: 0 m_MarginBottom: 0 m_LastShownAreaInsideMargins: serializedVersion: 2 - x: -1166.3129 - y: -682.6667 - width: 2332.6257 - height: 1365.3334 + x: -711.76556 + y: -360 + width: 1423.5311 + height: 720 m_MinimalGUI: 1 - m_defaultScale: 0.38354492 - m_LastWindowPixelSize: {x: 1342.0001, y: 817} + m_defaultScale: 0.64768517 + m_LastWindowPixelSize: {x: 1383, y: 731} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 00000000000000000000 @@ -145,7 +145,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Children: - {fileID: 4} - - {fileID: 17} + - {fileID: 16} m_Position: serializedVersion: 2 x: 0 @@ -155,7 +155,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 112} m_MaxSize: {x: 24288, y: 16192} vertical: 0 - controlID: 343 + controlID: 57 draggingID: 0 --- !u!114 &4 MonoBehaviour: @@ -171,7 +171,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Children: - {fileID: 5} - - {fileID: 12} + - {fileID: 11} m_Position: serializedVersion: 2 x: 0 @@ -181,7 +181,7 @@ MonoBehaviour: m_MinSize: {x: 200, y: 112} m_MaxSize: {x: 16192, y: 16192} vertical: 1 - controlID: 344 + controlID: 58 draggingID: 0 --- !u!114 &5 MonoBehaviour: @@ -203,11 +203,11 @@ MonoBehaviour: x: 0 y: 0 width: 1195.3334 - height: 570.6667 + height: 513.3333 m_MinSize: {x: 200, y: 56} m_MaxSize: {x: 16192, y: 8096} vertical: 0 - controlID: 345 + controlID: 59 draggingID: 0 --- !u!114 &6 MonoBehaviour: @@ -226,8 +226,8 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 0 - width: 298.66666 - height: 570.6667 + width: 271.33334 + height: 513.3333 m_MinSize: {x: 200, y: 200} m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 7} @@ -259,8 +259,8 @@ MonoBehaviour: serializedVersion: 2 x: 0 y: 78.66667 - width: 297.66666 - height: 544.6667 + width: 270.33334 + height: 487.3333 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -277,57 +277,38 @@ MonoBehaviour: m_SceneHierarchy: m_TreeViewState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: [] + m_SelectedIDs: + - m_Data: 48546 m_LastClickedID: m_Data: 0 m_ExpandedIDs: - - m_Data: -366368 - - m_Data: -363360 - - m_Data: -362956 - - m_Data: -338844 - - m_Data: -283904 - - m_Data: -283892 - - m_Data: -281414 - - m_Data: -278436 - - m_Data: -278074 - - m_Data: -255902 - - m_Data: -236384 - - m_Data: -236380 - - m_Data: -236374 - - m_Data: -236048 - - m_Data: -236036 - - m_Data: -233542 - - m_Data: -212182 - - m_Data: -212178 - - m_Data: -212172 - - m_Data: -211846 - - m_Data: -211834 - - m_Data: -209340 - - m_Data: -187642 - - m_Data: -187638 - - m_Data: -187632 - - m_Data: -187306 - - m_Data: -187294 - - m_Data: -187220 - - m_Data: -121380 - - m_Data: -55898 - - m_Data: -55894 - - m_Data: -55888 - - m_Data: -55562 - - m_Data: -55550 - - m_Data: -55476 - - m_Data: -35098 - - m_Data: -35094 - - m_Data: -35088 - - m_Data: -34762 - - m_Data: -34750 - - m_Data: -34640 - - m_Data: -1332 - - m_Data: 113838 + - m_Data: -108648 + - m_Data: -94366 + - m_Data: -94330 + - m_Data: -87070 + - m_Data: -87048 + - m_Data: -87012 + - m_Data: -49606 + - m_Data: -47774 + - m_Data: -14502 + - m_Data: -1338 + - m_Data: 102028 + - m_Data: 102060 + - m_Data: 103324 + - m_Data: 256180 + - m_Data: 256254 + - m_Data: 256286 + - m_Data: 256290 + - m_Data: 256456 + - m_Data: 256864 + - m_Data: 257170 + - m_Data: 257262 + - m_Data: 257486 + - m_Data: 257494 m_RenameOverlay: m_UserAcceptedRename: 0 - m_Name: EmptyObject(Clone) - m_OriginalName: EmptyObject(Clone) + m_Name: + m_OriginalName: m_EditFieldRect: serializedVersion: 2 x: 0 @@ -335,10 +316,10 @@ MonoBehaviour: width: 0 height: 0 m_UserData: - m_Data: -55916 + m_Data: 0 m_IsWaitingForDelay: 0 m_IsRenaming: 0 - m_OriginalEventType: 0 + m_OriginalEventType: 11 m_IsRenamingFilename: 0 m_TrimLeadingAndTrailingWhitespace: 0 m_ClientGUIView: {fileID: 6} @@ -364,18 +345,17 @@ MonoBehaviour: m_Children: [] m_Position: serializedVersion: 2 - x: 298.66666 + x: 271.33334 y: 0 - width: 896.66675 - height: 570.6667 - m_MinSize: {x: 200, y: 200} - m_MaxSize: {x: 4000, y: 4000} + width: 924 + height: 513.3333 + m_MinSize: {x: 202, y: 226} + m_MaxSize: {x: 4002, y: 4026} m_ActualView: {fileID: 2} m_Panes: - {fileID: 9} - {fileID: 2} - {fileID: 10} - - {fileID: 11} m_Selected: 1 m_LastSelected: 0 --- !u!114 &9 @@ -400,10 +380,10 @@ MonoBehaviour: m_TextWithWhitespace: "Scene\u200B" m_Pos: serializedVersion: 2 - x: 298.6667 + x: 271.33334 y: 78.66667 - width: 894.66675 - height: 544.6667 + width: 922 + height: 487.3333 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -1072,9 +1052,9 @@ MonoBehaviour: m_AudioPlay: 0 m_DebugDrawModesUseInteractiveLightBakingData: 0 m_Position: - m_Target: {x: 3.284062, y: -4.438463, z: 228.66423} + m_Target: {x: 70.46575, y: -40.140606, z: 90.52266} speed: 2 - m_Value: {x: 3.284062, y: -4.438463, z: 228.66423} + m_Value: {x: 70.46575, y: -40.140606, z: 90.52266} m_RenderMode: 0 m_CameraMode: drawMode: 0 @@ -1120,13 +1100,13 @@ MonoBehaviour: m_GridAxis: 1 m_gridOpacity: 0.5 m_Rotation: - m_Target: {x: -0.2943263, y: 0.04165452, z: -0.0128243575, w: -0.9548516} + m_Target: {x: -0.01900035, y: 0.013590706, z: -0.0003011617, w: -0.9998659} speed: 2 - m_Value: {x: -0.2942867, y: 0.041648913, z: -0.012822632, w: -0.9547231} + m_Value: {x: -0.018997714, y: 0.01358882, z: -0.0003011199, w: -0.9997272} m_Size: - m_Target: 10.775852 + m_Target: 48.76874 speed: 2 - m_Value: 10.775852 + m_Value: 48.76874 m_Ortho: m_Target: 0 speed: 2 @@ -1144,7 +1124,7 @@ MonoBehaviour: m_FarClip: 1000 m_DynamicClip: 1 m_OcclusionCulling: 0 - m_LastSceneViewRotation: {x: 0.08635472, y: -0.90288734, z: 0.21522357, w: 0.36232075} + m_LastSceneViewRotation: {x: -0.0018017952, y: 0.09097248, z: -0.00016610812, w: -0.9958704} m_LastSceneViewOrtho: 0 m_Viewpoint: m_SceneView: {fileID: 9} @@ -1182,10 +1162,10 @@ MonoBehaviour: m_TextWithWhitespace: "Animator\u200B" m_Pos: serializedVersion: 2 - x: 298.6667 - y: 78.66667 - width: 894.66675 - height: 544 + x: -2153.3333 + y: -7.9999924 + width: 1384 + height: 882.6667 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -1268,78 +1248,6 @@ MonoBehaviour: m_LayerEditor: m_SelectedLayerIndex: 0 --- !u!114 &11 -MonoBehaviour: - m_ObjectHideFlags: 61 - 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: 41147144ff556e246b736135eb26f185, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor::UnityEditor.Rendering.DebugWindow - m_MinSize: {x: 800, y: 300} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Rendering Debugger - m_Image: {fileID: 0} - m_Tooltip: - m_TextWithWhitespace: "Rendering Debugger\u200B" - m_Pos: - serializedVersion: 2 - x: 298.6667 - y: 78.66667 - width: 894.66675 - height: 544.6667 - m_SerializedDataModeController: - m_DataMode: 0 - m_PreferredDataMode: 0 - m_SupportedDataModes: - isAutomatic: 1 - m_ViewDataDictionary: {fileID: 0} - m_OverlayCanvas: - m_LastAppliedPresetName: Default - m_SaveData: [] - m_ContainerData: [] - m_DynamicPanelContainerData: [] - m_OverlaysVisible: 1 - m_DynamicPanelBehavior: 0 - m_WidgetStates: - m_Keys: - - Display Stats -> Frame Stats - - Display Stats -> Bottlenecks - - Display Stats -> Detailed Stats - - Frequently Used -> Rendering Debug - - Frequently Used -> Material Filters - - Frequently Used -> Lighting Debug Modes - - Rendering -> Pixel Validation - - Rendering -> HDR Output - - Rendering -> GPU Resident Drawer Settings - - Rendering -> Occlusion Context Stats - - Rendering -> Instance Culler Stats - - Rendering -> Render Graph - - Material -> Material Validation - - Volume -> Camera - - Volume -> Component - m_Values: - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - - {fileID: 0} - m_Settings: {fileID: 0} ---- !u!114 &12 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -1355,20 +1263,20 @@ MonoBehaviour: m_Position: serializedVersion: 2 x: 0 - y: 570.6667 + y: 513.3333 width: 1195.3334 - height: 242.66663 + height: 300 m_MinSize: {x: 231, y: 276} m_MaxSize: {x: 10001, y: 10026} - m_ActualView: {fileID: 13} + m_ActualView: {fileID: 12} m_Panes: + - {fileID: 12} - {fileID: 13} - {fileID: 14} - {fileID: 15} - - {fileID: 16} m_Selected: 0 m_LastSelected: 1 ---- !u!114 &13 +--- !u!114 &12 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -1391,9 +1299,9 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 649.3334 + y: 592 width: 1194.3334 - height: 216.66663 + height: 274 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -1418,7 +1326,7 @@ MonoBehaviour: m_SkipHidden: 0 m_SearchArea: 1 m_Folders: - - Assets/Prefabs/GameElements/Track + - Assets/Wwise/MonoBehaviour/Editor/EditorPlatformHelpers/iOS m_Globs: [] m_ProductIds: m_AnyWithAssetOrigin: 0 @@ -1428,108 +1336,114 @@ MonoBehaviour: m_ViewMode: 1 m_StartGridSize: 16 m_LastFolders: - - Assets/Prefabs/GameElements/Track + - Assets/Wwise/MonoBehaviour/Editor/EditorPlatformHelpers/iOS m_LastFoldersGridSize: 16 m_LastProjectPath: D:\Projects\ichni Official m_LockTracker: m_IsLocked: 0 m_LastLocalAssetsSearchArea: 1 m_FolderTreeState: - scrollPos: {x: 0, y: 335.33337} + scrollPos: {x: 0, y: 1010} m_SelectedIDs: - - m_Data: 209432 + - m_Data: 100976 m_LastClickedID: - m_Data: 209432 + m_Data: 100976 m_ExpandedIDs: - m_Data: 0 - - m_Data: 77244 - - m_Data: 77246 - - m_Data: 77248 - - m_Data: 77250 - - m_Data: 77252 - - m_Data: 77254 - - m_Data: 77256 - - m_Data: 77258 - - m_Data: 77260 - - m_Data: 77262 - - m_Data: 77264 - - m_Data: 77266 - - m_Data: 77268 - - m_Data: 77270 - - m_Data: 77272 - - m_Data: 77274 - - m_Data: 77276 - - m_Data: 77278 - - m_Data: 77280 - - m_Data: 77282 - - m_Data: 77284 - - m_Data: 77286 - - m_Data: 77288 - - m_Data: 77290 - - m_Data: 77292 - - m_Data: 77294 - - m_Data: 77296 - - m_Data: 77298 - - m_Data: 77300 - - m_Data: 77302 - - m_Data: 77304 - - m_Data: 77306 - - m_Data: 77308 - - m_Data: 77310 - - m_Data: 77312 - - m_Data: 77314 - - m_Data: 77316 - - m_Data: 77318 - - m_Data: 77322 - - m_Data: 77324 - - m_Data: 77326 - - m_Data: 77328 - - m_Data: 77330 - - m_Data: 77332 - - m_Data: 77334 - - m_Data: 77336 - - m_Data: 77340 - - m_Data: 77342 - - m_Data: 77344 - - m_Data: 77346 - - m_Data: 77348 - - m_Data: 77350 - - m_Data: 77352 - - m_Data: 77354 - - m_Data: 77356 - - m_Data: 77358 - - m_Data: 77360 - - m_Data: 77362 - - m_Data: 77364 - - m_Data: 77366 - - m_Data: 77368 - - m_Data: 77370 - - m_Data: 77372 - - m_Data: 77374 - - m_Data: 77376 - - m_Data: 77378 - - m_Data: 77380 - - m_Data: 77382 - - m_Data: 77384 - - m_Data: 77386 - - m_Data: 77388 - - m_Data: 77390 - - m_Data: 77392 - - m_Data: 77394 - - m_Data: 77396 - - m_Data: 77398 - - m_Data: 77400 - - m_Data: 77402 - - m_Data: 77816 - - m_Data: 77818 - - m_Data: 77822 - - m_Data: 153162 - - m_Data: 153164 - - m_Data: 153166 - - m_Data: 153168 - - m_Data: 197202 - - m_Data: 204772 - - m_Data: 204774 + - m_Data: 82090 + - m_Data: 82092 + - m_Data: 82094 + - m_Data: 82096 + - m_Data: 82098 + - m_Data: 82100 + - m_Data: 82102 + - m_Data: 82104 + - m_Data: 82106 + - m_Data: 82108 + - m_Data: 82110 + - m_Data: 82112 + - m_Data: 82114 + - m_Data: 82116 + - m_Data: 82118 + - m_Data: 82120 + - m_Data: 82126 + - m_Data: 82128 + - m_Data: 82130 + - m_Data: 82132 + - m_Data: 82134 + - m_Data: 82136 + - m_Data: 82138 + - m_Data: 82140 + - m_Data: 82142 + - m_Data: 82144 + - m_Data: 82146 + - m_Data: 82148 + - m_Data: 82150 + - m_Data: 82152 + - m_Data: 82154 + - m_Data: 82156 + - m_Data: 82158 + - m_Data: 82160 + - m_Data: 82162 + - m_Data: 82164 + - m_Data: 82166 + - m_Data: 82168 + - m_Data: 82170 + - m_Data: 82172 + - m_Data: 82174 + - m_Data: 82176 + - m_Data: 82178 + - m_Data: 82180 + - m_Data: 82182 + - m_Data: 82184 + - m_Data: 82186 + - m_Data: 82188 + - m_Data: 82190 + - m_Data: 82192 + - m_Data: 82194 + - m_Data: 82196 + - m_Data: 82198 + - m_Data: 82200 + - m_Data: 82202 + - m_Data: 82204 + - m_Data: 82206 + - m_Data: 82210 + - m_Data: 82212 + - m_Data: 82214 + - m_Data: 82216 + - m_Data: 82218 + - m_Data: 82220 + - m_Data: 82222 + - m_Data: 82224 + - m_Data: 82226 + - m_Data: 82228 + - m_Data: 82230 + - m_Data: 82232 + - m_Data: 82234 + - m_Data: 82236 + - m_Data: 82238 + - m_Data: 82240 + - m_Data: 82242 + - m_Data: 82244 + - m_Data: 82246 + - m_Data: 82248 + - m_Data: 82250 + - m_Data: 82252 + - m_Data: 82254 + - m_Data: 82256 + - m_Data: 82258 + - m_Data: 82260 + - m_Data: 82264 + - m_Data: 82266 + - m_Data: 82268 + - m_Data: 82274 + - m_Data: 82276 + - m_Data: 82796 + - m_Data: 82854 + - m_Data: 82858 + - m_Data: 100978 + - m_Data: 100980 + - m_Data: 125440 - m_Data: 1000000000 m_RenameOverlay: m_UserAcceptedRename: 0 @@ -1548,7 +1462,7 @@ MonoBehaviour: m_OriginalEventType: 11 m_IsRenamingFilename: 1 m_TrimLeadingAndTrailingWhitespace: 0 - m_ClientGUIView: {fileID: 12} + m_ClientGUIView: {fileID: 11} m_SearchString: m_CreateAssetUtility: m_EndAction: {fileID: 0} @@ -1563,87 +1477,100 @@ MonoBehaviour: m_Data: 0 m_ExpandedIDs: - m_Data: 0 - - m_Data: 77244 - - m_Data: 77246 - - m_Data: 77248 - - m_Data: 77250 - - m_Data: 77252 - - m_Data: 77254 - - m_Data: 77256 - - m_Data: 77258 - - m_Data: 77260 - - m_Data: 77262 - - m_Data: 77264 - - m_Data: 77266 - - m_Data: 77268 - - m_Data: 77270 - - m_Data: 77272 - - m_Data: 77274 - - m_Data: 77276 - - m_Data: 77278 - - m_Data: 77280 - - m_Data: 77282 - - m_Data: 77284 - - m_Data: 77286 - - m_Data: 77288 - - m_Data: 77290 - - m_Data: 77292 - - m_Data: 77294 - - m_Data: 77296 - - m_Data: 77298 - - m_Data: 77300 - - m_Data: 77302 - - m_Data: 77304 - - m_Data: 77306 - - m_Data: 77308 - - m_Data: 77310 - - m_Data: 77312 - - m_Data: 77314 - - m_Data: 77316 - - m_Data: 77318 - - m_Data: 77320 - - m_Data: 77322 - - m_Data: 77324 - - m_Data: 77326 - - m_Data: 77328 - - m_Data: 77330 - - m_Data: 77332 - - m_Data: 77334 - - m_Data: 77336 - - m_Data: 77338 - - m_Data: 77340 - - m_Data: 77342 - - m_Data: 77344 - - m_Data: 77346 - - m_Data: 77348 - - m_Data: 77350 - - m_Data: 77352 - - m_Data: 77354 - - m_Data: 77356 - - m_Data: 77358 - - m_Data: 77360 - - m_Data: 77362 - - m_Data: 77364 - - m_Data: 77366 - - m_Data: 77368 - - m_Data: 77370 - - m_Data: 77372 - - m_Data: 77374 - - m_Data: 77376 - - m_Data: 77378 - - m_Data: 77380 - - m_Data: 77382 - - m_Data: 77384 - - m_Data: 77386 - - m_Data: 77388 - - m_Data: 77390 - - m_Data: 77392 - - m_Data: 77394 - - m_Data: 77396 - - m_Data: 77398 - - m_Data: 77400 - - m_Data: 77402 - - m_Data: 1000000000 + - m_Data: 82090 + - m_Data: 82092 + - m_Data: 82094 + - m_Data: 82096 + - m_Data: 82098 + - m_Data: 82100 + - m_Data: 82102 + - m_Data: 82104 + - m_Data: 82106 + - m_Data: 82108 + - m_Data: 82110 + - m_Data: 82112 + - m_Data: 82114 + - m_Data: 82116 + - m_Data: 82118 + - m_Data: 82120 + - m_Data: 82122 + - m_Data: 82124 + - m_Data: 82126 + - m_Data: 82128 + - m_Data: 82130 + - m_Data: 82132 + - m_Data: 82134 + - m_Data: 82136 + - m_Data: 82138 + - m_Data: 82140 + - m_Data: 82142 + - m_Data: 82144 + - m_Data: 82146 + - m_Data: 82148 + - m_Data: 82150 + - m_Data: 82152 + - m_Data: 82154 + - m_Data: 82156 + - m_Data: 82158 + - m_Data: 82160 + - m_Data: 82162 + - m_Data: 82164 + - m_Data: 82166 + - m_Data: 82168 + - m_Data: 82170 + - m_Data: 82172 + - m_Data: 82174 + - m_Data: 82176 + - m_Data: 82178 + - m_Data: 82180 + - m_Data: 82182 + - m_Data: 82184 + - m_Data: 82186 + - m_Data: 82188 + - m_Data: 82190 + - m_Data: 82192 + - m_Data: 82194 + - m_Data: 82196 + - m_Data: 82198 + - m_Data: 82200 + - m_Data: 82202 + - m_Data: 82204 + - m_Data: 82206 + - m_Data: 82208 + - m_Data: 82210 + - m_Data: 82212 + - m_Data: 82214 + - m_Data: 82216 + - m_Data: 82218 + - m_Data: 82220 + - m_Data: 82222 + - m_Data: 82224 + - m_Data: 82226 + - m_Data: 82228 + - m_Data: 82230 + - m_Data: 82232 + - m_Data: 82234 + - m_Data: 82236 + - m_Data: 82238 + - m_Data: 82240 + - m_Data: 82242 + - m_Data: 82244 + - m_Data: 82246 + - m_Data: 82248 + - m_Data: 82250 + - m_Data: 82252 + - m_Data: 82254 + - m_Data: 82256 + - m_Data: 82258 + - m_Data: 82260 + - m_Data: 82262 + - m_Data: 82264 + - m_Data: 82266 + - m_Data: 82268 + - m_Data: 82270 + - m_Data: 82272 + - m_Data: 82274 + - m_Data: 82276 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -1670,18 +1597,21 @@ MonoBehaviour: m_Icon: {fileID: 0} m_ResourceFile: m_ListAreaState: - m_SelectedInstanceIDs: [] - m_LastClickedInstanceID: 0 + m_SelectedInstanceIDs: + - m_Data: 48546 + m_LastClickedInstanceID: 48546 m_HadKeyboardFocusLastEvent: 1 m_ExpandedInstanceIDs: - m_Data: 0 - m_Data: 80838 - m_Data: 66042 - m_Data: 68026 + - m_Data: 83032 + - m_Data: 74112 m_RenameOverlay: m_UserAcceptedRename: 0 - m_Name: ObjectTracker - m_OriginalName: ObjectTracker + m_Name: + m_OriginalName: m_EditFieldRect: serializedVersion: 2 x: 0 @@ -1689,13 +1619,13 @@ MonoBehaviour: width: 0 height: 0 m_UserData: - m_Data: 209452 + m_Data: 0 m_IsWaitingForDelay: 0 m_IsRenaming: 0 - m_OriginalEventType: 0 + m_OriginalEventType: 11 m_IsRenamingFilename: 1 m_TrimLeadingAndTrailingWhitespace: 0 - m_ClientGUIView: {fileID: 12} + m_ClientGUIView: {fileID: 11} m_CreateAssetUtility: m_EndAction: {fileID: 0} m_InstanceID: 0 @@ -1707,7 +1637,7 @@ MonoBehaviour: m_GridSize: 16 m_SkipHiddenPackages: 0 m_DirectoriesAreaWidth: 209 ---- !u!114 &14 +--- !u!114 &13 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -1730,9 +1660,9 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 649.3334 + y: 592 width: 1194.3334 - height: 216.66663 + height: 274 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -1746,7 +1676,7 @@ MonoBehaviour: m_DynamicPanelContainerData: [] m_OverlaysVisible: 1 m_DynamicPanelBehavior: 0 ---- !u!114 &15 +--- !u!114 &14 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -1788,7 +1718,7 @@ MonoBehaviour: m_LockTracker: m_IsLocked: 0 m_LastSelectedObjectID: 48546 ---- !u!114 &16 +--- !u!114 &15 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -1826,7 +1756,7 @@ MonoBehaviour: m_DynamicPanelContainerData: [] m_OverlaysVisible: 1 m_DynamicPanelBehavior: 0 ---- !u!114 &17 +--- !u!114 &16 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -1847,15 +1777,15 @@ MonoBehaviour: height: 813.3333 m_MinSize: {x: 275, y: 50} m_MaxSize: {x: 4000, y: 4000} - m_ActualView: {fileID: 18} + m_ActualView: {fileID: 17} m_Panes: + - {fileID: 17} - {fileID: 18} - {fileID: 19} - {fileID: 20} - - {fileID: 21} m_Selected: 0 m_LastSelected: 3 ---- !u!114 &18 +--- !u!114 &17 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} @@ -1897,7 +1827,7 @@ MonoBehaviour: m_ObjectsLockedBeforeSerialization: [] m_InstanceIDsLockedBeforeSerialization: m_PreviewResizer: - m_CachedPref: -312.99988 + m_CachedPref: 312.99988 m_ControlHash: -371814159 m_PrefName: Preview_InspectorPreview m_LastInspectedObjectInstanceID: -1 @@ -1907,6 +1837,58 @@ MonoBehaviour: m_LockTracker: m_IsLocked: 0 m_PreviewWindow: {fileID: 0} +--- !u!114 &18 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12019, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 275, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Inspector + m_Image: {fileID: -440750813802333266, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_TextWithWhitespace: "Inspector\u200B" + m_Pos: + serializedVersion: 2 + x: 1195.3334 + y: 78.66667 + width: 510.33325 + height: 787.3333 + m_SerializedDataModeController: + m_DataMode: 0 + m_PreferredDataMode: 0 + m_SupportedDataModes: + isAutomatic: 1 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_ContainerData: [] + m_DynamicPanelContainerData: [] + m_OverlaysVisible: 1 + m_DynamicPanelBehavior: 0 + m_ObjectsLockedBeforeSerialization: [] + m_InstanceIDsLockedBeforeSerialization: + m_PreviewResizer: + m_CachedPref: 184.33334 + m_ControlHash: 1412526313 + m_PrefName: Preview_InspectorPreview + m_LastInspectedObjectInstanceID: 48546 + m_LastVerticalScrollValue: 0 + m_GlobalObjectId: + m_InspectorMode: 0 + m_LockTracker: + m_IsLocked: 0 + m_PreviewWindow: {fileID: 0} --- !u!114 &19 MonoBehaviour: m_ObjectHideFlags: 52 @@ -1949,10 +1931,10 @@ MonoBehaviour: m_ObjectsLockedBeforeSerialization: [] m_InstanceIDsLockedBeforeSerialization: m_PreviewResizer: - m_CachedPref: 184.33334 + m_CachedPref: 165.66669 m_ControlHash: 1412526313 m_PrefName: Preview_InspectorPreview - m_LastInspectedObjectInstanceID: -1 + m_LastInspectedObjectInstanceID: 48546 m_LastVerticalScrollValue: 0 m_GlobalObjectId: m_InspectorMode: 0 @@ -1960,58 +1942,6 @@ MonoBehaviour: m_IsLocked: 0 m_PreviewWindow: {fileID: 0} --- !u!114 &20 -MonoBehaviour: - m_ObjectHideFlags: 52 - 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: 12019, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_MinSize: {x: 275, y: 100} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Inspector - m_Image: {fileID: -440750813802333266, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_TextWithWhitespace: "Inspector\u200B" - m_Pos: - serializedVersion: 2 - x: 1195.3334 - y: 78.66667 - width: 510.33325 - height: 787.3333 - m_SerializedDataModeController: - m_DataMode: 0 - m_PreferredDataMode: 0 - m_SupportedDataModes: - isAutomatic: 1 - m_ViewDataDictionary: {fileID: 0} - m_OverlayCanvas: - m_LastAppliedPresetName: Default - m_SaveData: [] - m_ContainerData: [] - m_DynamicPanelContainerData: [] - m_OverlaysVisible: 1 - m_DynamicPanelBehavior: 0 - m_ObjectsLockedBeforeSerialization: [] - m_InstanceIDsLockedBeforeSerialization: - m_PreviewResizer: - m_CachedPref: 165.66669 - m_ControlHash: 1412526313 - m_PrefName: Preview_InspectorPreview - m_LastInspectedObjectInstanceID: -1 - m_LastVerticalScrollValue: 0 - m_GlobalObjectId: - m_InspectorMode: 0 - m_LockTracker: - m_IsLocked: 0 - m_PreviewWindow: {fileID: 0} ---- !u!114 &21 MonoBehaviour: m_ObjectHideFlags: 52 m_CorrespondingSourceObject: {fileID: 0} diff --git a/UserSettings/Layouts/default-6000.dwlt b/UserSettings/Layouts/default-6000.dwlt index 76ff445c..06ec2a04 100644 --- a/UserSettings/Layouts/default-6000.dwlt +++ b/UserSettings/Layouts/default-6000.dwlt @@ -118,7 +118,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 112} m_MaxSize: {x: 24288, y: 16192} vertical: 1 - controlID: 56 + controlID: 44086 draggingID: 0 --- !u!114 &6 MonoBehaviour: @@ -144,7 +144,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 112} m_MaxSize: {x: 24288, y: 16192} vertical: 0 - controlID: 57 + controlID: 44087 draggingID: 0 --- !u!114 &7 MonoBehaviour: @@ -170,7 +170,7 @@ MonoBehaviour: m_MinSize: {x: 200, y: 112} m_MaxSize: {x: 16192, y: 16192} vertical: 1 - controlID: 58 + controlID: 44088 draggingID: 0 --- !u!114 &8 MonoBehaviour: @@ -196,7 +196,7 @@ MonoBehaviour: m_MinSize: {x: 200, y: 56} m_MaxSize: {x: 16192, y: 8096} vertical: 0 - controlID: 59 + controlID: 44089 draggingID: 0 --- !u!114 &9 MonoBehaviour: @@ -217,8 +217,8 @@ MonoBehaviour: y: 0 width: 271.33334 height: 513.3333 - m_MinSize: {x: 201, y: 226} - m_MaxSize: {x: 4001, y: 4026} + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 15} m_Panes: - {fileID: 15} @@ -300,8 +300,8 @@ MonoBehaviour: y: 0 width: 511.33325 height: 813.3333 - m_MinSize: {x: 276, y: 76} - m_MaxSize: {x: 4001, y: 4026} + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} m_ActualView: {fileID: 22} m_Panes: - {fileID: 22} @@ -332,7 +332,7 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 0 + y: 42.666668 width: 1706.6666 height: 36 m_SerializedDataModeController: @@ -559,10 +559,10 @@ MonoBehaviour: displayed: 1 id: Play Mode Controls index: 0 - contents: '{"m_Layout":4,"m_Collapsed":false,"m_Folded":false,"m_Floating":false,"m_FloatingSnapOffset":{"x":-781.333251953125,"y":-36.0},"m_SnapOffsetDelta":{"x":0.0,"y":0.0},"m_FloatingSnapCorner":3,"m_Size":{"x":0.0,"y":0.0},"m_SizeOverridden":false}' + contents: '{"m_Layout":4,"m_Collapsed":false,"m_Folded":false,"m_Floating":false,"m_FloatingSnapOffset":{"x":-781.3333129882813,"y":-36.0},"m_SnapOffsetDelta":{"x":0.0,"y":0.0},"m_FloatingSnapCorner":3,"m_Size":{"x":0.0,"y":0.0},"m_SizeOverridden":false}' floating: 0 collapsed: 0 - snapOffset: {x: -781.33325, y: -36} + snapOffset: {x: -781.3333, y: -36} snapOffsetDelta: {x: 0, y: 0} snapCorner: 3 layout: 4 @@ -717,7 +717,7 @@ MonoBehaviour: height: 720 m_MinimalGUI: 1 m_defaultScale: 0.64768517 - m_LastWindowPixelSize: {x: 922, y: 487.3333} + m_LastWindowPixelSize: {x: 1383, y: 731} m_ClearInEditMode: 1 m_NoCameraWarning: 1 m_LowResolutionForAspectRatios: 00000000000000000000 @@ -747,7 +747,7 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 24 + y: 78.66667 width: 270.33334 height: 487.3333 m_SerializedDataModeController: @@ -770,23 +770,30 @@ MonoBehaviour: m_LastClickedID: m_Data: 0 m_ExpandedIDs: - - m_Data: -9402 + - m_Data: -108648 + - m_Data: -94366 + - m_Data: -94330 + - m_Data: -87070 + - m_Data: -87048 + - m_Data: -87012 + - m_Data: -49606 + - m_Data: -47774 + - m_Data: -14502 - m_Data: -1338 - - m_Data: 77206 - - m_Data: 77654 - - m_Data: 77968 - - m_Data: 78104 - - m_Data: 78128 - - m_Data: 78326 - - m_Data: 78506 - - m_Data: 78902 - - m_Data: 78930 - - m_Data: 79000 - - m_Data: 79392 + - m_Data: 102028 + - m_Data: 102060 + - m_Data: 103324 + - m_Data: 256180 + - m_Data: 256254 + - m_Data: 256286 + - m_Data: 256456 + - m_Data: 256864 + - m_Data: 257262 + - m_Data: 257494 m_RenameOverlay: m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: + m_Name: DialogCanvas + m_OriginalName: DialogCanvas m_EditFieldRect: serializedVersion: 2 x: 0 @@ -794,10 +801,10 @@ MonoBehaviour: width: 0 height: 0 m_UserData: - m_Data: 0 + m_Data: 257494 m_IsWaitingForDelay: 0 m_IsRenaming: 0 - m_OriginalEventType: 11 + m_OriginalEventType: 0 m_IsRenamingFilename: 0 m_TrimLeadingAndTrailingWhitespace: 0 m_ClientGUIView: {fileID: 9} @@ -830,8 +837,8 @@ MonoBehaviour: m_TextWithWhitespace: "Scene\u200B" m_Pos: serializedVersion: 2 - x: 272.33334 - y: 24 + x: 271.33334 + y: 78.66667 width: 922 height: 487.3333 m_SerializedDataModeController: @@ -1502,9 +1509,9 @@ MonoBehaviour: m_AudioPlay: 0 m_DebugDrawModesUseInteractiveLightBakingData: 0 m_Position: - m_Target: {x: -38.69434, y: 1.4327267, z: 90.70299} + m_Target: {x: 1.7105114, y: -5.044157, z: 89.96282} speed: 2 - m_Value: {x: -38.69434, y: 1.4327267, z: 90.70299} + m_Value: {x: 1.7105114, y: -5.044157, z: 89.96282} m_RenderMode: 0 m_CameraMode: drawMode: 0 @@ -1550,13 +1557,13 @@ MonoBehaviour: m_GridAxis: 1 m_gridOpacity: 0.5 m_Rotation: - m_Target: {x: -0.01900035, y: 0.013590706, z: -0.0003011617, w: -0.9998659} + m_Target: {x: 0.0009989224, y: -0.00040756795, z: -0.000043291617, w: -1.0001386} speed: 2 - m_Value: {x: -0.01900035, y: 0.0135907065, z: -0.00030116172, w: -0.99986595} + m_Value: {x: 0.0009987833, y: -0.0004075112, z: -0.00004328559, w: -0.9999994} m_Size: - m_Target: 51.759678 + m_Target: 55.17186 speed: 2 - m_Value: 51.759678 + m_Value: 55.17186 m_Ortho: m_Target: 0 speed: 2 @@ -1722,7 +1729,7 @@ MonoBehaviour: x: 0 y: 592 width: 1194.3334 - height: 274.00006 + height: 274 m_SerializedDataModeController: m_DataMode: 0 m_PreferredDataMode: 0 @@ -1747,7 +1754,7 @@ MonoBehaviour: m_SkipHidden: 0 m_SearchArea: 1 m_Folders: - - Packages/com.unity.collab-proxy/Editor/UI/Avatar + - Assets/Wwise/MonoBehaviour/Editor/EditorPlatformHelpers/iOS m_Globs: [] m_ProductIds: m_AnyWithAssetOrigin: 0 @@ -1757,65 +1764,20 @@ MonoBehaviour: m_ViewMode: 1 m_StartGridSize: 16 m_LastFolders: - - Packages/com.unity.collab-proxy/Editor/UI/Avatar + - Assets/Wwise/MonoBehaviour/Editor/EditorPlatformHelpers/iOS m_LastFoldersGridSize: 16 m_LastProjectPath: D:\Projects\ichni Official m_LockTracker: m_IsLocked: 0 m_LastLocalAssetsSearchArea: 1 m_FolderTreeState: - scrollPos: {x: 0, y: 1458} + scrollPos: {x: 0, y: 1010} m_SelectedIDs: - - m_Data: 82676 + - m_Data: 100976 m_LastClickedID: - m_Data: 82676 + m_Data: 100976 m_ExpandedIDs: - m_Data: 0 - - m_Data: 82000 - - m_Data: 82002 - - m_Data: 82004 - - m_Data: 82006 - - m_Data: 82008 - - m_Data: 82010 - - m_Data: 82012 - - m_Data: 82014 - - m_Data: 82016 - - m_Data: 82018 - - m_Data: 82020 - - m_Data: 82022 - - m_Data: 82024 - - m_Data: 82026 - - m_Data: 82028 - - m_Data: 82030 - - m_Data: 82032 - - m_Data: 82034 - - m_Data: 82036 - - m_Data: 82038 - - m_Data: 82040 - - m_Data: 82042 - - m_Data: 82044 - - m_Data: 82046 - - m_Data: 82048 - - m_Data: 82050 - - m_Data: 82052 - - m_Data: 82054 - - m_Data: 82056 - - m_Data: 82058 - - m_Data: 82060 - - m_Data: 82062 - - m_Data: 82064 - - m_Data: 82066 - - m_Data: 82068 - - m_Data: 82070 - - m_Data: 82072 - - m_Data: 82074 - - m_Data: 82076 - - m_Data: 82078 - - m_Data: 82080 - - m_Data: 82082 - - m_Data: 82084 - - m_Data: 82086 - - m_Data: 82088 - m_Data: 82090 - m_Data: 82092 - m_Data: 82094 @@ -1832,8 +1794,6 @@ MonoBehaviour: - m_Data: 82116 - m_Data: 82118 - m_Data: 82120 - - m_Data: 82122 - - m_Data: 82124 - m_Data: 82126 - m_Data: 82128 - m_Data: 82130 @@ -1862,6 +1822,57 @@ MonoBehaviour: - m_Data: 82176 - m_Data: 82178 - m_Data: 82180 + - m_Data: 82182 + - m_Data: 82184 + - m_Data: 82186 + - m_Data: 82188 + - m_Data: 82190 + - m_Data: 82192 + - m_Data: 82194 + - m_Data: 82196 + - m_Data: 82198 + - m_Data: 82200 + - m_Data: 82202 + - m_Data: 82204 + - m_Data: 82206 + - m_Data: 82210 + - m_Data: 82212 + - m_Data: 82214 + - m_Data: 82216 + - m_Data: 82218 + - m_Data: 82220 + - m_Data: 82222 + - m_Data: 82224 + - m_Data: 82226 + - m_Data: 82228 + - m_Data: 82230 + - m_Data: 82232 + - m_Data: 82234 + - m_Data: 82236 + - m_Data: 82238 + - m_Data: 82240 + - m_Data: 82242 + - m_Data: 82244 + - m_Data: 82246 + - m_Data: 82248 + - m_Data: 82250 + - m_Data: 82252 + - m_Data: 82254 + - m_Data: 82256 + - m_Data: 82258 + - m_Data: 82260 + - m_Data: 82264 + - m_Data: 82266 + - m_Data: 82268 + - m_Data: 82274 + - m_Data: 82276 + - m_Data: 82796 + - m_Data: 82854 + - m_Data: 82858 + - m_Data: 100978 + - m_Data: 100980 + - m_Data: 125440 + - m_Data: 1000000000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -1894,51 +1905,6 @@ MonoBehaviour: m_Data: 0 m_ExpandedIDs: - m_Data: 0 - - m_Data: 82000 - - m_Data: 82002 - - m_Data: 82004 - - m_Data: 82006 - - m_Data: 82008 - - m_Data: 82010 - - m_Data: 82012 - - m_Data: 82014 - - m_Data: 82016 - - m_Data: 82018 - - m_Data: 82020 - - m_Data: 82022 - - m_Data: 82024 - - m_Data: 82026 - - m_Data: 82028 - - m_Data: 82030 - - m_Data: 82032 - - m_Data: 82034 - - m_Data: 82036 - - m_Data: 82038 - - m_Data: 82040 - - m_Data: 82042 - - m_Data: 82044 - - m_Data: 82046 - - m_Data: 82048 - - m_Data: 82050 - - m_Data: 82052 - - m_Data: 82054 - - m_Data: 82056 - - m_Data: 82058 - - m_Data: 82060 - - m_Data: 82062 - - m_Data: 82064 - - m_Data: 82066 - - m_Data: 82068 - - m_Data: 82070 - - m_Data: 82072 - - m_Data: 82074 - - m_Data: 82076 - - m_Data: 82078 - - m_Data: 82080 - - m_Data: 82082 - - m_Data: 82084 - - m_Data: 82086 - - m_Data: 82088 - m_Data: 82090 - m_Data: 82092 - m_Data: 82094 @@ -1955,8 +1921,6 @@ MonoBehaviour: - m_Data: 82116 - m_Data: 82118 - m_Data: 82120 - - m_Data: 82122 - - m_Data: 82124 - m_Data: 82126 - m_Data: 82128 - m_Data: 82130 @@ -1985,6 +1949,56 @@ MonoBehaviour: - m_Data: 82176 - m_Data: 82178 - m_Data: 82180 + - m_Data: 82182 + - m_Data: 82184 + - m_Data: 82186 + - m_Data: 82188 + - m_Data: 82190 + - m_Data: 82192 + - m_Data: 82194 + - m_Data: 82196 + - m_Data: 82198 + - m_Data: 82200 + - m_Data: 82202 + - m_Data: 82204 + - m_Data: 82206 + - m_Data: 82210 + - m_Data: 82212 + - m_Data: 82214 + - m_Data: 82216 + - m_Data: 82218 + - m_Data: 82220 + - m_Data: 82222 + - m_Data: 82224 + - m_Data: 82226 + - m_Data: 82228 + - m_Data: 82230 + - m_Data: 82232 + - m_Data: 82234 + - m_Data: 82236 + - m_Data: 82238 + - m_Data: 82240 + - m_Data: 82242 + - m_Data: 82244 + - m_Data: 82246 + - m_Data: 82248 + - m_Data: 82250 + - m_Data: 82252 + - m_Data: 82254 + - m_Data: 82256 + - m_Data: 82258 + - m_Data: 82260 + - m_Data: 82264 + - m_Data: 82266 + - m_Data: 82268 + - m_Data: 82274 + - m_Data: 82276 + - m_Data: 82796 + - m_Data: 82858 + - m_Data: 100978 + - m_Data: 100980 + - m_Data: 125440 + - m_Data: 1000000000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -2011,15 +2025,16 @@ MonoBehaviour: m_Icon: {fileID: 0} m_ResourceFile: m_ListAreaState: - m_SelectedInstanceIDs: - - m_Data: 48546 - m_LastClickedInstanceID: 48546 + m_SelectedInstanceIDs: [] + m_LastClickedInstanceID: 0 m_HadKeyboardFocusLastEvent: 1 m_ExpandedInstanceIDs: - m_Data: 0 - m_Data: 80838 - m_Data: 66042 - m_Data: 68026 + - m_Data: 83032 + - m_Data: 74112 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -2072,7 +2087,7 @@ MonoBehaviour: m_Pos: serializedVersion: 2 x: 0 - y: 537.3333 + y: 592 width: 1194.3334 height: 274 m_SerializedDataModeController: @@ -2190,8 +2205,8 @@ MonoBehaviour: m_TextWithWhitespace: "Inspector\u200B" m_Pos: serializedVersion: 2 - x: 1196.3334 - y: 24 + x: 1195.3334 + y: 78.66667 width: 510.33325 height: 787.3333 m_SerializedDataModeController: @@ -2265,7 +2280,7 @@ MonoBehaviour: m_CachedPref: 184.33334 m_ControlHash: 1412526313 m_PrefName: Preview_InspectorPreview - m_LastInspectedObjectInstanceID: 48546 + m_LastInspectedObjectInstanceID: -1 m_LastVerticalScrollValue: 0 m_GlobalObjectId: m_InspectorMode: 0 @@ -2317,7 +2332,7 @@ MonoBehaviour: m_CachedPref: 165.66669 m_ControlHash: 1412526313 m_PrefName: Preview_InspectorPreview - m_LastInspectedObjectInstanceID: 48546 + m_LastInspectedObjectInstanceID: -1 m_LastVerticalScrollValue: 0 m_GlobalObjectId: m_InspectorMode: 0 diff --git a/docs/Plan 剧情系统重构(故事树 + Yarn Spinner 对话,VN 风格).md b/docs/Plan 剧情系统重构(故事树 + Yarn Spinner 对话,VN 风格).md new file mode 100644 index 00000000..6a8797ff --- /dev/null +++ b/docs/Plan 剧情系统重构(故事树 + Yarn Spinner 对话,VN 风格).md @@ -0,0 +1,439 @@ +## Plan: 剧情系统重构(故事树 + Yarn Spinner 对话,VN 风格) + +## Context + +**目标项目:** `ichni Official`(Unity 6000.3,URP,Wwise)。剧情系统为 Official 独有(`IchniCreatorStudio` 无 `Story` 模块),因此本次重构**不涉及双项目同步**,也不涉及 BM 类。 + +**要做什么、为什么:** 现有剧情系统在引入 Yarn Spinner 之前编写,对话处理(`DialogManager` + 自定义文本解析 + DynamicExpresso 解释器 + `DialogUI`)已过时。本计划**从零重构**整个剧情系统:数据、故事树 UI、存档、对话,全部重来,改用 **Yarn Spinner 3.2.1** 驱动对话,并采用**视觉小说(VN)风格**呈现(多角色立绘、打字机、表现类 Yarn 命令),对话文本经 **Unity Localization** 统一管理多语言。 + +**当前系统关键事实(将被替换):** + +- `StoryData`(`SerializedScriptableObject`)按章节定义 `DialogBlockData`/`SongBlockData`/`TutorialBlockData`/`initialBlocks`(`blockName`/`blockID`/`blockSize`/`blockPosition`/`nextBlocks`)。 +- `Storyline`(`MonoBehaviour`)从 `StoryData` 或 ES3 存档构建节点图,管理 `storyBlocks`/`connectors`,按章节存取;`StoryBlockUIBase` → `DialogBlockUI`/`SongBlockUI`/`TutorialBlockUI`,点击判断 `StoryBlockState { Locked, Current, Completed }`。 +- `DialogManager`:自定义解析器(`[段落]{函数}`、`speaker:句子`、`$Choice(...)`、`$Condition{...}`、内联 `{@表达式}`),从 `Resources/Story/[chapter]/Dialogs/` 加载 `TextAsset`。 +- `StoryInterpreters`(DynamicExpresso):`SetVariable`/`GetVariable`/`GenerateDialogBlock`/`GenerateSongBlock`/`SetUnlockKey`——不仅分支对话,还动态生成故事树节点、解锁歌曲。 +- `DialogUI`(`DialogUIPage`/`DialogContentFrame`/`DialogTextUI`/`ChoiceGroupUI`/`ChoiceButtonUI`):历史记录式(scrollback)呈现,点击推进。 +- 存档:`GameSaveManager.StorySaveModule`(block 存档、`storyVariables`、`selectedChoices`),ES3 持久化到 `persistentDataPath/StorySaves/[Chapter].json`。 +- 剧情系统实例位于 `MenuScene.unity`(`StoryManager`、`DialogManager` 均在其中)。 + +**Yarn Spinner 3.2.1 关键 API(已核实包源码):** + +- `DialogueRunner`:`StartDialogue(nodeName)`;`UnityEvent onDialogueStart` / `onDialogueComplete`;`AddCommandHandler(name, Delegate)`;`dialogueViews`(`DialoguePresenterBase` 列表)。异步架构(`YarnTask`)。 +- `DialoguePresenterBase`(`Runtime/Views/DialoguePresenterBase.cs`):override `YarnTask RunLineAsync(LocalizedLine, LineCancellationToken)`、`YarnTask RunOptionsAsync(DialogueOption[], LineCancellationToken)`、`YarnTask OnDialogueStartedAsync()`、`YarnTask OnDialogueCompleteAsync()`;可选 `OnNodeEnter/OnNodeExit`。 +- `VariableStorageBehaviour`(`Runtime/Storage/VariableStorageBehaviour.cs`):自定义变量存储基类。 +- `UnityLocalisedLineProvider`(`Runtime/LineProviders/UnityLocalisedLineProvider.cs`,`.Installed.cs` 分部类需安装 `com.unity.localization` 才编译):桥接 Unity Localization String Table。 +- 表现命令用 `[YarnCommand("name")]` 静态/实例方法或 `AddCommandHandler` 注册。 + +**设计决策(已与你确认):** + +1. **全部从零重构**(数据、UI、存档)。 +2. **VN 风格呈现** + 多角色立绘 + 表现类 Yarn 命令(如立绘跳动/移动)。 +3. **混合式解锁**:故事树默认在 `StoryData` 静态定义;同时允许 Yarn 命令在特殊情况下插入/解锁 block。 +4. **完整表现命令集** + 支持多立绘的 VN Presenter;立绘渲染**做抽象**(当前 Sprite,未来可换 Live2D/Spine)。 +5. **对话本地化桥接 Unity Localization**(弃用 I2),由 Unity Localization 统一管理对话与 UI 文本。 +6. **仅优先文本块(TextBlock)**;Song/Tutorial block 作为占位符。 + +**新目录结构(`/ichni Official/Assets/Scripts/Story/`):** + +``` +Story/ +├── Data/ # 数据与 ScriptableObject +│ ├── StoryData.cs # 章节故事树定义(重建) +│ ├── StoryBlockDefinition.cs # block 定义基类 + Text/Song/Tutorial + 解锁条件 +│ ├── CharacterData.cs # 单个角色定义(id/显示名Key/立绘/情绪) +│ └── CharacterRegistry.cs # 角色注册表(id -> CharacterData) +├── Tree/ # 故事树运行时 + UI +│ ├── StoryManager.cs # 协调器(重建) +│ ├── StoryTreeController.cs # 构建树/状态/解锁重算/存取(原 Storyline) +│ ├── StoryBlockView.cs # block 视图基类(原 StoryBlockUIBase) +│ ├── TextBlockView.cs # 文本块(原 DialogBlockUI) +│ ├── SongBlockView.cs # 占位 +│ ├── TutorialBlockView.cs # 占位 +│ └── BlockConnectorView.cs # 连接线(原 BlockConnectorUI) +├── Dialogue/ # Yarn 集成 +│ ├── StoryDialogueController.cs # block → DialogueRunner 桥接 +│ ├── VNDialoguePresenter.cs # DialoguePresenterBase 实现(VN) +│ ├── VNPortraitStage.cs # 立绘舞台(多槽位) +│ ├── IPortraitRenderer.cs # 立绘渲染抽象接口 +│ ├── SpritePortraitRenderer.cs # Sprite 实现 +│ ├── StoryVariableStorage.cs # VariableStorageBehaviour 桥接存档 +│ ├── StoryPresentationCommands.cs # [YarnCommand] 表现命令 +│ ├── StoryTreeCommands.cs # [YarnCommand] 解锁/生成 block/解锁歌曲 +│ └── StoryFunctions.cs # [YarnFunction] 条件辅助 +├── Save/ +│ └── StorySave.cs # 存档 DTO(重建) +└── UI/ + └── StoryUIPage.cs # 故事树页面(适配保留) +``` + +参考页面:@ichni-Project-Architecture-Report + +------ + +## Modifications + +### A. Scripts + +#### A1. `Story/Data/StoryBlockDefinition.cs`(新建) + +- **描述:** 章节故事树中单个 block 的纯数据定义 + 解锁条件。路径 `/ichni Official/Assets/Scripts/Story/Data/StoryBlockDefinition.cs`。 +- **遵循模式:** 参考旧 `StoryData.cs` 的 `[Serializable]`/`[InlineProperty]`/`[FoldoutGroup("$blockName")]` Odin 风格。 +- **内容:** + - `enum StoryBlockType { Text, Song, Tutorial }`。 + - `[Serializable] class StoryBlockDefinition`:`string blockId`(唯一,替代旧 `blockName`/`blockID` 二元)、`StoryBlockType type`、`Vector2 position`、`Vector2 size`、`StoryBlockState initialState`、`List nextBlockIds`、`UnlockCondition unlockCondition`。 + - 类型专属数据(用 Odin `[ShowIf]` 按 `type` 显示):`string yarnNodeName` + `string titleKey`(Text);`string songName`(Song 占位);`string tutorialName`(Tutorial 占位)。 + - `[Serializable] class UnlockCondition`:`List requiredCompletedBlockIds`;`List variableConditions`;方法 `bool IsSatisfied(Func getVar, Func isCompleted)`。 + - `[Serializable] class VariableCondition`:`string variableName`、`enum Comparison { Equal, NotEqual, Greater, GreaterOrEqual, Less, LessOrEqual }`、`int value`;`bool Evaluate(int actual)`。 +- **公共 API:** `bool UnlockCondition.IsSatisfied(...)`、`bool VariableCondition.Evaluate(int)`。 + +#### A2. `Story/Data/StoryData.cs`(重建,覆盖现有) + +- **描述:** 章节故事树 ScriptableObject。路径 `/ichni Official/Assets/Scripts/Story/Data/StoryData.cs`。 +- **内容:** `[CreateAssetMenu(menuName="Ichni/Story/StoryData")] class StoryData : SerializedScriptableObject`:`string chapterIndex`、`List blocks`、`YarnProject yarnProject`(该章节编译产物引用)、`AssetReference/string` 本地化 String Table 集合名(供 Presenter/Provider 使用)。 +- **公共 API:** `StoryBlockDefinition GetBlock(string blockId)`、`IEnumerable GetInitialBlocks()`、`IEnumerable GetNextBlocks(string blockId)`。 +- **依赖:** A1、Yarn `YarnProject`。 + +#### A3. `Story/Data/CharacterData.cs` + `CharacterRegistry.cs`(新建) + +- **描述:** 角色立绘/情绪注册表(VN Presenter 需要)。路径 `/ichni Official/Assets/Scripts/Story/Data/`。 +- `**CharacterData`(`[Serializable]`):** `string characterId`(与 Yarn 行的 speaker 名对应)、`string displayNameKey`(Unity Localization 键)、`PortraitStyle portraitStyle`(`enum { Sprite, Live2D, Spine }` 预留)、`SerializedDictionary emotionSprites`(Sprite 方案)、`GameObject dynamicPortraitPrefab`(Live2D/Spine 预留,实现 `IPortraitRenderer`)。 +- `**CharacterRegistry`(`[CreateAssetMenu(menuName="Ichni/Story/CharacterRegistry")] SerializedScriptableObject`):** `Dictionary characters`;`bool TryGet(string id, out CharacterData data)`。 +- **说明:** 立绘表现不直接耦合 Sprite,交由 `IPortraitRenderer`(见 A9)读取 `CharacterData` 决定渲染方式,未来接入 Live2D/Spine 只需新增 renderer 实现。 + +#### A4. `Story/Save/StorySave.cs`(重建,覆盖现有) + +- **描述:** 存档 DTO。路径 `/ichni Official/Assets/Scripts/Story/Save/StorySave.cs`。 +- **内容:** `[Serializable] class StoryBlockSave { string blockId; Vector2 position; StoryBlockState state; List nextBlockIds; }`(合并旧的按类型拆分的多个 Save 类为单一带 `blockId` 的 DTO;类型信息从 `StoryData` 反查,存档只存运行态);`[Serializable] class ChapterStorySave { string chapterIndex; List blocks; }`。 +- **依赖:** A1(`StoryBlockState`、block 类型引用)。 + +#### A5. `Story/Tree/StoryManager.cs`(重建,覆盖现有) + +- **描述:** 剧情系统协调器(单例)。路径 `/ichni Official/Assets/Scripts/Story/Tree/StoryManager.cs`。 +- **遵循模式:** 参考现有 `StoryManager` 单例 + `[Button] ClearAllStorySave()`;建议继承 `SLSUtilities.General.Singleton`(项目已有单例基类)。 +- **内容:** 持有 `StoryTreeController treeController`、`StoryDialogueController dialogueController`、`StoryUIPage storyUIPage`、`CharacterRegistry characterRegistry`、`Dictionary storyDatas`。保留 `enum StoryBlockState { Locked, Current, Completed }`(移到此文件或独立文件)。保留 `ClearAllStorySave()`(改为调用新 `StorySaveModule` 接口)。 +- **公共 API:** `void OpenChapter(string chapterIndex)`(构建树)、`StoryData GetStoryData(string chapterIndex)`。 + +#### A6. `Story/Tree/StoryTreeController.cs`(重建自 `Storyline.cs`) + +- **描述:** 从 `StoryData`/存档构建 block 视图与连接线,管理状态、解锁重算与存取。路径 `/ichni Official/Assets/Scripts/Story/Tree/StoryTreeController.cs`。 +- **遵循模式:** 参考旧 `Storyline.cs` 的 `SetUpStoryline`/`Generate*Block`/`GenerateConnector`/`SaveStoryline`/`ResetStory` 结构与 `ScrollRect content` 布局逻辑。 +- **公共 API:** + - `void BuildChapter(string chapterIndex)`:优先 `LoadChapter`,无存档则 `ResetToInitial`。 + - `StoryBlockView GenerateBlock(StoryBlockDefinition def)` / `void GenerateConnector(string fromBlockId, string toBlockId)`。 + - `void OnBlockCompleted(string blockId)`:设该 block `Completed`,遍历所有 `Locked` block 用 `UnlockCondition.IsSatisfied(...)` 重算,满足者置 `Current`(并按需生成尚未显示的后继 block/连接线),刷新连接线,保存。 + - `void UnlockBlock(string blockId)` / `void InsertBlock(StoryBlockDefinition def, string fromBlockId)`:供 Yarn 树命令(A11)调用,实现"混合式"动态解锁/插入。 + - `void SaveChapter()` / `void LoadChapter(string chapterIndex)` / `void ResetToInitial(string chapterIndex)`。 + - `StoryBlockView currentBlock { get; }`、`IReadOnlyList blocks`。 +- **解锁判定:** `IsSatisfied` 的 `getVar` 委托指向 `StoryVariableStorage`(A8),`isCompleted` 指向已完成 block 集合。 +- **依赖:** A1、A2、A4、A8、`GameSaveManager.StorySaveModule`(重建后,见 A13)、`ChapterSelectionManager`。 + +#### A7. `Story/Tree/StoryBlockView.cs` + `TextBlockView.cs` + `SongBlockView.cs` + `TutorialBlockView.cs` + `BlockConnectorView.cs`(重建自 Blocks/*) + +- `**StoryBlockView`(抽象,`MonoBehaviour`):** `string blockId`、`StoryBlockState state`、`RectTransform inPort/outPort`、`Button button`;`virtual void ApplyState(StoryBlockState)`(更新视觉:锁定/当前/已完成外观);`abstract StoryBlockSave GetSave()`;`abstract void OnClicked()`。 +- `**TextBlockView`:** 覆盖 `OnClicked()`:`state == Locked` → 忽略;否则 `StoryManager.instance.dialogueController.PlayBlock(this)`(传 `yarnNodeName`)。参考旧 `DialogBlockUI` 的 `button.onClick` + 状态判断。 +- `**SongBlockView` / `TutorialBlockView`:** 占位实现——显示标题/状态,`OnClicked()` 暂仅 `Debug.Log`(保留旧 `SongBlockUI`/`TutorialBlockUI` 视觉字段,交互逻辑注释或占位)。 +- `**BlockConnectorView`:** 沿用旧 `BlockConnectorUI`,用 `UILineRenderer` 在 `outPort`→`inPort` 画曲线;`SetCurve()`。 +- **依赖:** A6、A9(对话触发)。 + +#### A8. `Story/Dialogue/StoryVariableStorage.cs`(新建) + +- **描述:** 自定义 Yarn 变量存储,桥接 `GameSaveManager.StorySaveModule.storyVariables`,ES3 持久化。路径 `/ichni Official/Assets/Scripts/Story/Dialogue/StoryVariableStorage.cs`。 +- **遵循模式:** 继承 `Yarn.Unity.VariableStorageBehaviour`,实现其抽象/虚方法(`SetValue`/`TryGetValue`/`Clear`/`Contains` 等——**实现步骤时先 `printAsset` 或 view `VariableStorageBehaviour.cs` 核对当前签名**)。 +- **要点:** Yarn 变量以 `$` 前缀命名;本存储把布尔/数值/字符串映射到 `storyVariables`(现为 `Dictionary`,需扩展为支持多类型,见 A13)。变量读写触发 `StorySaveModule` 持久化。 +- **公共 API(供 A6 解锁判定复用):** `int GetIntVariable(string name)`、`bool HasVariable(string name)`。 +- **依赖:** A13(`StorySaveModule`)。 + +#### A9. `Story/Dialogue/IPortraitRenderer.cs` + `SpritePortraitRenderer.cs`(新建) + +- **描述:** 立绘渲染抽象 + Sprite 实现。路径 `/ichni Official/Assets/Scripts/Story/Dialogue/`。 +- `**IPortraitRenderer`:** `void Show(CharacterData character, string emotion)`、`void Hide()`、`void SetEmotion(string emotion)`、`void MoveTo(Vector2 anchoredPos, float duration)`、`void PlayEffect(string effect, float intensity)`(如 "jump"/"shake"/"nod")、`void SetActiveVisual(bool speaking)`(说话者高亮/变暗)。 +- `**SpritePortraitRenderer`(`MonoBehaviour, IPortraitRenderer`):** 持有 `UnityEngine.UI.Image`;`Show` 从 `CharacterData.emotionSprites` 取 Sprite;`MoveTo`/`PlayEffect` 用 DOTween(项目已含 DOTweenPro)实现跳动/移动/晃动。 +- **说明:** 未来 Live2D/Spine 只需新增实现 `IPortraitRenderer` 的组件,`CharacterData.portraitStyle`/`dynamicPortraitPrefab` 决定实例化哪个 renderer。 + +#### A10. `Story/Dialogue/VNPortraitStage.cs`(新建) + +- **描述:** 管理多立绘槽位(如 Left/Center/Right),按 characterId 分配/复用 renderer。路径 `/ichni Official/Assets/Scripts/Story/Dialogue/VNPortraitStage.cs`。 +- **公共 API:** `void ShowPortrait(string characterId, string slot, string emotion)`、`void HidePortrait(string characterId)`、`void HideAll()`、`void MovePortrait(string characterId, string slot, float duration)`、`void PlayEffect(string characterId, string effect, float intensity)`、`void HighlightSpeaker(string characterId)`。 +- **内部:** `Dictionary activePortraits`;依据 `CharacterData.portraitStyle` 实例化对应 renderer 到槽位。 +- **依赖:** A3、A9。 + +#### A11. `Story/Dialogue/StoryPresentationCommands.cs`(新建) + +- **描述:** 表现类 Yarn 命令集合(`[YarnCommand]`)。路径 `/ichni Official/Assets/Scripts/Story/Dialogue/StoryPresentationCommands.cs`。 +- **命令集(完整表现集):** 均委托到 `VNPortraitStage`/`VNDialoguePresenter`: + - `<>` / `<>` / `<>` + - `<>` / `<>` / `<>` / `<>` + - `<>`(背景切换) + - `<>`(Yarn 内置也可,视需要) +- **注册方式:** 实例方法用 `[YarnCommand("show_portrait")]` 挂到与 `DialogueRunner` 同场景的组件上(Yarn 自动发现),或在 `StoryDialogueController.Awake` 用 `dialogueRunner.AddCommandHandler(...)` 显式注册。**实现步骤时先核对 `DialogueRunner.ActionRegistration.cs` 的 `AddCommandHandler` 重载与 `[YarnCommand]` 自动注册要求。** +- **依赖:** A10、A12。 + +#### A12. `Story/Dialogue/StoryTreeCommands.cs`(新建) + +- **描述:** 影响故事树/解锁的 Yarn 命令(替代旧 `StoryInterpreters` 的 `GenerateDialogBlock`/`GenerateSongBlock`/`SetUnlockKey`)。路径 `/ichni Official/Assets/Scripts/Story/Dialogue/StoryTreeCommands.cs`。 +- **命令集:** + - `<>` → `StoryTreeController.UnlockBlock` + - `<>` → 从当前 block 生成后继("混合式"动态插入)→ `StoryTreeController.InsertBlock` + - `<>` → 复用旧 `SetUnlockKey` 逻辑:写入 `SongSaveModule.storyUnlockKeys`,并把"解锁提示消息"入队到对话结束后执行(见 A14 结束回调)。 +- **依赖:** A6、A14、`GameSaveManager.SongSaveModule`、`ChapterSelectionManager`。 + +#### A13. `Scripts/Saving/GameSaveManager.cs` → `StorySaveModule`(重建剧情存档模块) + +- **描述:** 重建 `StorySaveModule`,适配新 DTO 与多类型变量。路径 `/ichni Official/Assets/Scripts/Saving/GameSaveManager.cs`(`StorySaveModule` 分部/内嵌类)。 +- **改动:** + - block 存档改用 `ChapterStorySave`/`StoryBlockSave`(A4),ES3 存 `persistentDataPath/StorySaves/[Chapter].json`(沿用旧路径约定)。 + - `storyVariables` 扩展为支持 Yarn 多类型(float/bool/string)——建议 `Dictionary` 序列化 + 类型标记,或三个分字典;供 `StoryVariableStorage`(A8)读写。 + - 保留 `selectedChoices` 语义(Yarn 选项选择记录),如需回放已完成对话可保留(见"实现说明")。 + - 保留 `SongSaveModule.storyUnlockKeys` 相关接口(A12 依赖)。 + - `ClearAllStoryline()` / `ClearStoryKeys()` 接口保留,供 `StoryManager.ClearAllStorySave` 调用。 +- **注意:** `GameSaveManager` 含其它模块(`SongSaveModule`),改动**仅限剧情相关字段**,保持其余不变。**实现前先完整 view `GameSaveManager.cs` 的 `StorySaveModule` 现状。** + +#### A14. `Story/Dialogue/StoryDialogueController.cs`(新建) + +- **描述:** block → `DialogueRunner` 的桥接与生命周期协调。路径 `/ichni Official/Assets/Scripts/Story/Dialogue/StoryDialogueController.cs`。 +- **公共 API:** + - `void PlayBlock(TextBlockView block)`:记录当前 block 上下文,`storyUIPage` 淡出/对话页淡入,`dialogueRunner.StartDialogue(block.yarnNodeName)`。 + - `List dialogueEndActions`(保留旧 `dialogEndActions` 语义,供 A12 `unlock_song` 入队解锁提示)。 +- **事件接线:** 订阅 `dialogueRunner.onDialogueComplete`:若当前 block 为 `Current` → `treeController.OnBlockCompleted(blockId)`;清空/执行 `dialogueEndActions`(弹解锁提示);`treeController.SaveChapter()`;对话页淡出、故事树页淡入。参考旧 `DialogManager.PlayDialog` 完成分支(旧 L138-152)。 +- **依赖:** Yarn `DialogueRunner`、A6、A7、A12、`StoryUIPage`。 + +#### A15. `Story/Dialogue/VNDialoguePresenter.cs`(新建) + +- **描述:** VN 风格对话呈现器,继承 `Yarn.Unity.DialoguePresenterBase`。路径 `/ichni Official/Assets/Scripts/Story/Dialogue/VNDialoguePresenter.cs`。 +- **override:** + - `OnDialogueStartedAsync()`:显示对话面板(DOTween 淡入)、`portraitStage` 就绪。 + - `RunLineAsync(LocalizedLine line, LineCancellationToken token)`:从 `line.CharacterName` 查 `CharacterRegistry` 取显示名(Unity Localization),高亮说话者立绘(`portraitStage.HighlightSpeaker`),打字机逐字显示 `line.TextWithoutCharacterName`;等待玩家点击推进(点击→`token` hurry/advance)。 + - `RunOptionsAsync(DialogueOption[], LineCancellationToken)`:实例化选项按钮面板,等待选择,返回选中项;记录到 `selectedChoices`。 + - `OnDialogueCompleteAsync()`:对话面板淡出。 +- **要点:** 全程 `YarnTask` 异步;打字机需响应 `LineCancellationToken`(点击加速/跳过)。**实现步骤时先 view `DialoguePresenterBase.cs` 与 `LocalizedLine`/`DialogueOption` 类型核对属性名(`CharacterName`/`TextWithoutCharacterName`/`Text`)。** +- **依赖:** A3、A10、Unity Localization。 + +#### A16. `Story/Dialogue/StoryFunctions.cs`(新建,可选) + +- **描述:** `[YarnFunction]` 辅助,让 `.yarn` 的 `<>` 能读取剧情状态。路径 `/ichni Official/Assets/Scripts/Story/Dialogue/StoryFunctions.cs`。 +- **示例:** `[YarnFunction("is_completed")] static bool IsCompleted(string blockId)`、`[YarnFunction("story_var")] static int StoryVar(string name)`。 +- **说明:** 多数条件可直接用 Yarn 变量(`$var`)+ `StoryVariableStorage` 完成;此文件仅在需要读取"block 完成状态"等非变量信息时补充。 + +#### A17. 删除/弃用旧脚本 + +- **删除:** `Story/Dialog/DialogManager.cs`、`Story/Dialog/DialogModule.cs`、`Story/Dialog/StoryInterpreters.cs`;`Story/StoryUI/DialogUI/*`(`DialogUIPage`/`DialogContentFrame`/`DialogTextUI`/`ChoiceGroupUI`/`ChoiceButtonUI`);`Story/StoryUI/Blocks/*` 旧类(迁移到 A7 后删除);旧 `Story/StoryData/StoryData.cs`、旧 `Story/Dialog/StoryManager.cs`、旧 `Story/StoryUI/Storyline.cs`(被 A2/A5/A6 取代)。 +- **注意:** DynamicExpresso 若无其它使用者,可保留包(供将来),但剧情不再依赖它。删除前 `grep` 确认无外部引用(尤其 `ChapterSelectionManager`/`Menu` 对 `DialogManager` 的调用点,需改为 `StoryDialogueController`)。 + +------ + +### B. Text Files(`.yarn` 脚本) + +#### B1. 示例章节 Yarn 脚本 + +- **描述:** 每个 TextBlock 对应一个 Yarn 节点。路径示例 `/ichni Official/Assets/Story/Chapters/Chapter1/Chapter1.yarn`(新目录,脱离旧 `Resources/Story/.../Dialogs`)。 +- **内容:** 为若干 TextBlock 各写一个 `title:` 节点,含 speaker 行、`<>`/`<>` 等表现命令、`->` 选项、`<>` 条件分支、`<>`、必要处 `<>`/`<>`。用于验证管线。 +- **依赖:** A11/A12 命令、A8 变量。 + +------ + +### C. Unity Assets(ScriptableObject / YarnProject) + +#### C1. `Chapter1` YarnProject + +- **名称:** `/ichni Official/Assets/Story/Chapters/Chapter1/Chapter1.yarnproject`。 +- **描述:** 编译 B1 的 `.yarn`,配置 **Localisation = Unity**(使用 `UnityLocalisedLineProvider`),关联 Unity Localization String Table Collection。 +- **Bezi Actions:** 无直接创建 YarnProject 的 Action → **手动创建**(见 E2)。 + +#### C2. `StoryData`(Chapter1)资产 + +- **名称:** `/ichni Official/Assets/Story/Chapters/Chapter1/Chapter1_StoryData.asset`。 +- **描述:** 定义 Chapter1 故事树 block、连接、初始状态、`yarnNodeName`、解锁条件,引用 C1 YarnProject。 +- **Bezi Actions:** `createOrUpdateScriptableObject`(`scriptableObjectType: "Ichni.Story.StoryData"`)。 +- **依赖:** A2、C1。 + +#### C3. `CharacterRegistry` + 角色资产 + +- **名称:** `/ichni Official/Assets/Story/Characters/CharacterRegistry.asset`。 +- **描述:** 登记若干测试角色(characterId、displayNameKey、emotion→Sprite)。 +- **Bezi Actions:** `createOrUpdateScriptableObject`(`scriptableObjectType: "Ichni.Story.CharacterRegistry"`)。 +- **依赖:** A3。 + +------ + +### D. Unity Actions(场景 / 预制体 / UI 接线,均在 `MenuScene.unity`) + +#### D1. Yarn 运行时对象 + +- **描述:** 在剧情 UI 层新建 `StoryDialogueRoot` GameObject,挂 `DialogueRunner` + `UnityLocalisedLineProvider` + `StoryVariableStorage` + `StoryDialogueController` + `StoryPresentationCommands` + `StoryTreeCommands`;`DialogueRunner.yarnProject` 指向 C1,`dialogueViews` 加入 D2 的 `VNDialoguePresenter`,`variableStorage` 指向 `StoryVariableStorage`,`lineProvider` 指向 `UnityLocalisedLineProvider`。 +- **Bezi Actions:** `createGameObject`、`addOrUpdateComponent`(逐个组件;`DialogueRunner` 字段引用用 `UnityObjectReference`)。 +- **依赖:** A8/A11/A12/A14/A15、C1。 + +#### D2. VN 对话 UI + +- **描述:** 构建 VN 对话面板:全屏遮罩/背景 `Image`、立绘舞台(Left/Center/Right 槽位 `Image`)、对话框(说话者名 `TextMeshProUGUI` + 正文 `TextMeshProUGUI` + 继续指示)、选项面板(竖直布局,运行时实例化选项按钮)。挂 `VNDialoguePresenter`、`VNPortraitStage`,槽位挂 `SpritePortraitRenderer`。 +- **Bezi Actions:** `createGameObject`、`addOrUpdateComponent`(`UnityEngine.UI.Image`/`TMPro.TextMeshProUGUI`/`UnityEngine.UI.Button`)、`setRectTransformLayout`(锚点/拉伸)。 +- **依赖:** A9/A10/A15。 + +#### D3. 故事树 UI 与 block 预制体 + +- **描述:** 构建/复用故事树滚动视图(`ScrollRect content`);创建 `TextBlockView`/`SongBlockView`/`TutorialBlockView`/`BlockConnectorView` 预制体(含 `Button`、`inPort`/`outPort`、状态视觉),供 `StoryTreeController` 实例化。将 `StoryManager`/`StoryTreeController`/`StoryUIPage` 组件接线到既有剧情 UI 对象。 +- **Bezi Actions:** `createGameObject`、`addOrUpdateComponent`、`setRectTransformLayout`、`createPrefab`(block 预制体)。 +- **依赖:** A5/A6/A7、C2/C3。 + +------ + +### E. Manual User Actions + +#### E1. 安装 Unity Localization,规划弃用 I2 + +- **描述:** 通过 Package Manager 安装 `com.unity.localization`(使 `UnityLocalisedLineProvider.Installed.cs` 生效);创建 Locale 与 String Table Collection(对话文本 + UI 文本)。I2 的实际移除可后置,避免一次性破坏现有 UI 文本;本计划仅让**剧情对话**走 Unity Localization。 + +#### E2. 创建并配置 YarnProject + +- **描述:** 在 `Assets/Story/Chapters/Chapter1/` 右键创建 YarnProject,纳入 B1 的 `.yarn`;Inspector 中设 Localisation 为 Unity 并关联 String Table Collection;导入生成基础语言行。(Bezi Actions 无 YarnProject 创建能力。) + +#### E3. 核对 Yarn 命令/呈现器 API 签名 + +- **描述:** 实现 A8/A11/A15 前,在 Editor 中确认 `VariableStorageBehaviour`、`DialoguePresenterBase`、`LocalizedLine`、`DialogueOption`、`DialogueRunner.AddCommandHandler`/`[YarnCommand]` 的确切签名(版本 3.2.1),避免 API 漂移导致编译错误。 + +------ + +## Key Patterns to Reuse + +- **Source:** `/ichni Official/Assets/Scripts/Story/StoryUI/Storyline.cs` — **Pattern:** 故事树构建、连接线生成、按章节 ES3 存取、`ScrollRect` 布局,迁移到 `StoryTreeController`。 +- **Source:** `/ichni Official/Assets/Scripts/Story/Dialog/DialogManager.cs`(L138-152 完成分支、`dialogEndActions`)— **Pattern:** 对话完成 → 置 block `Completed` → 执行结束回调 → 存档,迁移到 `StoryDialogueController.onDialogueComplete`。 +- **Source:** `/ichni Official/Assets/Scripts/Story/Dialog/StoryInterpreters.cs` — **Pattern:** `SetUnlockKey` 的歌曲解锁 + 消息入队逻辑,迁移到 `StoryTreeCommands.unlock_song`。 +- **Source:** `SLSUtilities/General/Singleton` — **Pattern:** `StoryManager` 单例,替换手写 `instance = this`。 +- **Source:** 旧 `StoryData.cs` 的 Odin `[FoldoutGroup("$blockName")]`/`[InlineProperty]` — **Pattern:** 新 `StoryBlockDefinition` 的 Inspector 组织。 +- **Source:** `DialogCharacter`(旧 `DialogModule.cs`:`name`/`title`/`emotions`)— **Pattern:** 演进为 `CharacterData`(`characterId`/`displayNameKey`/`emotionSprites`)。 + +------ + +## Implementation Notes + +- **Yarn 3.x 异步:** Presenter 全部 `YarnTask`;打字机与"点击推进"须响应 `LineCancellationToken`(hurry-up / cancel),否则点击无法加速或跳过。 +- **命令注册:** `[YarnCommand]` 自动发现要求承载组件与 `DialogueRunner` 处于可解析范围;若自动发现不稳定,改用 `DialogueRunner.AddCommandHandler` 显式注册(在 `StoryDialogueController.Awake`)。 +- **变量类型:** Yarn 变量支持 number/bool/string;旧 `storyVariables` 仅 `int`,须扩展多类型存储(A13),否则 `StoryVariableStorage` 无法承载布尔/字符串。 +- **本地化桥接:** speaker 名解析来自 Yarn 行的 `CharacterName`;显示名走 Unity Localization(`CharacterData.displayNameKey`),正文走 `UnityLocalisedLineProvider` 关联的 String Table。 +- **立绘抽象:** 不要在 Presenter/命令中直接写 `Image`;一律经 `IPortraitRenderer`,为 Live2D/Spine 预留。DOTween 已在项目中,用于跳动/移动/晃动。 +- **混合式解锁:** 静态解锁在 `OnBlockCompleted` 重算 `UnlockCondition`;动态解锁由 `<>`/`<>` 命令在对话中触发——两者都最终调用 `StoryTreeController`,保证存档一致。 +- **存档兼容:** 这是破坏性重构,旧 `StorySaves/*.json`/`Choices.json` 结构不兼容;建议在 `StorySaveModule` 加版本号或提供一次性清档(`ClearAllStorySave` 已存在)。 +- **场景范围:** 所有场景接线在 `MenuScene.unity`;剧情为 Official 独有,无需同步到 `IchniCreatorStudio`。 +- **可运行性分阶段:** 每阶段完成后项目应可编译、可进入剧情页。先落数据/树(占位对话),再接 Yarn 管线,再做 VN 呈现与命令,最后清理旧系统。 + +------ + +## TODO + +**阶段 1 — 数据与故事树骨架(可编译、可显示占位树)** + +- + + 新建 `StoryBlockDefinition.cs`(block 定义 + `UnlockCondition`/`VariableCondition` + `StoryBlockType`) + +- + + 重建 `StoryData.cs`(章节 block 列表 + `YarnProject` 引用 + 查询 API) + +- + + 新建 `CharacterData.cs` + `CharacterRegistry.cs`(含 `portraitStyle` 预留) + +- + + 重建 `StorySave.cs`(`StoryBlockSave`/`BlockConnectorSave`/`ChapterStorySave`/`StoryVariablesSave`) + +- + + 重建 `StoryManager.cs`(单例协调器 + `StoryBlockState`) + +- + + 重建 `StoryTreeController.cs`(构建/解锁重算/存取,从 `Storyline` 迁移) + +- + + 重建 `StoryBlockView` + `TextBlockView`/`SongBlockView`/`TutorialBlockView`/`BlockConnectorView` + +- + + 用 `createOrUpdateScriptableObject` 生成 `Chapter1_StoryData.asset` 与 `CharacterRegistry.asset`(用户已手动创建三个 SO 资产) + +- + + 用 Bezi Actions 搭建故事树滚动视图与 block 预制体,接线 `StoryManager`/`StoryTreeController`/`StoryUIPage`(改为用户手动制作,见阶段总结的手动步骤) + +- + + (提前合并原阶段 5 清理)删除旧剧情/对话脚本网:`DialogManager`/`DialogModule`/`StoryInterpreters`/`Storyline`/旧 `StoryManager`/旧 Block UIs/`DialogUI/*`/旧 `StoryData`/旧 `StorySave`;`MenuManager` 移除失效 `dialogUIPage` 字段 + +**阶段 2 — Yarn 对话管线(点击文本块可跑通 Yarn 节点)** + +- + + 安装 `com.unity.localization` 并创建 Locale / String Table Collection(手动) + +- + + 手动创建 `Chapter0.yarnproject` 并设为 Unity Localisation,编写示例 `Chapter0.yarn` + +- + + 新建 `StoryVariableStorage.cs`(`VariableStorageBehaviour` 桥接存档,多类型变量) + +- + + 重建 `GameSaveManager.StorySaveModule`(新 DTO + 多类型 `storyVariables`,保留 `SongSaveModule` 不变)——已在阶段 1 StorySave 步骤中一并完成:树+选项按章节(单 key 容器),变量全局(float/string/bool 三类型,匹配 Yarn 契约) + +- + + 新建 `StoryDialogueController.cs`(`PlayBlock` + `onDialogueComplete` → 置 `Completed`/重算解锁/存档/结束回调) + +- + + 在 `MenuScene` 搭建 `StoryDialogueRoot`(`DialogueRunner` + `StoryVariableStorage` + 控制器),接线到 `Chapter0.yarnproject`。注:项目未安装 `com.unity.localization`,`Chapter0.yarnproject` 使用 Yarn 内置本地化;`DialogueRunner` 在无 lineProvider 时会自动创建 `BuiltinLocalisedLineProvider`,故阶段 2 无需接 Unity Localization。呈现器(dialoguePresenters)留空,待阶段 3 接入 VN 呈现器。 + +**阶段 3 — VN 呈现与立绘** + +- + + 新建 `VNDialoguePresenter.cs`(`DialoguePresenterBase`:打字机行、说话者显示名、选项面板、淡入淡出,响应 `LineCancellationToken`) + +- + + 新建 `IPortraitRenderer.cs` + `SpritePortraitRenderer.cs`(DOTween 跳动/移动/晃动) + +- + + 新建 `VNPortraitStage.cs`(多槽位管理,按 `portraitStyle` 实例化 renderer) + +- + + 用 Bezi Actions 搭建 VN 对话 UI(背景/立绘槽位/对话框/选项面板),接入 `DialogueRunner.dialogueViews` + +**阶段 4 — 表现与树命令、条件** + +- + + 新建 `StoryPresentationCommands.cs`(`show/hide/move/jump/shake_portrait`、`set_emotion`、`set_background`) + +- + + 新建 `StoryTreeCommands.cs`(`unlock_block`/`insert_block`/`unlock_song`,迁移旧 `SetUnlockKey` 歌曲解锁+消息入队) + +- + + 新建 `StoryFunctions.cs`(`[YarnFunction]` `is_completed`/`story_var`,按需) + +- + + 在示例 `.yarn` 中覆盖表现命令、选项、`<>` 条件、`<>`、`<>` 并验证 + +**阶段 5 — 清理旧系统** + +- + + `grep` 确认并改接 `ChapterSelectionManager`/`Menu` 等对 `DialogManager` 的调用点到 `StoryDialogueController` + +- + + 删除 `DialogManager.cs`/`DialogModule.cs`/`StoryInterpreters.cs`/`DialogUI/*`/旧 `Blocks/*`/旧 `Storyline.cs`/旧 `StoryData.cs`/旧 `StoryManager.cs` + +- + + 重新编译并清零剧情相关编译错误 \ No newline at end of file