This commit is contained in:
SoulliesOfficial
2025-06-13 14:59:58 -04:00
parent 27529d44dc
commit b9e6a9ab25
143 changed files with 7254 additions and 1906 deletions

View File

@@ -73,9 +73,9 @@ Material:
- _OutlineWidth: 0
- _PerspectiveFilter: 0.875
- _Reflectivity: 10
- _ScaleRatioA: 1
- _ScaleRatioB: 1
- _ScaleRatioC: 1
- _ScaleRatioA: 0.9
- _ScaleRatioB: 0.73125
- _ScaleRatioC: 0.73125
- _ScaleX: 1
- _ScaleY: 1
- _ShaderFlags: 0
@@ -168,9 +168,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
m_Name: SarasaGothicSC-Regular SDF ja Kanji-1
m_EditorClassIdentifier:
hashCode: 0
hashCode: 1381821259
material: {fileID: -9109684437157846903}
materialHashCode: 0
materialHashCode: -1017365621
m_Version: 1.1.0
m_SourceFontFileGUID: 2f42c1d891af66e4ba426c82a0075872
m_SourceFontFile_EditorRef: {fileID: 12800000, guid: 2f42c1d891af66e4ba426c82a0075872,

View File

@@ -60,9 +60,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
m_Name: SarasaGothicSC-Regular SDF ja Kanji-2
m_EditorClassIdentifier:
hashCode: 0
hashCode: 1381821256
material: {fileID: 532232478057347017}
materialHashCode: 0
materialHashCode: -527065496
m_Version: 1.1.0
m_SourceFontFileGUID: 2f42c1d891af66e4ba426c82a0075872
m_SourceFontFile_EditorRef: {fileID: 12800000, guid: 2f42c1d891af66e4ba426c82a0075872,
@@ -272081,9 +272081,9 @@ Material:
- _OutlineWidth: 0
- _PerspectiveFilter: 0.875
- _Reflectivity: 10
- _ScaleRatioA: 1
- _ScaleRatioB: 1
- _ScaleRatioC: 1
- _ScaleRatioA: 0.9
- _ScaleRatioB: 0.73125
- _ScaleRatioC: 0.73125
- _ScaleX: 1
- _ScaleY: 1
- _ShaderFlags: 0

View File

@@ -0,0 +1,19 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1726182683, guid: a4865f1ab4504ed8a368670db22f409c, type: 3}
m_Name: AOTGenerationConfig
m_EditorClassIdentifier:
automateBeforeBuilds: 0
deleteDllAfterBuilds: 1
AutomateForAllAOTPlatforms: 1
automateForPlatforms: 0900000014000000
supportSerializedTypes: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6ab65f5db0f188a4d85864c603336f50
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,136 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 772478971, guid: a4865f1ab4504ed8a368670db22f409c, type: 3}
m_Name: ColorPaletteManager
m_EditorClassIdentifier:
colorPalettes:
- name: Country
showAlpha: 0
colors:
- {r: 0.776, g: 0.651, b: 0.349, a: 1}
- {r: 0.863, g: 0.761, b: 0.631, a: 1}
- {r: 0.91, g: 0.831, b: 0.686, a: 1}
- {r: 0.961, g: 0.902, b: 0.788, a: 1}
- {r: 0.753, g: 0.714, b: 0.667, a: 1}
- {r: 0.478, g: 0.573, b: 0.431, a: 1}
- {r: 0.314, g: 0.427, b: 0.31, a: 1}
- {r: 0.596, g: 0.345, b: 0.235, a: 1}
- {r: 0.545, g: 0.329, b: 0.318, a: 1}
- {r: 0.647, g: 0.204, b: 0.227, a: 1}
- {r: 0.435, g: 0.161, b: 0.063, a: 1}
- {r: 0.357, g: 0.333, b: 0.278, a: 1}
- {r: 0.976, g: 0.98, b: 0.961, a: 1}
- {r: 0.165, g: 0.271, b: 0.11, a: 1}
- name: Beach
showAlpha: 0
colors:
- {r: 0.996, g: 0.906, b: 0.459, a: 1}
- {r: 0.314, g: 0.592, b: 0.035, a: 1}
- {r: 0.486, g: 0.953, b: 0.875, a: 1}
- {r: 0.996, g: 0.82, b: 0.212, a: 1}
- {r: 1, g: 0.769, b: 0.165, a: 1}
- {r: 0.804, g: 0.835, b: 0.753, a: 1}
- {r: 1, g: 0.769, b: 0.165, a: 1}
- {r: 1, g: 0.702, b: 0.063, a: 1}
- {r: 1, g: 0.898, b: 0.569, a: 1}
- name: Fall
showAlpha: 0
colors:
- {r: 0.82, g: 0.722, b: 0.318, a: 1}
- {r: 0.537, g: 0.192, b: 0.153, a: 1}
- {r: 0.996, g: 0.812, b: 0.012, a: 1}
- {r: 1, g: 0.431, b: 0.02, a: 1}
- {r: 0.937, g: 0.267, b: 0.094, a: 1}
- {r: 0.42, g: 0.212, b: 0.18, a: 1}
- {r: 0.992, g: 0.651, b: 0.004, a: 1}
- {r: 0.89, g: 0.353, b: 0.086, a: 1}
- {r: 1, g: 0.443, b: 0.004, a: 1}
- {r: 0.682, g: 0.275, b: 0.137, a: 1}
- {r: 0.306, g: 0.231, b: 0.114, a: 1}
- {r: 0.384, g: 0.416, b: 0.082, a: 1}
- {r: 0.165, g: 0.157, b: 0.008, a: 1}
- {r: 0.906, g: 0.635, b: 0.227, a: 1}
- {r: 0.82, g: 0.722, b: 0.318, a: 1}
- {r: 0.745, g: 0.435, b: 0.031, a: 1}
- {r: 0.765, g: 0.682, b: 0.569, a: 1}
- {r: 0.18, g: 0.149, b: 0.075, a: 1}
- {r: 0.702, g: 0.451, b: 0.059, a: 1}
- name: Passion
showAlpha: 0
colors:
- {r: 0.925, g: 0.682, b: 0.624, a: 1}
- {r: 0.188, g: 0.114, b: 0.224, a: 1}
- {r: 0.349, g: 0.11, b: 0.231, a: 1}
- {r: 0.435, g: 0.267, b: 0.357, a: 1}
- name: Sepia
showAlpha: 0
colors:
- {r: 0.353, g: 0.098, b: 0.02, a: 1}
- {r: 0.663, g: 0.188, b: 0.114, a: 1}
- {r: 0.906, g: 0.643, b: 0.082, a: 1}
- {r: 0.996, g: 0.839, b: 0.322, a: 1}
- {r: 0.486, g: 0.392, b: 0.02, a: 1}
- {r: 0.294, g: 0.235, b: 0.012, a: 1}
- name: Floral
showAlpha: 0
colors:
- {r: 0.855, g: 0.518, b: 0.412, a: 1}
- {r: 0.827, g: 0.294, b: 0.333, a: 1}
- {r: 0.737, g: 0.118, b: 0.208, a: 1}
- {r: 0.549, g: 0.149, b: 0.235, a: 1}
- {r: 0.949, g: 0.925, b: 0.784, a: 1}
- {r: 0.945, g: 0.882, b: 0.69, a: 1}
- {r: 0.871, g: 0.812, b: 0.698, a: 1}
- {r: 0.4, g: 0.196, b: 0.243, a: 1}
- {r: 0.271, g: 0.157, b: 0.227, a: 1}
- name: Underwater
showAlpha: 0
colors:
- {r: 0.663, g: 0.416, b: 0.733, a: 1}
- {r: 0.2, g: 0.6, b: 0.698, a: 1}
- {r: 0.11, g: 0.49, b: 0.698, a: 1}
- {r: 0.439, g: 0.627, b: 0.227, a: 1}
- {r: 0, g: 0.357, b: 0.604, a: 1}
- {r: 0.067, g: 0.271, b: 0.353, a: 1}
- name: Breeze
showAlpha: 0
colors:
- {r: 0.706, g: 1, b: 0, a: 1}
- {r: 0.651, g: 1, b: 0.404, a: 1}
- {r: 0.122, g: 1, b: 0.514, a: 1}
- {r: 0.216, g: 0.894, b: 0.961, a: 1}
- {r: 0.4, g: 1, b: 0.882, a: 1}
- {r: 0.027, g: 0.792, b: 0.8, a: 1}
- name: Clovers
showAlpha: 0
colors:
- {r: 0.431, g: 0.549, b: 0.102, a: 1}
- {r: 0.671, g: 0.714, b: 0.071, a: 1}
- {r: 0.969, g: 0.949, b: 0.831, a: 1}
- {r: 0.886, g: 0.902, b: 0.702, a: 1}
- {r: 0.753, g: 0.824, b: 0.627, a: 1}
- {r: 0.404, g: 0.6, b: 0.4, a: 1}
- name: Tropical
showAlpha: 0
colors:
- {r: 0.953, g: 0.647, b: 0.804, a: 1}
- {r: 0.965, g: 0.741, b: 0.871, a: 1}
- {r: 0.949, g: 0.549, b: 0.643, a: 1}
- {r: 0.992, g: 0.659, b: 0.498, a: 1}
- {r: 0.976, g: 0.792, b: 0.729, a: 1}
- {r: 0.984, g: 0.855, b: 0.725, a: 1}
- {r: 0.259, g: 0.882, b: 0.663, a: 1}
- {r: 0.349, g: 0.753, b: 0.78, a: 1}
- {r: 0.725, g: 0.976, b: 0.91, a: 1}
- {r: 0.647, g: 0.745, b: 0.957, a: 1}
- {r: 0.725, g: 0.863, b: 0.973, a: 1}
- {r: 0.89, g: 0.945, b: 0.996, a: 1}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c8c108c70496d3941b217d0196f12edf
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,15 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 188390376, guid: a4865f1ab4504ed8a368670db22f409c, type: 3}
m_Name: ImportSettingsConfig
m_EditorClassIdentifier:
automateBeforeBuild: 1

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b2b839425e3449a4c94900ec879ce821
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bf4450f8404fb5d4991d2b5a7973ba31, type: 3}
m_Name: Chapter1
m_Name: Chapter0
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
@@ -21,9 +21,9 @@ MonoBehaviour:
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes: []
chapterIndex: C1
chapterIndex: Chapter0
chapterName: Departure To Multiverse
chapterSubtitle: Chapter 1
chapterSubtitle: Chapter 0
themeColor: {r: 0.7987421, g: 0.7987421, b: 0.7987421, a: 1}
avatar: {fileID: 21300000, guid: c95e8a2cec6d6fb469f3a2e524fbe890, type: 3}
chapterSwitch:
@@ -58,3 +58,7 @@ MonoBehaviour:
displayDifficultyName:
designerName:
color: {r: 1, g: 0.2, b: 0.2, a: 1}
- difficultyName: Chaos
displayDifficultyName:
designerName:
color: {r: 1, g: 0, b: 1, a: 1}

View File

@@ -2312,7 +2312,7 @@ MonoBehaviour:
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}
bottomRight: {r: 1, g: 1, b: 1, a: 0}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0

View File

@@ -0,0 +1,212 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1597223253758175175
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4784016156976986300}
- component: {fileID: 7864473739413828157}
- component: {fileID: 6919760681373524986}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4784016156976986300
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1597223253758175175}
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: 8130309985027027954}
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: 40, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7864473739413828157
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1597223253758175175}
m_CullTransparentMesh: 1
--- !u!114 &6919760681373524986
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1597223253758175175}
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: FC
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, 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: 16
m_fontSizeBase: 16
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 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: 0
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!1 &7574088478242334147
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8130309985027027954}
- component: {fileID: 6489654351169417587}
- component: {fileID: 5009749467225280522}
m_Layer: 5
m_Name: BeatmapStatusMark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8130309985027027954
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7574088478242334147}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -0.75416523}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4784016156976986300}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 40, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6489654351169417587
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7574088478242334147}
m_CullTransparentMesh: 1
--- !u!114 &5009749467225280522
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7574088478242334147}
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: 9043ea87d87b2534eac0a4aaa784039f, 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: 1

View File

@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: 7ae5431e0e2c6fe48ba5237e56a42769
TextScriptImporter:
guid: 1fc633b6a9d4908488b25fdb228da86b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@@ -66,22 +66,21 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300002, guid: 66995b6b61aed864daa956ae255d7fee, type: 3}
m_Sprite: {fileID: 0}
m_improveResolution: 0
m_Resolution: 0
m_useNativeSize: 0
m_points:
- {x: 0.50006104, y: -119.49999}
- {x: 140.50006, y: 251.5}
- {x: 560.50006, y: -99.49999}
- {x: 645.50006, y: 260.5}
lineThickness: 20
- {x: 140.50006, y: 52.7}
- {x: 560.50006, y: -6.32}
lineThickness: 5
relativeSize: 0
lineList: 0
lineCaps: 0
bezierSegmentsPerCurve: 24
LineJoins: 1
BezierMode: 2
BezierMode: 0
drivenExternally: 1
--- !u!114 &-805279860356291106
MonoBehaviour:

View File

@@ -0,0 +1,487 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &147050084074733619
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5120337310990590007}
- component: {fileID: 501271540936040954}
- component: {fileID: 4219007272173467644}
m_Layer: 5
m_Name: OutPort
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5120337310990590007
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147050084074733619}
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: 5350638854831129010}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: -30}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &501271540936040954
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147050084074733619}
m_CullTransparentMesh: 1
--- !u!114 &4219007272173467644
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147050084074733619}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0, b: 0, 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: 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!1 &1093014837187042595
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8088187650405042001}
- component: {fileID: 8483913691444022236}
- component: {fileID: 8300599191905768772}
m_Layer: 5
m_Name: InPort
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8088187650405042001
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1093014837187042595}
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: 5350638854831129010}
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: 0, y: -30}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8483913691444022236
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1093014837187042595}
m_CullTransparentMesh: 1
--- !u!114 &8300599191905768772
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1093014837187042595}
m_Enabled: 0
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: 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: 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!1 &2947357181438598616
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 808855937929311006}
- component: {fileID: 3938143345111524688}
- component: {fileID: 1269722336407503250}
- component: {fileID: 3931523710101296998}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &808855937929311006
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2947357181438598616}
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: 5350638854831129010}
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 &3938143345111524688
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2947357181438598616}
m_CullTransparentMesh: 1
--- !u!114 &1269722336407503250
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2947357181438598616}
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: a53caee9af6d16b44a78a926722a32f5, 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 &3931523710101296998
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2947357181438598616}
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: 1
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: 1269722336407503250}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &7991069327751894070
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9095470796084918386}
- component: {fileID: 606259940963463531}
- component: {fileID: 8391808794720387191}
- component: {fileID: 6909263626923910701}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &9095470796084918386
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7991069327751894070}
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: 5350638854831129010}
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: -20.000002}
m_SizeDelta: {x: 0, y: -39.999996}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &606259940963463531
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7991069327751894070}
m_CullTransparentMesh: 1
--- !u!114 &8391808794720387191
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7991069327751894070}
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: Title
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, 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: 48
m_fontSizeBase: 48
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 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: 0
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!225 &6909263626923910701
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7991069327751894070}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 0
m_BlocksRaycasts: 0
m_IgnoreParentGroups: 0
--- !u!1 &8279096577214194803
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5350638854831129010}
- component: {fileID: 6895756204793606274}
- component: {fileID: 7871082850049165166}
m_Layer: 5
m_Name: CurrentTextBlockUI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5350638854831129010
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8279096577214194803}
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: 808855937929311006}
- {fileID: 9095470796084918386}
- {fileID: 8088187650405042001}
- {fileID: 5120337310990590007}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 400, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6895756204793606274
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8279096577214194803}
m_CullTransparentMesh: 1
--- !u!114 &7871082850049165166
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8279096577214194803}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b976128eb3ec59e4e866dbb610441706, type: 3}
m_Name:
m_EditorClassIdentifier:
blockRect: {fileID: 5350638854831129010}
inPort: {fileID: 8088187650405042001}
outPort: {fileID: 5120337310990590007}
blockName:
blockTitle:
button: {fileID: 3931523710101296998}
titleText: {fileID: 8391808794720387191}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c3724feddb1408843a7995372fbfbe1b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,6 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1314285067314511188
--- !u!1 &1176251198231594119
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -8,84 +8,10 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2016797284792224598}
- component: {fileID: 611474904894693993}
- component: {fileID: 6633181440282358348}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2016797284792224598
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1314285067314511188}
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: 7636465290159887349}
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 &611474904894693993
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1314285067314511188}
m_CullTransparentMesh: 1
--- !u!114 &6633181440282358348
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1314285067314511188}
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.3764706}
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: e04579cd65e80e848be7d130ab60012a, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &8033017966764082997
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7636465290159887349}
- component: {fileID: 595282724017128489}
- component: {fileID: 8389971437431979706}
- component: {fileID: 7033351746859775176}
- component: {fileID: 4985437946617883479}
- component: {fileID: 4229387824617991636}
- component: {fileID: 1788110989413035462}
m_Layer: 5
m_Name: ChoiceButton
m_TagString: Untagged
@@ -93,42 +19,42 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7636465290159887349
--- !u!224 &7033351746859775176
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_GameObject: {fileID: 1176251198231594119}
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: 2016797284792224598}
- {fileID: 1478741180673821888}
- {fileID: 2707619886607754100}
- {fileID: 618321639625094505}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 560, y: 50}
m_SizeDelta: {x: 180, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &595282724017128489
--- !u!222 &4985437946617883479
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
m_GameObject: {fileID: 1176251198231594119}
m_CullTransparentMesh: 1
--- !u!114 &8389971437431979706
--- !u!114 &4229387824617991636
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
m_GameObject: {fileID: 1176251198231594119}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
@@ -162,11 +88,23 @@ MonoBehaviour:
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 6633181440282358348}
m_TargetGraphic: {fileID: 995447401348897857}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &8617754669712873818
--- !u!114 &1788110989413035462
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1176251198231594119}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 90f34f59ff260c44796d71c51b7c0ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &5589057778839743913
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -174,10 +112,85 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1478741180673821888}
- component: {fileID: 5778966826281838880}
- component: {fileID: 7578652067859820047}
- component: {fileID: 9171400094775339908}
- component: {fileID: 2707619886607754100}
- component: {fileID: 3917495085193381294}
- component: {fileID: 995447401348897857}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2707619886607754100
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5589057778839743913}
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: 7033351746859775176}
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 &3917495085193381294
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5589057778839743913}
m_CullTransparentMesh: 1
--- !u!114 &995447401348897857
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5589057778839743913}
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.3764706}
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: e04579cd65e80e848be7d130ab60012a, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &8577723022881073969
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 618321639625094505}
- component: {fileID: 8175011701247594375}
- component: {fileID: 7738645786476951168}
- component: {fileID: 1353276082974954538}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
@@ -185,40 +198,40 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1478741180673821888
--- !u!224 &618321639625094505
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8617754669712873818}
m_GameObject: {fileID: 8577723022881073969}
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: 7636465290159887349}
m_Father: {fileID: 7033351746859775176}
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 &5778966826281838880
--- !u!222 &8175011701247594375
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8617754669712873818}
m_GameObject: {fileID: 8577723022881073969}
m_CullTransparentMesh: 1
--- !u!114 &7578652067859820047
--- !u!114 &7738645786476951168
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8617754669712873818}
m_GameObject: {fileID: 8577723022881073969}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
@@ -260,12 +273,12 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 32
m_fontSize: 48
m_fontSizeBase: 32
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_enableAutoSizing: 1
m_fontSizeMin: 16
m_fontSizeMax: 48
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
@@ -276,7 +289,7 @@ MonoBehaviour:
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
@@ -302,13 +315,13 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!114 &9171400094775339908
--- !u!114 &1353276082974954538
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8617754669712873818}
m_GameObject: {fileID: 8577723022881073969}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 59466bf171ad3d74aa604302094e1a8f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,90 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8033017966764082997
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7636465290159887349}
- component: {fileID: 595282724017128489}
- component: {fileID: 4618900808982286017}
- component: {fileID: 6630610190885680455}
m_Layer: 5
m_Name: ChoiceGroup
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7636465290159887349
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
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, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 800, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &595282724017128489
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
m_CullTransparentMesh: 1
--- !u!114 &4618900808982286017
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 4
m_Spacing: 25
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &6630610190885680455
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a653477cd0de8794b810214793b04cc9, type: 3}
m_Name:
m_EditorClassIdentifier:
choiceButtonPrefab: {fileID: 1176251198231594119, guid: 59466bf171ad3d74aa604302094e1a8f,
type: 3}
container: {fileID: 7636465290159887349}
choiceButtonList: []

View File

@@ -12,7 +12,7 @@ GameObject:
- component: {fileID: 611474904894693993}
- component: {fileID: 6633181440282358348}
m_Layer: 5
m_Name: Image
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -141,7 +141,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Content
m_text: StoryChapter0/C0_Departure_P1_A_D1_S1
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 73f9a9bb620a2b040ab7347b390452fe, type: 2}
m_sharedMaterial: {fileID: 1291443754377433884, guid: 73f9a9bb620a2b040ab7347b390452fe,
@@ -260,6 +260,7 @@ GameObject:
m_Component:
- component: {fileID: 7636465290159887349}
- component: {fileID: 595282724017128489}
- component: {fileID: 4391875194078862085}
m_Layer: 5
m_Name: DialogText
m_TagString: Untagged
@@ -297,6 +298,21 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
m_CullTransparentMesh: 1
--- !u!114 &4391875194078862085
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8033017966764082997}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 831ccff3dc06bfc4884663d623af866d, type: 3}
m_Name:
m_EditorClassIdentifier:
background: {fileID: 6633181440282358348}
speakerNameText: {fileID: 9171400094775339908}
contentText: {fileID: 7479393659305463332}
--- !u!1 &8617754669712873818
GameObject:
m_ObjectHideFlags: 0

View File

@@ -0,0 +1,611 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &147050084074733619
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5120337310990590007}
- component: {fileID: 501271540936040954}
- component: {fileID: 4219007272173467644}
m_Layer: 5
m_Name: OutPort
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5120337310990590007
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147050084074733619}
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: 5350638854831129010}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: -30}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &501271540936040954
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147050084074733619}
m_CullTransparentMesh: 1
--- !u!114 &4219007272173467644
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147050084074733619}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0, b: 0, 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: 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!1 &1093014837187042595
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8088187650405042001}
- component: {fileID: 8483913691444022236}
- component: {fileID: 8300599191905768772}
m_Layer: 5
m_Name: InPort
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8088187650405042001
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1093014837187042595}
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: 5350638854831129010}
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: 0, y: -30}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8483913691444022236
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1093014837187042595}
m_CullTransparentMesh: 1
--- !u!114 &8300599191905768772
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1093014837187042595}
m_Enabled: 0
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: 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: 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!1 &2947357181438598616
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 808855937929311006}
- component: {fileID: 3938143345111524688}
- component: {fileID: 1269722336407503250}
- component: {fileID: 3931523710101296998}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &808855937929311006
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2947357181438598616}
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: 5350638854831129010}
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 &3938143345111524688
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2947357181438598616}
m_CullTransparentMesh: 1
--- !u!114 &1269722336407503250
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2947357181438598616}
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: a53caee9af6d16b44a78a926722a32f5, 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 &3931523710101296998
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2947357181438598616}
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: 1
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: 1269722336407503250}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &5487477990142788049
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1412140060069810010}
- component: {fileID: 7700833151999098032}
- component: {fileID: 2834471624508731075}
m_Layer: 5
m_Name: Text (TMP) (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1412140060069810010
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5487477990142788049}
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: 5350638854831129010}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -3, y: 80}
m_SizeDelta: {x: -6, y: -160}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7700833151999098032
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5487477990142788049}
m_CullTransparentMesh: 1
--- !u!114 &2834471624508731075
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5487477990142788049}
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: FINISHED
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, 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: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 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: 0
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!1 &7991069327751894070
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9095470796084918386}
- component: {fileID: 606259940963463531}
- component: {fileID: 8391808794720387191}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &9095470796084918386
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7991069327751894070}
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: 5350638854831129010}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -72, y: -20}
m_SizeDelta: {x: 135, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &606259940963463531
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7991069327751894070}
m_CullTransparentMesh: 1
--- !u!114 &8391808794720387191
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7991069327751894070}
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: Title
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, 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: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 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: 0
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!1 &8279096577214194803
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5350638854831129010}
- component: {fileID: 6895756204793606274}
- component: {fileID: 7871082850049165166}
m_Layer: 5
m_Name: FinishedTextBlockUI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5350638854831129010
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8279096577214194803}
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: 808855937929311006}
- {fileID: 9095470796084918386}
- {fileID: 1412140060069810010}
- {fileID: 8088187650405042001}
- {fileID: 5120337310990590007}
m_Father: {fileID: 0}
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: 0, y: 0}
m_SizeDelta: {x: 400, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6895756204793606274
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8279096577214194803}
m_CullTransparentMesh: 1
--- !u!114 &7871082850049165166
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8279096577214194803}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b976128eb3ec59e4e866dbb610441706, type: 3}
m_Name:
m_EditorClassIdentifier:
blockName:
position: {x: 0, y: 0}
blockRect: {fileID: 5350638854831129010}
inPort: {fileID: 8088187650405042001}
outPort: {fileID: 5120337310990590007}
blockTitle:
button: {fileID: 3931523710101296998}
titleText: {fileID: 8391808794720387191}
state: 0

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 44de36b0d423e9c418251e354d843dc4
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -34,7 +34,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: -30}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &501271540936040954
@@ -52,7 +52,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 147050084074733619}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
@@ -109,7 +109,7 @@ RectTransform:
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: 0, y: 0}
m_AnchoredPosition: {x: 0, y: -30}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8483913691444022236
@@ -127,7 +127,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1093014837187042595}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
@@ -216,7 +216,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Sprite: {fileID: 21300000, guid: 7ddd15eec542d5f43a4e8a2e01322627, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -302,10 +302,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 5350638854831129010}
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: -50, y: 75}
m_SizeDelta: {x: 200, y: 50}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -72, y: -20}
m_SizeDelta: {x: 135, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &606259940963463531
CanvasRenderer:
@@ -344,8 +344,8 @@ MonoBehaviour:
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@@ -369,7 +369,7 @@ MonoBehaviour:
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
@@ -416,7 +416,7 @@ GameObject:
- component: {fileID: 6895756204793606274}
- component: {fileID: 7871082850049165166}
m_Layer: 5
m_Name: TextBlockUI
m_Name: LockedTextBlockUI
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -443,7 +443,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 300, y: 200}
m_SizeDelta: {x: 400, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6895756204793606274
CanvasRenderer:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f6a037648752e004ba8846f352a8f421
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -10,7 +10,6 @@ GameObject:
m_Component:
- component: {fileID: 5732796955640118753}
- component: {fileID: 1686831770413399787}
- component: {fileID: 7998495330303362196}
m_Layer: 5
m_Name: InPort
m_TagString: Untagged
@@ -34,7 +33,7 @@ RectTransform:
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: 0, y: 0}
m_AnchoredPosition: {x: 71, y: -82.5}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1686831770413399787
@@ -45,36 +44,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1139654734443167197}
m_CullTransparentMesh: 1
--- !u!114 &7998495330303362196
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1139654734443167197}
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: 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: 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!1 &2947357181438598616
GameObject:
m_ObjectHideFlags: 0
@@ -141,7 +110,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Sprite: {fileID: 21300000, guid: 4e9019f9aabcb3c409ea419fdba522f5, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -205,7 +174,6 @@ GameObject:
m_Component:
- component: {fileID: 4908100188787544557}
- component: {fileID: 9115198829922096935}
- component: {fileID: 3907262488122341211}
m_Layer: 5
m_Name: OutPort
m_TagString: Untagged
@@ -229,7 +197,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: -82.5}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9115198829922096935
@@ -240,36 +208,68 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6180957620423729728}
m_CullTransparentMesh: 1
--- !u!114 &3907262488122341211
--- !u!1 &7352787072520773963
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 572536196246750759}
- component: {fileID: 8357542584952053847}
m_Layer: 0
m_Name: StatusMarkContainer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &572536196246750759
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7352787072520773963}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0.75416523}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5350638854831129010}
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: 72.5, y: 115}
m_SizeDelta: {x: 300, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &8357542584952053847
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6180957620423729728}
m_GameObject: {fileID: 7352787072520773963}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0, b: 0, 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: 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
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 3
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!1 &7991069327751894070
GameObject:
m_ObjectHideFlags: 0
@@ -281,8 +281,9 @@ GameObject:
- component: {fileID: 9095470796084918386}
- component: {fileID: 606259940963463531}
- component: {fileID: 8391808794720387191}
- component: {fileID: 4504653164803251096}
m_Layer: 5
m_Name: Text (TMP)
m_Name: MusicNameText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -304,8 +305,8 @@ 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}
m_SizeDelta: {x: 200, y: 50}
m_AnchoredPosition: {x: 72.5, y: -15}
m_SizeDelta: {x: 300, y: 300}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &606259940963463531
CanvasRenderer:
@@ -344,8 +345,8 @@ MonoBehaviour:
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@@ -404,6 +405,18 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!225 &4504653164803251096
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7991069327751894070}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 0
m_BlocksRaycasts: 0
m_IgnoreParentGroups: 0
--- !u!1 &8279096577214194803
GameObject:
m_ObjectHideFlags: 0
@@ -438,12 +451,13 @@ RectTransform:
- {fileID: 9095470796084918386}
- {fileID: 5732796955640118753}
- {fileID: 4908100188787544557}
- {fileID: 572536196246750759}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 300, y: 100}
m_SizeDelta: {x: 470, y: 350}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6895756204793606274
CanvasRenderer:
@@ -465,10 +479,15 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5efe0a39fe908354e9ab6d1edfdb8843, type: 3}
m_Name:
m_EditorClassIdentifier:
blockName:
blockPosition: {x: 0, y: 0}
state: 0
blockRect: {fileID: 5350638854831129010}
inPort: {fileID: 5732796955640118753}
outPort: {fileID: 4908100188787544557}
blockName:
songName:
button: {fileID: 3931523710101296998}
musicText: {fileID: 8391808794720387191}
songNameText: {fileID: 8391808794720387191}
beatmapStatusMarkContainer: {fileID: 572536196246750759}
beatmapStatusMarkPrefab: {fileID: 7574088478242334147, guid: 1fc633b6a9d4908488b25fdb228da86b,
type: 3}

View File

@@ -34,7 +34,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 2, y: 0}
m_AnchoredPosition: {x: -15, y: -5}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &459525017163665976
@@ -52,7 +52,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2549272938280010857}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
@@ -141,7 +141,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Sprite: {fileID: 21300000, guid: ba2e784cfa5cc0549bf66051f872367c, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@@ -229,7 +229,7 @@ RectTransform:
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: 0, y: 0}
m_AnchoredPosition: {x: 35, y: -6}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3000483006876940928
@@ -247,7 +247,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5694744930588099522}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
@@ -335,17 +335,18 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Title
m_text: Tutorial
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontAsset: {fileID: 11400000, guid: 73f9a9bb620a2b040ab7347b390452fe, type: 2}
m_sharedMaterial: {fileID: 1291443754377433884, guid: 73f9a9bb620a2b040ab7347b390452fe,
type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@@ -440,10 +441,10 @@ RectTransform:
- {fileID: 4937946904652960982}
m_Father: {fileID: 0}
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: 0, y: 0}
m_SizeDelta: {x: 300, y: 200}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: -540}
m_SizeDelta: {x: 600, y: 375}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6895756204793606274
CanvasRenderer:
@@ -465,9 +466,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 821e50e1519236a46b03eb1f005acebe, type: 3}
m_Name:
m_EditorClassIdentifier:
blockName:
blockPosition: {x: 0, y: 0}
state: 0
blockRect: {fileID: 5350638854831129010}
inPort: {fileID: 5784757909052703056}
outPort: {fileID: 4937946904652960982}
blockName:
button: {fileID: 3931523710101296998}
tutorialText: {fileID: 8391808794720387191}
tutorialName:
tutorialNameText: {fileID: 8391808794720387191}

View File

@@ -29,7 +29,7 @@ MonoBehaviour:
-
Flags: 000000000000
Languages_Touch: []
- Term: Editor UI/settings
- Term: Menu UI/settings
TermType: 0
Description:
Languages:
@@ -41,7 +41,7 @@ MonoBehaviour:
- "C\xE0i \u0111\u1EB7t"
Flags: 000000000000
Languages_Touch: []
- Term: Editor UI/touch_to_start
- Term: Menu UI/touch_to_start
TermType: 0
Description:
Languages:
@@ -54,16 +54,112 @@ MonoBehaviour:
- "- Ch\u1EA1m \u0111\u1EC3 b\u1EAFt \u0111\u1EA7u tr\xF2 ch\u01A1i -"
Flags: 000000000000
Languages_Touch: []
- Term: RegularFont
TermType: 9
- Term: Characters/Soullies
TermType: 0
Description:
Languages:
- SarasaGothicSC-Regular SDF en
- SarasaGothicSC-Regular SDF zh-CN
- SarasaGothicSC-Regular SDF zh-TW
- SarasaGothicSC-Regular SDF ja
- SarasaGothicSC-Regular SDF ko
- SarasaGothicSC-Regular SDF vi
- Soullies
- "\u53D7\u4E3D\u4E1D"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
- Term: Chapter0/C0_Departure_P1_A_D1_S1
TermType: 0
Description:
Languages:
- Welcome to story test!
- "\u6B22\u8FCE\u6765\u5230\u5267\u60C5\u6D4B\u8BD5\uFF01"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
- Term: Chapter0/C0_Departure_P1_A_D1_S2
TermType: 0
Description:
Languages:
- Please select a story branch.
- "\u8BF7\u9009\u4E00\u4E2A\u5267\u60C5\u5206\u652F\u5427\u3002"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
- Term: Chapter0/C0_Departure_P1_A_C1_S1
TermType: 0
Description:
Languages:
- I choose storyline A.
- "\u6211\u9009\u62E9\u5206\u652FA\u3002"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
- Term: Chapter0/C0_Departure_P1_A_C1_S2
TermType: 0
Description:
Languages:
- I choose storyline B.
- "\u6211\u9009\u62E9\u5206\u652FB\u3002"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
- Term: Chapter0/C0_Departure_P1_A_D2_S1
TermType: 0
Description:
Languages:
- We will go to A now!
- "\u6211\u4EEC\u8FD9\u5C31\u524D\u5F80A\u5206\u652F\uFF01"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
- Term: Chapter0/C0_Departure_P1_A_D3_S1
TermType: 0
Description:
Languages:
- We will go to B now!
- "\u6211\u4EEC\u9A6C\u4E0A\u8FDB\u5165B\u5206\u652F\uFF01"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
- Term: Chapter0/C0_Departure_P2_A_D1_S1
TermType: 0
Description:
Languages:
- Let's start from the...
- "\u8BA9\u6211\u4EEC\u5F00\u59CB\u2026\u2026"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
- Term: Chapter0/C0_Departure_P2_A_D1_S2
TermType: 0
Description:
Languages:
- Chaos Zone!
- "\u8FDB\u5165\u6DF7\u6C8C\u7A7A\u95F4\uFF01"
-
-
-
-
Flags: 000000000000
Languages_Touch: []
CaseInsensitiveTerms: 0
@@ -93,7 +189,7 @@ MonoBehaviour:
Google_WebServiceURL: https://script.google.com/macros/s/AKfycbyPUuh1rjZLbicNBkY3LFhOHSEBWGRLK13WrmmuwVbrjSobiUGlMpkUT3iMvmv0yiEe/exec
Google_SpreadsheetKey: 1Q03aJoMd4NawhUg2VQiSsaCHiKqXKcL--4-ZtGq8-_E
Google_SpreadsheetName: I2Loc ichni Official Localization
Google_LastUpdatedVersion: 1748878309400
Google_LastUpdatedVersion: 1749822296184
Google_Password: change_this
GoogleUpdateFrequency: 3
GoogleInEditorCheckFrequency: 2

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e17b95f6df6430643b7511e916eb25c4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a86cfdfeb26292546876402f87f761c5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,19 @@
$[Start]
$Soullies: C0_Departure_P1_A_D1_S1
$Soullies: C0_Departure_P1_A_D1_S2
$Choice(Departure_Path_Choose_1){
C0_Departure_P1_A_C1_S1 -> [ChooseP2_A];
C0_Departure_P1_A_C1_S2 -> [ChooseP2_B];
}
$[ChooseP2_A]{
SetVariable("ChooseResult", 1);
GenerateDialogBlock("Departure_P2_A");
}
$Soullies: C0_Departure_P1_A_D2_S1
$[ChooseP2_B]{
SetVariable("ChooseResult", 2);
GenerateDialogBlock("Departure_P2_B");
}
$Soullies: C0_Departure_P1_A_D3_S1

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: afd46b56ef0cc5c4699710c478ff7c55
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
$[Entry]{
GenerateSongBlock("Chaos_Zone");
}
$Soullies: C0_Departure_P2_A_D1_S1
$Soullies: C0_Departure_P2_A_D1_S2

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4d0a8b411a62bd9449344eb530b3234f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ce2f5ed054e5d4d4082038afac4c472c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,49 @@
$[开始]
$Condition{
GetVariable("Branch") == 1 -> [标题1];
GetVariable("Branch") == 2 -> [标题2];
}
#上面是条件判断获取变量Branch的值决定进入哪个标题。
#这是一个注释。
#-----------
$[标题1]
$角色名字1: 说话内容1
#Dialog结束了
#-----------
$[标题2]
$角色名字2: 说话内容2
$Choice(选项名字){
选项内容A -> [选择A];
选项内容B -> [选择B];
}
#上面是选项
#-----------
$[选择A]{
SetVariable("ChooseResult", 1);
GenerateDialogBlock("Departure_P2_A");
}
$角色名字2: 说话内容3-1
$角色名字2: 说话内容3-2
#标题后面的{}内为自定义函数。
#SetVariable("ChooseResult", 1) 设置变量ChooseResult的值为1。
#GenerateTextBlock("Departure_P2_A") 生成名字为Departure_P2_A的文本块。
#-----------
$[选择B]{
SetVariable("ChooseResult", 2);
GenerateDialogBlock("Departure_P2_B");
}
$角色名字2: 说话内容4-1
$角色名字2: 说话内容4-2
$角色名字2: 说话内容4-3
#-----------

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8b05c7949169cc048afaeb7635fd7638
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,19 @@
$[Entry]
$Condition{
GetGlobalVariable("IsCursed") == 1 -> [Cursed-Start];
GetGlobalVariable("IsCursed") == 0 -> [NotCursed-Start];
}
#这是一个注释。
$[Cursed-Start]
$Zako-1(Calm): You are cursed! You are cursed!
$Zako-1(Calm): Go find Zako 0 to get rid of the curse!
$Zako-1(Calm): I won't lie to you!
#这是另一个注释。
-这个注释有两行。
$[NotCursed-Start]
$Zako-1(Happy): You are not cursed!
$Zako-1(Happy): Enjoy your adventure!

View File

@@ -0,0 +1,56 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ab917c50249812429ebd44d6574497c, type: 3}
m_Name: StoryData_Chapter0
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes: []
dialogBlockDatas:
- blockName: Departure_P1_A
blockID: C0_D_Departure_P1_A
blockSize: {x: 400, y: 200}
dialogTitle: P1-A
- blockName: Departure_P2_A
blockID: C0_D_Departure_P2_A
blockSize: {x: 400, y: 200}
dialogTitle: P2-A
- blockName: Departure_P2_B
blockID: C0_D_Departure_P2_B
blockSize: {x: 400, y: 200}
dialogTitle: P2-B
songBlockDatas:
- blockName: Chaos_Zone
blockID: C0_S_Departure_Chaos_Zone
blockSize: {x: 470, y: 350}
songName: Chaos Zone
tutorialBlockDatas:
- blockName: Departure_Tutorial_A
blockID: C0_T_Departure_Tutorial_A
blockSize: {x: 600, y: 375}
tutorialName: Departure Tutorial
initialBlocks:
- blockName: Departure_Tutorial_A
initialState: 2
blockPosition: {x: 200, y: -720}
nextBlocks:
- Departure_P1_A
- blockName: Departure_P1_A
initialState: 1
blockPosition: {x: 1000, y: -720}
nextBlocks: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c263413406835674eb266e9f04d562a3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,78 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-6091830294524258670
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 29fa0085f50d5e54f8144f766051a691, type: 3}
m_Name: FilmGrain
m_EditorClassIdentifier:
active: 1
type:
m_OverrideState: 1
m_Value: 9
intensity:
m_OverrideState: 1
m_Value: 0
response:
m_OverrideState: 1
m_Value: 0
texture:
m_OverrideState: 0
m_Value: {fileID: 0}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: MenuVolume
m_EditorClassIdentifier:
components:
- {fileID: -6091830294524258670}
- {fileID: 8215794205551719707}
- {fileID: 4375261676646749473}
--- !u!114 &4375261676646749473
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fb60a22f311433c4c962b888d1393f88, type: 3}
m_Name: PaniniProjection
m_EditorClassIdentifier:
active: 0
distance:
m_OverrideState: 1
m_Value: 0
cropToFit:
m_OverrideState: 1
m_Value: 1
--- !u!114 &8215794205551719707
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 81180773991d8724ab7f2d216912b564, type: 3}
m_Name: ChromaticAberration
m_EditorClassIdentifier:
active: 0
intensity:
m_OverrideState: 1
m_Value: 1

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 586224155c7ef7a4d82dd5e831185e96
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,192 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using Ichni.Story;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Ichni
{
public class GameSaveManager : SerializedMonoBehaviour
{
public static GameSaveManager instance;
public SongSaveModule SongSaveModule;
public StorySaveModule StorySaveModule;
private void Awake()
{
if (instance == null)
{
instance = this;
SongSaveModule = new SongSaveModule();
SongSaveModule.LoadSongStatuses();
StorySaveModule = new StorySaveModule();
StorySaveModule.LoadStoryVariables();
StorySaveModule.LoadChoices();
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
}
public partial class SongSaveModule
{
public Dictionary<string, SongStatusSave> songStatusSaves;
private string SongSavePath => Application.streamingAssetsPath + "/GameSaves/SongSaves.json";
public SongSaveModule()
{
songStatusSaves = new Dictionary<string, SongStatusSave>();
Debug.Log("Song save path: " + SongSavePath);
}
}
public partial class SongSaveModule
{
[Button]
public void SaveSongStatuses()
{
ES3.Save("SongSaves", songStatusSaves, SongSavePath);
}
public void LoadSongStatuses()
{
if (ES3.FileExists(SongSavePath))
{
songStatusSaves = ES3.Load<Dictionary<string, SongStatusSave>>("SongSaves", SongSavePath);
}
else
{
songStatusSaves = new Dictionary<string, SongStatusSave>();
//TODO: delete
songStatusSaves.Add("Chaos Zone", new SongStatusSave
{
isCompleted = false,
additionalInfo = "",
beatmapSaves = new Dictionary<string, BeatmapSave>()
{
{ "Easy", new BeatmapSave { accuracy = 0.0f, isFullCombo = false, isAllPerfect = false } },
{ "Hard", new BeatmapSave { accuracy = 0.0f, isFullCombo = false, isAllPerfect = false } },
{ "Chaos", new BeatmapSave { accuracy = 0.0f, isFullCombo = false, isAllPerfect = false } }
}
});
}
}
[Button]
public void ClearBeatmapRecords()
{
foreach (var songStatus in songStatusSaves.Values)
{
foreach (var beatmapSave in songStatus.beatmapSaves.Values)
{
beatmapSave.accuracy = 0.0f;
beatmapSave.isFullCombo = false;
beatmapSave.isAllPerfect = false;
}
}
SaveSongStatuses();
}
}
public partial class StorySaveModule
{
public Dictionary<string, List<TutorialBlockSave>> tutorialBlockSaves;
public Dictionary<string, List<SongBlockSave>> songBlockSaves;
public Dictionary<string, List<DialogBlockSave>> dialogBlockSaves;
public Dictionary<string, List<BlockConnectorSave>> connectorSaves;
public Dictionary<string, int> storyVariables;
public Dictionary<string, int> selectedChoices;
private string GetStorySavePath(string chapterName) => Application.streamingAssetsPath + "/StorySaves/" + chapterName + ".json";
private string StoryVariablesPath => Application.streamingAssetsPath + "/StorySaves/StoryVariables.json";
private string ChoicesPath => Application.streamingAssetsPath + "/StorySaves/Choices.json";
public StorySaveModule()
{
tutorialBlockSaves = new Dictionary<string, List<TutorialBlockSave>>();
songBlockSaves = new Dictionary<string, List<SongBlockSave>>();
dialogBlockSaves = new Dictionary<string, List<DialogBlockSave>>();
connectorSaves = new Dictionary<string, List<BlockConnectorSave>>();
storyVariables = new Dictionary<string, int>();
selectedChoices = new Dictionary<string, int>();
Debug.Log("Story Variables path: " + StoryVariablesPath);
}
}
public partial class StorySaveModule
{
public void LoadStoryline(string chapterName)
{
tutorialBlockSaves[chapterName] = ES3.Load<List<TutorialBlockSave>>("TutorialBlockSaves", GetStorySavePath(chapterName));
songBlockSaves[chapterName] = ES3.Load<List<SongBlockSave>>("SongBlockSaves", GetStorySavePath(chapterName));
dialogBlockSaves[chapterName] = ES3.Load<List<DialogBlockSave>>("TextBlockSaves", GetStorySavePath(chapterName));
connectorSaves[chapterName] = ES3.Load<List<BlockConnectorSave>>("BlockConnectorSaves", GetStorySavePath(chapterName));
}
public void SaveStoryline(string chapterName, List<TutorialBlockSave> tutorialBlocks,
List<SongBlockSave> songBlocks, List<DialogBlockSave> dialogBlocks,
List<BlockConnectorSave> connectors)
{
ES3.Save("TutorialBlockSaves", tutorialBlocks, GetStorySavePath(chapterName));
ES3.Save("SongBlockSaves", songBlocks, GetStorySavePath(chapterName));
ES3.Save("TextBlockSaves", dialogBlocks, GetStorySavePath(chapterName));
ES3.Save("BlockConnectorSaves", connectors, GetStorySavePath(chapterName));
SaveStoryVariables();
SaveChoices();
}
}
public partial class StorySaveModule
{
public void SaveStoryVariables()
{
string path = Application.streamingAssetsPath + "/StorySaves/" + "StoryVariables.json";
ES3.Save("StoryVariables", storyVariables, path);
}
public void LoadStoryVariables()
{
string path = Application.streamingAssetsPath + "/StorySaves/" + "StoryVariables.json";
if (ES3.FileExists(path))
{
storyVariables = ES3.Load<Dictionary<string, int>>("StoryVariables", path);
}
else
{
storyVariables = new Dictionary<string, int>();
}
}
public void SaveChoices()
{
string path = Application.streamingAssetsPath + "/StorySaves/" + "Choices.json";
ES3.Save("Choices", selectedChoices, path);
}
public void LoadChoices()
{
string path = Application.streamingAssetsPath + "/StorySaves/" + "Choices.json";
if (ES3.FileExists(path))
{
selectedChoices = ES3.Load<Dictionary<string, int>>("Choices", path);
}
else
{
selectedChoices = new Dictionary<string, int>();
}
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6de7129c47df0eb47858a380f344dfe2
guid: cffb558157bfb9a49a2a624f025f8958
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -0,0 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ichni.RhythmGame
{
public class BeatmapSave
{
public float accuracy;
public bool isFullCombo;
public bool isAllPerfect;
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c427891d163b0a5468cedefc05f055dc
guid: 6b751bb37660d844780656591830afff
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -1,18 +1,26 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using Sirenix.OdinInspector;
using UnityEngine;
public class SongSelectionManager : MonoBehaviour
namespace Ichni.Menu
{
// Start is called before the first frame update
void Start()
public partial class SongSelectionManager : SerializedMonoBehaviour
{
}
public static SongSelectionManager instance;
// Update is called once per frame
void Update()
{
private void Awake()
{
instance = this;
}
}
}
public partial class SongSelectionManager
{
}
}

View File

@@ -0,0 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ichni.RhythmGame
{
public class SongStatusSave
{
public bool isCompleted;
public string additionalInfo;
public Dictionary<string, BeatmapSave> beatmapSaves;
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6be21a0f3163e154ca67d55f70a2617b
guid: 0e15d295a0ae77041ad0269ab3801bc3
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -89,5 +89,15 @@ namespace Ichni
// 最后赋值 target.anchoredPosition = localPos;
return localPos;
}
/// <summary>
/// 获取目标 RectTransform 在目标空间 RectTransform 中的本地位置
/// </summary>
public static Vector2 GetLocalUIPosition(RectTransform targetRect, RectTransform targetSpace)
{
Vector2 screenPos = RectTransformUtility.WorldToScreenPoint(null, targetRect.position);
RectTransformUtility.ScreenPointToLocalPointInRectangle(targetSpace, screenPos, null, out Vector2 localPos);
return localPos;
}
}
}

View File

@@ -24,7 +24,7 @@ namespace Ichni.Story
public Dictionary<string, List<string>> functionDictionary;
public Dictionary<string, List<DialogSentence>> dialogDictionary;
public Dictionary<string, List<Choice>> choiceDictionary;
public Dictionary<string, ChoiceGroup> choiceDictionary;
public Dictionary<string, List<Condition>> conditionDictionary;
private string currentLoadingDialog;
@@ -41,32 +41,32 @@ namespace Ichni.Story
public void SetDialog(string dialogName)
{
TextAsset dialog = Resources.Load<TextAsset>("Dialogs/" + dialogName);
SetDialog(new List<TextAsset> { dialog }, "Entry");
string chapter = StoryManager.instance.currentChapter;
TextAsset dialog = Resources.Load<TextAsset>("Story/" + chapter + "/Dialogs/" + dialogName);
SetDialog(new List<TextAsset> { dialog });
}
public void SetDialog(List<TextAsset> dialogFiles, string dialogParagraphName)
public void SetDialog(List<TextAsset> dialogFiles, string dialogParagraphName = "")
{
dialogUIPage.FadeIn();
currentDialog = "NULL";
isPlayingDialog = true;
LoadDialog(dialogFiles);
if (!string.IsNullOrEmpty(dialogParagraphName))
{
currentDialog = dialogParagraphName;
}
PlayNextDialogParagraph(currentDialog);
currentDialog = "NULL";
LoadDialog(dialogFiles, out string firstHeader);
Debug.Log($"Loaded dialog, first header: {firstHeader}");
currentDialog = dialogParagraphName == "" ? firstHeader : dialogParagraphName;
Debug.Log($"Setting dialog to: {currentDialog}");
}
public void PlayNextDialogParagraph(string nextDialog)
public void PlayNextDialogParagraph(string nextDialog, bool invokeFunctions = true)
{
currentDialog = nextDialog;
currentDialogSentenceIndex = 0;
if (functionDictionary.TryGetValue(currentDialog, out List<string> functionList))
if (invokeFunctions && functionDictionary.TryGetValue(currentDialog, out List<string> functionList))
{
functionList.ForEach(x => StoryInterpreters.FunctionInterpreter.Eval(x));
}
@@ -83,11 +83,8 @@ namespace Ichni.Story
{
currentFinalType = "None";
}
PlayDialog();
}
[Button("Test Play")]
public void PlayDialog()
{
if(currentDialog == "NULL")
@@ -95,11 +92,10 @@ namespace Ichni.Story
throw new Exception("Current dialog is NULL");
}
/*if (dialogInterface.dialogTextFrame.isPlayingSentence)
if (isPlayingChoice)
{
dialogInterface.dialogTextFrame.FinishSentence();
return;
}*/
}
if (dialogDictionary[currentDialog].Count > 0 && currentDialogSentenceIndex < dialogDictionary[currentDialog].Count)
{
@@ -107,7 +103,7 @@ namespace Ichni.Story
string interpretedContent = currentSentence.GetInterpretedContent();
dialogUIPage.textFrame.PlaySentence(currentSentence.characterName, interpretedContent);
dialogUIPage.dialogContentFrame.PlaySentence(currentSentence.characterName, interpretedContent);
currentDialogSentenceIndex++;
if (currentDialogSentenceIndex <= dialogDictionary[currentDialog].Count)
@@ -121,7 +117,7 @@ namespace Ichni.Story
if (currentFinalType == "Choice")
{
isPlayingChoice = true;
dialogUIPage.choiceFrame.PlayChoice(choiceDictionary[currentDialog]);
dialogUIPage.dialogContentFrame.PlayChoice(choiceDictionary[currentDialog]);
return;
}
@@ -140,21 +136,65 @@ namespace Ichni.Story
if (currentFinalType == "None" && currentDialogSentenceIndex >= dialogDictionary[currentDialog].Count)
{
dialogUIPage.FadeOut();
dialogUIPage.choiceFrame.gameObject.SetActive(false);
//currentDialogNPC.priorStoryTexts.Remove(dialogTextAsset);
//currentDialogNPC = null;
StoryManager.instance.storyline.currentBlock.state = StoryBlockState.Completed;
isPlayingDialog = false;
}
}
public void RevealDialog()
{
string finalType;
int max = 0;
do
{
finalType = currentFinalType;
currentDialogSentenceIndex = 0;
foreach (DialogSentence sentence in dialogDictionary[currentDialog])
{
string interpretedContent = sentence.GetInterpretedContent();
dialogUIPage.dialogContentFrame.PlaySentence(sentence.characterName, interpretedContent);
currentDialogSentenceIndex++;
}
if (finalType == "Choice")
{
ChoiceGroup choiceGroup = choiceDictionary[currentDialog];
int choiceIndex = GameSaveManager.instance.StorySaveModule.selectedChoices[choiceGroup.choiceName];
dialogUIPage.dialogContentFrame.SelectChoice(choiceGroup, choiceIndex);
}
if (finalType == "Condition")
{
foreach (var condition in conditionDictionary[currentDialog])
{
if (condition.GetConditionResult())
{
PlayNextDialogParagraph(condition.nextDialogName, false);
}
}
}
max++;
if (max > 1024)
{
throw new Exception("An infinite loop may detected in dialog parsing. Please check the dialog structure.");
}
} while (finalType != "None");
}
}
public partial class DialogManager
{
public void LoadDialog(List<TextAsset> dialogFiles)
public void LoadDialog(List<TextAsset> dialogFiles, out string firstHeader)
{
ClearDictionaries();
firstHeader = string.Empty;
dialogTextAssets = dialogFiles;
List<string> dialogLines = new List<string>();
@@ -165,20 +205,34 @@ namespace Ichni.Story
dialogLines.RemoveAll(line => line.Trim() == "");
dialogLines.ForEach(Debug.Log);
//dialogLines.ForEach(Debug.Log);
foreach (var line in from line in dialogLines
where !ParseHeader(line)
where !ParseChoiceModule(line)
where !ParseConditionModule(line)
where !ParseDialogSentence(line)
select line)
foreach (string line in dialogLines)
{
throw new Exception($"Invalid dialog line: {line}"); // 抛出异常,提示不合法的对话行
if (!ParseHeader(line))
{
if (!ParseChoiceModule(line))
{
if (!ParseConditionModule(line))
{
if (!ParseDialogSentence(line))
{
throw new Exception($"Invalid dialog line: {line}"); // 抛出异常,提示不合法的对话行
}
}
}
}
else
{
if (firstHeader == string.Empty)
{
firstHeader = currentDialog;
}
}
}
//dialogDictionary.RemoveWhere((header, sentences) => sentences == null || sentences.Count == 0);
choiceDictionary.RemoveWhere((header, choices) => choices == null || choices.Count == 0);
choiceDictionary.RemoveWhere((header, choices) => choices == null || choices.choices.Count == 0);
conditionDictionary.RemoveWhere((header, conditions) => conditions == null || conditions.Count == 0);
}
@@ -244,7 +298,7 @@ namespace Ichni.Story
currentLoadingDialog = dialogTitle.Replace("[", "").Replace("]", "");
dialogDictionary.Add(currentLoadingDialog, new List<DialogSentence>());
choiceDictionary.Add(currentLoadingDialog, new List<Choice>());
//choiceDictionary.Add(currentLoadingDialog, new ChoiceGroup("Error"));
conditionDictionary.Add(currentLoadingDialog, new List<Condition>());
if (currentDialog == "NULL")
@@ -278,7 +332,7 @@ namespace Ichni.Story
public bool ParseDialogSentence(string line)
{
//speakerName(emotion):sentence
//speakerName:sentence
string[] sentenceData;
if (line.Contains(":"))
@@ -291,30 +345,14 @@ namespace Ichni.Story
}
string character = sentenceData[0];
string speakerName = character;
string emotion = "Default";
if (character.Contains("("))
{
emotion = character.Split("(")[1].Replace(")", "");
speakerName = character.Split("(")[0];
}
else if (character.Contains(""))
{
emotion = character.Split("")[1].Replace("", "");
speakerName = character.Split("")[0];
}
DialogSentence dialogSentence = new DialogSentence
{
characterName = speakerName,
characterEmotion = emotion,
content = sentenceData[1]
characterName = speakerName.Trim(),
content = sentenceData[1].Trim()
};
dialogDictionary[currentLoadingDialog].Add(dialogSentence);
return true;
@@ -322,9 +360,9 @@ namespace Ichni.Story
public bool ParseChoiceModule(string line)
{
//$Choice{
//choiceText0(Hint0)->[nextDialogName0];
//choiceText1(Hint1)->[nextDialogName1];
//$Choice(ChoiceName){
//choiceText0->[nextDialogName0];
//choiceText1->[nextDialogName1];
//}
line = line.Trim();
@@ -333,23 +371,21 @@ namespace Ichni.Story
{
string[] choiceModuleData = line.Split('{');
List<Choice> choices = new List<Choice>();
string choiceName = choiceModuleData[0].Split('(')[1].Replace(")", "").Trim();
ChoiceGroup choiceGroup = new ChoiceGroup(choiceName);
string[] choiceData = choiceModuleData[1].Split(';');
for (var index = 0; index < choiceData.Length - 1; index++)
{
Choice choice = new Choice
{
choiceText = choiceData[index].Split("->")[0].Split("(")[0].Trim(),
hint = choiceData[index].Split("->")[0].Split("(")[1].Replace(")", "").Trim(),
nextDialogName = choiceData[index].Split("->[")[1].Replace("]", "").Trim(),
};
choiceData[index] = choiceData[index].Replace(" ", "").Replace("\n", "").Replace("\r", "").Trim();
string choiceText = choiceData[index].Split("->[")[0].Trim();
string nextDialogName = choiceData[index].Split("->[")[1].Replace("]", "").Trim();
choices.Add(choice);
choiceGroup.choices.Add(new Choice(choiceText, nextDialogName));
}
choiceDictionary[currentLoadingDialog] = choices;
choiceDictionary[currentLoadingDialog] = choiceGroup;
return true;
}

View File

@@ -10,19 +10,17 @@ namespace Ichni.Story
public string audioEventName;
public string characterName;
public string characterEmotion;
public DialogSentence()
{
}
public DialogSentence(string content, string audioEventName, string characterName, string characterEmotion)
public DialogSentence(string content, string audioEventName, string characterName)
{
this.content = content;
this.audioEventName = audioEventName;
this.characterName = characterName;
this.characterEmotion = characterEmotion;
}
/// <summary>
@@ -62,12 +60,29 @@ namespace Ichni.Story
return string.Join("", parts);
}
}
public class ChoiceGroup
{
public string choiceName;
public List<Choice> choices;
public ChoiceGroup(string choiceName)
{
this.choiceName = choiceName;
this.choices = new List<Choice>();
}
}
public class Choice
{
public string choiceText;
public string hint;
public string nextDialogName;
public Choice(string choiceText, string nextDialogName)
{
this.choiceText = choiceText;
this.nextDialogName = nextDialogName;
}
}
public class Condition

View File

@@ -1,6 +1,7 @@
using System;
using DynamicExpresso;
using Ichni.Story;
using Ichni.Story.UI;
using UnityEngine;
namespace Ichni.Story
@@ -21,23 +22,34 @@ namespace Ichni.Story
static void SetFunctionInterpreter()
{
FunctionInterpreter.SetFunction("GetGlobalVariable", new Func<string, int>(GetGlobalVariable));
FunctionInterpreter.SetFunction("SetVariable", new Action<string, int>(SetStoryVariable));
FunctionInterpreter.SetFunction("GetVariable", new Func<string, int>(GetStoryVariable));
FunctionInterpreter.SetFunction("GenerateDialogBlock", new Action<string>(GenerateDialogBlock));
FunctionInterpreter.SetFunction("GenerateSongBlock", new Action<string>(GenerateSongBlock));
}
static void SetConditionInterpreter()
{
ConditionInterpreter.SetFunction("GetGlobalVariable", new Func<string, int>(GetGlobalVariable));
ConditionInterpreter.SetFunction("GetVariable", new Func<string, int>(GetStoryVariable));
}
}
public static partial class StoryInterpreters
{
/// <summary>
/// 设置全局变量的值
/// </summary>
static void SetStoryVariable(string variableName, int value)
{
GameSaveManager.instance.StorySaveModule.storyVariables[variableName] = value;
}
/// <summary>
/// 获取全局变量的值
/// </summary>
static int GetGlobalVariable(string variableName)
static int GetStoryVariable(string variableName)
{
if (StoryManager.instance.globalVariables.TryGetValue(variableName, out int value))
if (GameSaveManager.instance.StorySaveModule.storyVariables.TryGetValue(variableName, out int value))
{
return value;
}
@@ -45,4 +57,23 @@ namespace Ichni.Story
throw new ArgumentException($"Global variable '{variableName}' not found.");
}
}
public static partial class StoryInterpreters
{
static void GenerateDialogBlock(string blockName)
{
StoryBlockUIBase currentBlock = StoryManager.instance.storyline.currentBlock;
Vector2 positionOffset = new Vector2(500, 0);
DialogBlockUI newBlock = StoryManager.instance.storyline.GenerateDialogBlock(blockName, currentBlock.blockPosition + positionOffset, StoryBlockState.Current);
StoryManager.instance.storyline.GenerateConnector(currentBlock, newBlock);
}
static void GenerateSongBlock(string blockName)
{
StoryBlockUIBase currentBlock = StoryManager.instance.storyline.currentBlock;
Vector2 positionOffset = new Vector2(500, 0);
SongBlockUI newBlock = StoryManager.instance.storyline.GenerateSongBlock(blockName, currentBlock.blockPosition + positionOffset, StoryBlockState.Current);
StoryManager.instance.storyline.GenerateConnector(currentBlock, newBlock);
}
}
}

View File

@@ -8,18 +8,32 @@ using UnityEngine.Serialization;
namespace Ichni.Story
{
public class StoryManager : SerializedMonoBehaviour
public partial class StoryManager : SerializedMonoBehaviour
{
public static StoryManager instance;
[FormerlySerializedAs("storylineDisplay")] public Storyline storyline;
public StoryUIPage storyUIPage;
public string currentChapter;
public Dictionary<string, StoryData> storyDatas;
public StorylineDisplay storylineDisplay;
[FormerlySerializedAs("StoryPage")] public StoryUIPage storyUIPage;
public Dictionary<string, int> globalVariables;
void Awake()
{
instance = this;
}
}
public partial class StoryManager
{
}
public enum StoryBlockState
{
Locked,
Current,
Completed
}
}

View File

@@ -1,16 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ichni.Story
{
public class StoryBlock
{
public string blockName; // 单元格标识名
public int rowIndex; // 剧情线编号
public int timeColumn; // 时间列索引
public bool isCompleted = false; // 完成状态
public int requiredCount; // 前序节点未完成计数
public StoryBlock nextBlock; // 下一个单元格
}
}

View File

@@ -1,11 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ichni.Story
{
public class StoryChapter : MonoBehaviour
{
public List<Storyline> storylines;
}
}

View File

@@ -1,28 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Ichni.Story
{
[CreateAssetMenu(fileName = "StoryData", menuName = "Ichni/Story/StoryData")]
public class StoryData : SerializedScriptableObject
{
public List<StoryBlockData> StoryBlockDatas; // 剧情单元格名称列表
public Dictionary<string, int> storyVariables; // 剧情变量字典键为变量名值为默认值如果Save中没有该变量则生成并使用默认值
}
[Serializable]
public class StoryBlockData
{
public string blockName;
public string blockID;
public StoryBlockData(string blockName, string blockID)
{
this.blockName = blockName;
this.blockID = blockID;
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 31a6a9bf0919951489cacfb86fb715c9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,106 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Serialization;
namespace Ichni.Story
{
[CreateAssetMenu(fileName = "StoryData", menuName = "Ichni/Story/StoryData")]
public class StoryData : SerializedScriptableObject
{
public List<DialogBlockData> dialogBlockDatas; // 剧情单元格名称列表
public List<SongBlockData> songBlockDatas; // 音乐单元格名称列表
public List<TutorialBlockData> tutorialBlockDatas; // 教程单元格名称列表
public List<InitialBlockData> initialBlocks; // 初始剧情单元格列表,包含所有初始剧情单元格的名称
public StoryBlockData GetDataByName(string blockName, out Type dataType)
{
foreach (var block in tutorialBlockDatas.Where(block => block.blockName == blockName))
{
dataType = typeof(TutorialBlockData);
return block;
}
foreach (var block in songBlockDatas.Where(block => block.blockName == blockName))
{
dataType = typeof(SongBlockData);
return block;
}
foreach (var block in dialogBlockDatas.Where(block => block.blockName == blockName))
{
dataType = typeof(DialogBlockData);
return block;
}
throw new ArgumentException($"No block found with name: {blockName}");
}
}
[InlineProperty]
[Serializable]
public class InitialBlockData
{
public string blockName;
public StoryBlockState initialState; // 初始状态
public Vector2 blockPosition; // 初始位置
public List<string> nextBlocks; // 下一步可选的剧情单元格名称列表
}
[InlineProperty]
[Serializable]
public class StoryBlockData
{
[FoldoutGroup("$blockName", true)]
public string blockName;
[FoldoutGroup("$blockName")]
public string blockID;
[FoldoutGroup("$blockName")]
public Vector2 blockSize;
}
[InlineProperty]
[Serializable]
public class TutorialBlockData : StoryBlockData
{
[FoldoutGroup("$blockName")]
public string tutorialName;
public TutorialBlockData()
{
this.blockSize = new Vector2(400, 200);
}
}
[InlineProperty]
[Serializable]
public class DialogBlockData : StoryBlockData
{
[FoldoutGroup("$blockName")]
public string dialogTitle;
public DialogBlockData()
{
this.blockSize = new Vector2(400, 200);
}
}
[InlineProperty]
[Serializable]
public class SongBlockData : StoryBlockData
{
[FoldoutGroup("$blockName")]
public string songName;
public SongBlockData()
{
this.blockSize = new Vector2(400, 200);
}
}
}

View File

@@ -1,61 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ab917c50249812429ebd44d6574497c, type: 3}
m_Name: StoryData_Chapter1
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: storyVariables
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Int32,
mscorlib]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: TestVariable
- Name: $v
Entry: 3
Data: 0
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
StoryBlockDatas:
- blockName:
blockID:
blockPosition: {x: 0, y: 0}
previousBlockIDs: []
nextBlockIDs: []

View File

@@ -4,26 +4,50 @@ using UnityEngine;
namespace Ichni.Story
{
public class StorySave : MonoBehaviour
{
public StoryBlockSave blockSave;
public StoryVariableSave variableSave;
}
public class StoryBlockSave
{
public enum StoryBlockState
public string blockName;
public Vector2 position;
public StoryBlockState state;
public StoryBlockSave(string blockName, Vector2 position, StoryBlockState state)
{
Locked,
Current,
Completed
this.blockName = blockName;
this.state = state;
this.position = position;
}
public Dictionary<string, StoryBlockState> storyBlockStates = new Dictionary<string, StoryBlockState>();
}
public class StoryVariableSave
public class TutorialBlockSave : StoryBlockSave
{
public Dictionary<string, int> variables = new Dictionary<string, int>();
public TutorialBlockSave(string blockName, Vector2 position, StoryBlockState state) : base(blockName, position, state)
{
}
}
public class DialogBlockSave : StoryBlockSave
{
public DialogBlockSave(string blockName, Vector2 position, StoryBlockState state) : base(blockName, position, state)
{
}
}
public class SongBlockSave : StoryBlockSave
{
public SongBlockSave(string blockName, Vector2 position, StoryBlockState state) : base(blockName, position, state)
{
}
}
public class BlockConnectorSave
{
public string startBlockName;
public string endBlockName;
public BlockConnectorSave(string startBlockName, string endBlockName)
{
this.startBlockName = startBlockName;
this.endBlockName = endBlockName;
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b2c23056fb0ab4b45a8db11866018794
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,18 @@
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()
{
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4634e1beb428cb341974c13687d09bfa
guid: b547d2cc398393a46a2a4c503f128cac
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.Story.UI;
using UnityEngine;
using UnityEngine.UI.Extensions;
@@ -8,6 +9,8 @@ namespace Ichni.Story
public class BlockConnectorUI : MonoBehaviour
{
public UILineRenderer curve;
public StoryBlockUIBase startBlock;
public StoryBlockUIBase endBlock;
public void SetCurve(Vector2 startPosition, Vector2 endPosition)
{
@@ -20,7 +23,7 @@ namespace Ichni.Story
curve.Points = new Vector2[]
{
startPosition,
mid1,
//mid1,
mid2,
endPosition
};

View File

@@ -0,0 +1,51 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Story.UI
{
public class DialogBlockUI : StoryBlockUIBase
{
public string blockTitle;
public TMP_Text titleText;
public Button button;
public List<ChoiceGroupUI> choiceGroups;
public void Initialize(string blockName, Vector2 position, Vector2 positionOffset,
Vector2 size, StoryBlockState state, string blockTitle)
{
base.Initialize(blockName, position, positionOffset, size, state);
this.blockTitle = blockTitle;
titleText.text = blockTitle;
button.onClick.AddListener(() =>
{
if(state == StoryBlockState.Locked) return;
StoryManager.instance.storyline.currentBlock = this;
if (state == StoryBlockState.Current)
{
DialogManager.instance.SetDialog(blockName);
DialogManager.instance.PlayNextDialogParagraph(DialogManager.instance.currentDialog);
}
else if (state == StoryBlockState.Completed)
{
DialogManager.instance.SetDialog(blockName);
DialogManager.instance.PlayNextDialogParagraph(DialogManager.instance.currentDialog, false);
DialogManager.instance.RevealDialog();
}
});
}
public override StoryBlockSave GetBlockSave()
{
return new DialogBlockSave(blockName, blockPosition, state);
}
}
}

View File

@@ -0,0 +1,78 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Ichni.Menu;
using Ichni.RhythmGame;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace Ichni.Story.UI
{
public class SongBlockUI : StoryBlockUIBase
{
public string songName;
public Button button;
public TMP_Text songNameText;
public RectTransform beatmapStatusMarkContainer;
public GameObject beatmapStatusMarkPrefab;
public void Initialize(string blockName, Vector2 position, Vector2 positionOffset,
Vector2 size, StoryBlockState state, string songName)
{
base.Initialize(blockName, position, positionOffset, size, state);
this.songName = songName;
songNameText.text = songName;
button.onClick.AddListener(() =>
{
MenuManager.instance.prepareUIPage.FadeIn();
});
SetUpBeatmapStatusMarks();
}
public override StoryBlockSave GetBlockSave()
{
return new SongBlockSave(blockName, blockPosition, state);
}
public void SetUpBeatmapStatusMarks()
{
SongStatusSave songStatusSave = GameSaveManager.instance.SongSaveModule.songStatusSaves[songName];
string chapter = StoryManager.instance.currentChapter;
ChapterSelectionUnit cpt = ChapterSelectionManager.instance.chapters.First(c => c.chapterIndex == chapter);
SongItemData song = cpt.songs.First(s => s.songName == this.songName);
foreach (DifficultyData difficulty in song.difficultyDataList)
{
foreach (KeyValuePair<string, BeatmapSave> beatmapSave in songStatusSave.beatmapSaves)
{
if (beatmapSave.Key == difficulty.difficultyName)
{
if (beatmapSave.Value.isAllPerfect)
{
GameObject mark = Instantiate(beatmapStatusMarkPrefab, beatmapStatusMarkContainer);
mark.GetComponent<Image>().color = difficulty.color;
mark.transform.GetChild(0).GetComponent<TMP_Text>().color = difficulty.color;
mark.transform.GetChild(0).GetComponent<TMP_Text>().text = "AP";
break;
}
if (beatmapSave.Value.isFullCombo)
{
GameObject mark = Instantiate(beatmapStatusMarkPrefab, beatmapStatusMarkContainer);
mark.GetComponent<Image>().color = difficulty.color;
mark.transform.GetChild(0).GetComponent<TMP_Text>().color = difficulty.color;
mark.transform.GetChild(0).GetComponent<TMP_Text>().text = "FC";
break;
}
}
}
}
}
}
}

View File

@@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Serialization;
namespace Ichni.Story.UI
{
public abstract class StoryBlockUIBase : MonoBehaviour
{
public string blockName;
public Vector2 blockPosition;
public StoryBlockState state;
public RectTransform blockRect;
public RectTransform inPort;
public RectTransform outPort;
protected void Initialize(string blockName, Vector2 position, Vector2 positionOffset, Vector2 size, StoryBlockState state)
{
this.blockName = blockName;
this.blockPosition = position;
this.state = state;
blockRect.anchoredPosition = position + positionOffset;
blockRect.sizeDelta = size;
}
public abstract StoryBlockSave GetBlockSave();
}
}

View File

@@ -0,0 +1,34 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace Ichni.Story.UI
{
public class TutorialBlockUI : StoryBlockUIBase
{
public Button button;
public string tutorialName;
public TMP_Text tutorialNameText;
public void Initialize(string blockName, Vector2 position, Vector2 positionOffset, Vector2 size, StoryBlockState state, string tutorialName)
{
base.Initialize(blockName, position, positionOffset, size, state);
this.tutorialName = tutorialName;
tutorialNameText.text = tutorialName;
button.onClick.AddListener(() =>
{
//DialogManager.instance.SetDialog(blockName);
});
}
public override StoryBlockSave GetBlockSave()
{
return new TutorialBlockSave(blockName, blockPosition, state);
}
}
}

View File

@@ -2,9 +2,9 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ichni.Story
namespace Ichni.Story.UI
{
public class Storyline : MonoBehaviour
public class ChoiceButtonUI : MonoBehaviour
{
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 90f34f59ff260c44796d71c51b7c0ee6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,45 @@
using System.Collections;
using System.Collections.Generic;
using I2.Loc;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Story.UI
{
public class ChoiceGroupUI : MonoBehaviour
{
public GameObject choiceButtonPrefab;
public RectTransform container;
public List<Button> choiceButtonList;
public string choiceName;
public int choiceIndex;
public void Initialize(ChoiceGroup choiceGroup)
{
this.choiceName = choiceGroup.choiceName;
choiceButtonList = new List<Button>();
for (var index = 0; index < choiceGroup.choices.Count; index++)
{
var choice = choiceGroup.choices[index];
int cIndex = index; // Capture the current index for the listener
GameObject choiceButton = Instantiate(choiceButtonPrefab, container);
choiceButton.GetComponentInChildren<Localize>().SetTerm(StoryManager.instance.currentChapter + "/" + choice.choiceText);
choiceButton.GetComponent<Button>().onClick.AddListener(() =>
{
DialogManager.instance.PlayNextDialogParagraph(choice.nextDialogName);
DialogManager.instance.isPlayingChoice = false;
choiceButtonList.ForEach(b => b.interactable = false);
DialogManager.instance.PlayDialog();
this.choiceIndex = cIndex;
GameSaveManager.instance.StorySaveModule.selectedChoices[choiceName] = cIndex;
});
choiceButtonList.Add(choiceButton.GetComponent<Button>());
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a653477cd0de8794b810214793b04cc9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,81 @@
using System;
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using DG.Tweening.Core;
using DG.Tweening.Plugins.Options;
using I2.Loc;
using Ichni.Story.UI;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace Ichni.Story
{
public class DialogContentFrame : MonoBehaviour, IPointerClickHandler
{
public GameObject textPrefab;
public GameObject choiceGroupPrefab;
public RectTransform dialogContentContainer;
public List<DialogTextUI> dialogTexts;
public List<ChoiceGroupUI> choiceGroups;
public void PlaySentence(string speakerName, string content)
{
DialogTextUI dialogTextUI = Instantiate(textPrefab, dialogContentContainer).GetComponent<DialogTextUI>();
dialogTextUI.speakerNameText.SetTerm("Characters/" + speakerName);
dialogTextUI.contentText.SetTerm(StoryManager.instance.currentChapter +"/" +content);
dialogTexts.Add(dialogTextUI);
}
public ChoiceGroupUI PlayChoice(ChoiceGroup choiceGroup)
{
ChoiceGroupUI choiceGroupUI = Instantiate(choiceGroupPrefab, dialogContentContainer).GetComponent<ChoiceGroupUI>();
choiceGroupUI.Initialize(choiceGroup);
choiceGroups.Add(choiceGroupUI);
return choiceGroupUI;
}
public void SelectChoice(ChoiceGroup choiceGroup, int index)
{
ChoiceGroupUI choiceGroupUI = PlayChoice(choiceGroup);
for (var buttonIndex = 0; buttonIndex < choiceGroupUI.choiceButtonList.Count; buttonIndex++)
{
Button b = choiceGroupUI.choiceButtonList[buttonIndex];
b.interactable = false;
if (buttonIndex == index)
{
b.image.color = Color.red;
}
}
DialogManager.instance.PlayNextDialogParagraph(choiceGroup.choices[index].nextDialogName, false);
}
public void ClearAllSentences()
{
foreach (DialogTextUI dialogText in dialogTexts)
{
Destroy(dialogText.gameObject);
}
foreach (ChoiceGroupUI choiceGroup in choiceGroups)
{
Destroy(choiceGroup.gameObject);
}
dialogTexts.Clear();
choiceGroups.Clear();
}
public void OnPointerClick(PointerEventData eventData)
{
DialogManager.instance.PlayDialog();
}
}
}

View File

@@ -0,0 +1,16 @@
using System.Collections;
using System.Collections.Generic;
using I2.Loc;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Story.UI
{
public class DialogTextUI : MonoBehaviour
{
public Image background;
public Localize speakerNameText;
public Localize contentText;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 831ccff3dc06bfc4884663d623af866d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -10,7 +10,6 @@ namespace Ichni.Story.UI
{
public class DialogUIPage : UIPageBase
{
public TextFrame textFrame;
public ChoiceFrame choiceFrame;
public DialogContentFrame dialogContentFrame;
}
}

View File

@@ -0,0 +1,279 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Serialization;
namespace Ichni.Story.UI
{
public partial class Storyline : MonoBehaviour
{
[Header("UI References")]
public RectTransform content; // Content of ScrollRect
[FormerlySerializedAs("textBlockPrefab")] public GameObject dialogBlockPrefab; // Prefab of UI Node
public GameObject musicBlockPrefab;
public GameObject tutorialBlockPrefab;
public GameObject connectionCurvePrefab; // Prefab of connection curve
[Header("Layout Settings")]
public float marginLeft = 50f; // additive space on the left
public float marginRight = 50f; // Extra space on the right
public float marginTop = 50f; // Extra space on the top
public float marginBottom = 50f; // Extra space on the bottom
public RectTransform connectionContainer;
public StoryBlockUIBase currentBlock;
public List<StoryBlockUIBase> storyBlocks;
public List<DialogBlockUI> dialogBlocks;
public List<SongBlockUI> songBlocks;
public List<TutorialBlockUI> tutorialBlocks;
public List<BlockConnectorUI> connectors;
private void Start()
{
storyBlocks = new List<StoryBlockUIBase>();
dialogBlocks = new List<DialogBlockUI>();
songBlocks = new List<SongBlockUI>();
tutorialBlocks = new List<TutorialBlockUI>();
connectors = new List<BlockConnectorUI>();
//TutorialBlockUI t0 = GenerateTutorialBlock(new Vector2(200, -400), "ZakoCurse 0");
//TextBlockUI b1 = GenerateTextBlock("Departure_P1_A", new Vector2(1000, -400), StoryBlockState.Current);
SetUpStoryline(StoryManager.instance.currentChapter);
/*GenerateTextBlock("Departure_P1_A", new Vector2(1000, -400), StoryBlockState.Current);
GenerateTextBlock("Departure_P2_A", new Vector2(1500, -400), StoryBlockState.Current);
GenerateConnector("Departure_P1_A", "Departure_P2_A");*/
SetUpBackground();
connectionContainer.SetParent(content);
connectionContainer.SetAsFirstSibling();
}
}
public partial class Storyline
{
public TutorialBlockUI GenerateTutorialBlock(string blockName, Vector2 position, StoryBlockState state)
{
TutorialBlockUI block = Instantiate(tutorialBlockPrefab, content).GetComponent<TutorialBlockUI>();
StoryData storyData = StoryManager.instance.storyDatas[StoryManager.instance.currentChapter];
TutorialBlockData blockData = storyData.tutorialBlockDatas.FirstOrDefault(data => data.blockName == blockName);
if (blockData == null) throw new KeyNotFoundException("There is no block with name " + blockName);
block.Initialize(blockData.blockName, position, new Vector2(marginLeft, 0), blockData.blockSize, state, blockData.tutorialName);
storyBlocks.Add(block);
tutorialBlocks.Add(block);
return block;
}
public DialogBlockUI GenerateDialogBlock(string blockName, Vector2 position, StoryBlockState state)
{
DialogBlockUI block = Instantiate(dialogBlockPrefab, content).GetComponent<DialogBlockUI>();
StoryData storyData = StoryManager.instance.storyDatas[StoryManager.instance.currentChapter];
DialogBlockData blockData = storyData.dialogBlockDatas.FirstOrDefault(data => data.blockName == blockName);
if (blockData == null) throw new KeyNotFoundException("There is no block with name " + blockName);
block.Initialize(blockData.blockName, position, new Vector2(marginLeft, 0), blockData.blockSize, state, blockData.dialogTitle);
storyBlocks.Add(block);
dialogBlocks.Add(block);
return block;
}
public SongBlockUI GenerateSongBlock(string blockName, Vector2 position, StoryBlockState state)
{
SongBlockUI block = Instantiate(musicBlockPrefab, content).GetComponent<SongBlockUI>();
StoryData storyData = StoryManager.instance.storyDatas[StoryManager.instance.currentChapter];
SongBlockData blockData = storyData.songBlockDatas.FirstOrDefault(data => data.blockName == blockName);
if (blockData == null) throw new KeyNotFoundException("There is no block with name " + blockName);
block.Initialize(blockName,position,new Vector2(marginLeft, 0), blockData.blockSize, state, blockData.songName);
storyBlocks.Add(block);
songBlocks.Add(block);
return block;
}
public void GenerateConnector(StoryBlockUIBase startBlock, StoryBlockUIBase endBlock)
{
BlockConnectorUI connector = Instantiate(connectionCurvePrefab, connectionContainer).GetComponent<BlockConnectorUI>();
Vector2 startPosition = SpaceConverter.GetLocalUIPosition(startBlock.outPort, GetComponent<RectTransform>());
Vector2 endPosition = SpaceConverter.GetLocalUIPosition(endBlock.inPort, GetComponent<RectTransform>());
connector.startBlock = startBlock;
connector.endBlock = endBlock;
connector.SetCurve(startPosition, endPosition);
connectors.Add(connector);
}
public void GenerateConnector(string startBlockName, string endBlockName)
{
StoryBlockUIBase startBlock = storyBlocks.FirstOrDefault(block => block.blockName == startBlockName);
StoryBlockUIBase endBlock = storyBlocks.FirstOrDefault(block => block.blockName == endBlockName);
GenerateConnector(startBlock, endBlock);
}
}
public partial class Storyline
{
private void ClearStoryline()
{
foreach (var block in storyBlocks)
{
Destroy(block.gameObject);
}
storyBlocks.Clear();
dialogBlocks.Clear();
songBlocks.Clear();
tutorialBlocks.Clear();
foreach (var connector in connectors)
{
Destroy(connector.gameObject);
}
connectors.Clear();
content.sizeDelta = Vector2.zero;
}
private void SetUpBackground()
{
float maxRight = float.MinValue;
foreach (var block in storyBlocks)
{
float rightEdge = block.blockRect.anchoredPosition.x + block.blockRect.sizeDelta.x * 0.5f;
if (rightEdge > maxRight)
{
maxRight = rightEdge;
}
}
maxRight += marginRight;
if (maxRight < 2560f)
{
maxRight = 2560f;
}
float lowY = float.MaxValue;
foreach (var block in storyBlocks)
{
float bottomEdge = block.blockRect.anchoredPosition.y - block.blockRect.sizeDelta.y * 0.5f;
if (bottomEdge < lowY)
{
lowY = bottomEdge;
}
}
float maxHeight = Mathf.Abs(lowY) + marginTop + marginBottom;
if (maxHeight < 1440f)
{
maxHeight = 1440f;
}
content.sizeDelta = new Vector2(maxRight, maxHeight);
}
}
public partial class Storyline
{
public void SetUpStoryline(string chapterName)
{
GameSaveManager.instance.StorySaveModule.LoadStoryline(chapterName);
foreach (var blockSave in GameSaveManager.instance.StorySaveModule.tutorialBlockSaves[chapterName])
{
GenerateTutorialBlock(blockSave.blockName, blockSave.position, blockSave.state);
}
foreach (var blockSave in GameSaveManager.instance.StorySaveModule.songBlockSaves[chapterName])
{
GenerateSongBlock(blockSave.blockName, blockSave.position, blockSave.state);
}
foreach (var blockSave in GameSaveManager.instance.StorySaveModule.dialogBlockSaves[chapterName])
{
GenerateDialogBlock(blockSave.blockName, blockSave.position, blockSave.state);
}
foreach (var connectorSave in GameSaveManager.instance.StorySaveModule.connectorSaves[chapterName])
{
GenerateConnector(connectorSave.startBlockName, connectorSave.endBlockName);
}
}
[Button]
public void SaveStoryline(string chapterName)
{
List<TutorialBlockSave> tutorialBlockSaves =
tutorialBlocks.Select(block => block.GetBlockSave() as TutorialBlockSave).ToList();
List<SongBlockSave> songBlockSaves =
songBlocks.Select(block => block.GetBlockSave() as SongBlockSave).ToList();
List<DialogBlockSave> dialogBlockSaves =
dialogBlocks.Select(block => block.GetBlockSave() as DialogBlockSave).ToList();
List<BlockConnectorSave> connectorSaves =
connectors.Select(connector => new BlockConnectorSave(connector.startBlock.blockName, connector.endBlock.blockName)).ToList();
GameSaveManager.instance.StorySaveModule.SaveStoryline(
chapterName, tutorialBlockSaves, songBlockSaves, dialogBlockSaves, connectorSaves);
}
[Button]
public void ResetStory()
{
ClearStoryline();
StoryData storyData = StoryManager.instance.storyDatas[StoryManager.instance.currentChapter];
List<InitialBlockData> initialBlocks = storyData.initialBlocks;
foreach (InitialBlockData blockData in initialBlocks)
{
storyData.GetDataByName(blockData.blockName, out Type dataType);
if (dataType == typeof(TutorialBlockData))
{
GenerateTutorialBlock(blockData.blockName, blockData.blockPosition, blockData.initialState);
}
else if (dataType == typeof(DialogBlockData))
{
GenerateDialogBlock(blockData.blockName, blockData.blockPosition, blockData.initialState);
}
else if (dataType == typeof(SongBlockData))
{
GenerateSongBlock(blockData.blockName, blockData.blockPosition, blockData.initialState);
}
}
foreach (InitialBlockData blockData in initialBlocks)
{
foreach (string nextBlockName in blockData.nextBlocks)
{
GenerateConnector(blockData.blockName, nextBlockName);
}
}
SetUpBackground();
SaveStoryline(StoryManager.instance.currentChapter);
}
}
}

View File

@@ -1,66 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using CsvHelper;
using CsvHelper.Configuration;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Ichni.Story
{
public class StorylineSheetReader : SerializedMonoBehaviour
{
public TextAsset csvFile; // 直接拖拽到 Inspector
public List<StoryBlock> allNodes;
void Awake() {
if (csvFile == null) {
Debug.LogError("请在 Inspector 中指定 CSV TextAsset 文件。");
return;
}
allNodes = new List<StoryBlock>();
using (var reader = new StringReader(csvFile.text)) {
var config = new CsvConfiguration(CultureInfo.InvariantCulture) {
HasHeaderRecord = false,
IgnoreBlankLines = true
};
using (var csv = new CsvReader(reader, config)) {
int rowIndex = 0;
while (csv.Read()) {
for (int col = 0; csv.TryGetField<string>(col, out var cell); col++) {
if (!string.IsNullOrWhiteSpace(cell)) {
allNodes.Add(new StoryBlock() {
blockName = cell.Trim(),
rowIndex = rowIndex,
timeColumn = col
});
}
}
rowIndex++;
}
}
}
BuildDependencies();
}
void BuildDependencies() {
var groups = allNodes.GroupBy(n => n.rowIndex);
foreach (var group in groups) {
var list = group.OrderBy(n => n.timeColumn).ToList();
for (int i = 1; i < list.Count; i++) {
var prev = list[i - 1];
var curr = list[i];
prev.nextBlock = curr; // 设置前一个单元格的下一个单元格
curr.requiredCount++;
}
}
}
}
}

View File

@@ -1,3 +0,0 @@
Tutorial,L1-P1,L1-P2,L1-P3,L1-P4
,,L2-P1,L2-P2,
,,,,L3-P1
1 Tutorial L1-P1 L1-P2 L1-P3 L1-P4
2 L2-P1 L2-P2
3 L3-P1

Some files were not shown because too many files have changed in this diff Show More