# Conflicts:
#	ProjectSettings/EditorBuildSettings.asset
This commit is contained in:
dldydtn9755-crypto
2026-06-26 19:01:29 +09:00
59 changed files with 6683 additions and 136 deletions

Binary file not shown.

View File

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

View File

@@ -0,0 +1,408 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 61
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 790b4d75d92f4b0984310a268dbd952f, type: 3}
m_Name: Fairy_fishRoom_Area1
m_EditorClassIdentifier: Unity.GraphToolkit.Editor::Unity.GraphToolkit.Editor.Implementation.GraphObjectImp
m_GraphModel:
rid: 6595524353106116630
references:
version: 2
RefIds:
- rid: -2
type: {class: , ns: , asm: }
- rid: 1414123175413022855
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 897520841189697386
m_Value1: 6607104733771082257
m_HashGuid:
serializedVersion: 2
Hash: 6a279f2573a2740c112a3adabf26b15b
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_NodeModelHashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_UniqueId: Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title:
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 6595524353106116630
type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 13819889836145151562
m_Value1: 2645381255326452780
m_HashGuid:
serializedVersion: 2
Hash: 4a8e76c6951ccabf2ccc35633c48b624
m_Name: Fairy_fishRoom_Area1
m_GraphNodeModels:
- rid: 6595524353106116633
- rid: 6595524353106116635
- rid: 6595524353106116646
m_GraphWireModels:
- rid: 6595524353106116636
- rid: 1414123175413022855
m_GraphStickyNoteModels: []
m_GraphPlacematModels: []
m_GraphVariableModels: []
m_GraphPortalModels: []
m_SectionModels:
- rid: 6595524353106116631
m_LocalSubgraphs: []
m_LastKnownBounds:
serializedVersion: 2
x: 222
y: 84
width: 923
height: 386
m_GraphElementMetaData:
- m_Guid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_HashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_Category: 0
m_Index: 0
- m_Guid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_HashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_Category: 0
m_Index: 1
- m_Guid:
m_Value0: 5269650743910428719
m_Value1: 257959026697812224
m_HashGuid:
serializedVersion: 2
Hash: 2f7027896e8f214900b9ed385e749403
m_Category: 2
m_Index: 0
- m_Guid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_HashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_Category: 0
m_Index: 2
- m_Guid:
m_Value0: 897520841189697386
m_Value1: 6607104733771082257
m_HashGuid:
serializedVersion: 2
Hash: 6a279f2573a2740c112a3adabf26b15b
m_Category: 2
m_Index: 1
m_EntryPoint:
rid: 6595524353106116633
m_Graph:
rid: 6595524353106116632
- rid: 6595524353106116631
type: {class: SectionModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 13482299192089173763
m_Value1: 8100932157345530803
m_HashGuid:
serializedVersion: 2
Hash: 03df02d4aebf1abbb3831e64e04a6c70
m_Version: 2
m_Items: []
m_Title:
- rid: 6595524353106116632
type: {class: DialogGraph, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116633
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_HashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_Version: 2
m_Position: {x: 222.2174, y: 116.434784}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList: []
m_ValueList: []
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116634
- rid: 6595524353106116634
type: {class: DialogStartNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116635
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_HashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_Version: 2
m_Position: {x: 431.77588, y: 86.04323}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- Speaker
- TalkText
- Gesture
- Expression
- Voice
- LineDuration
- LookAtPlayer
- WaitForInput
- __option_EventKey
m_ValueList:
- rid: 6595524353106116637
- rid: 6595524353106116638
- rid: 6595524353106116639
- rid: 6595524353106116640
- rid: 6595524353106116641
- rid: 6595524353106116642
- rid: 6595524353106116643
- rid: 6595524353106116644
- rid: 6595524374970761386
- rid: 6595524374970761398
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116645
- rid: 6595524353106116636
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 5269650743910428719
m_Value1: 257959026697812224
m_HashGuid:
serializedVersion: 2
Hash: 2f7027896e8f214900b9ed385e749403
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_UniqueId: Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title:
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_NodeModelHashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 6595524353106116637
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524353106116638
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: 816884903bb3c4d478520286d768c304, type: 2}
- rid: 6595524353106116639
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: "\uC774\uACF3\uC740 \uAE30\uBB18\uD55C \uB09A\uC2DC\uD130\uC57C."
- rid: 6595524353106116640
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116641
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116642
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116643
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 5
- rid: 6595524353106116644
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 1
- rid: 6595524353106116645
type: {class: DialogLineNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116646
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_HashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_Version: 2
m_Position: {x: 806, y: 84}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- Speaker
- TalkText
- Gesture
- Expression
- Voice
- LineDuration
- LookAtPlayer
- WaitForInput
- __option_EventKey
m_ValueList:
- rid: 6595524353106116648
- rid: 6595524353106116649
- rid: 6595524353106116650
- rid: 6595524353106116651
- rid: 6595524353106116652
- rid: 6595524353106116653
- rid: 6595524353106116654
- rid: 6595524353106116655
- rid: 6595524374970761387
- rid: 6595524374970761399
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116656
- rid: 6595524353106116648
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524353106116649
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: 816884903bb3c4d478520286d768c304, type: 2}
- rid: 6595524353106116650
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: "\uAE30\uC5B5\uC758 \uC870\uAC01\uC744 \uB09A\uC544\uC57C\uD574."
- rid: 6595524353106116651
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116652
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116653
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116654
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 5
- rid: 6595524353106116655
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524353106116656
type: {class: DialogLineNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524374970761386
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524374970761387
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524374970761398
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
- rid: 6595524374970761399
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: b44d9587db51ade41a11fc53f47dd1a7
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 2ae5ca89bbed445479d9023586f0c041, type: 3}

View File

@@ -0,0 +1,737 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 61
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 790b4d75d92f4b0984310a268dbd952f, type: 3}
m_Name: Fairy_fishRoom_ClearArea
m_EditorClassIdentifier: Unity.GraphToolkit.Editor::Unity.GraphToolkit.Editor.Implementation.GraphObjectImp
m_GraphModel:
rid: 6595524353106116630
references:
version: 2
RefIds:
- rid: -2
type: {class: , ns: , asm: }
- rid: 6595524353106116630
type: {class: GraphModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 13819889836145151562
m_Value1: 2645381255326452780
m_HashGuid:
serializedVersion: 2
Hash: 4a8e76c6951ccabf2ccc35633c48b624
m_Name: Fairy_fishRoom_ClearArea
m_GraphNodeModels:
- rid: 6595524353106116633
- rid: 6595524353106116635
- rid: 6595524353106116646
- rid: 6595524374970761358
- rid: 6595524374970761369
m_GraphWireModels:
- rid: 6595524353106116636
- rid: 6595524353106116647
- rid: 6595524374970761359
- rid: 6595524374970761370
m_GraphStickyNoteModels: []
m_GraphPlacematModels: []
m_GraphVariableModels: []
m_GraphPortalModels: []
m_SectionModels:
- rid: 6595524353106116631
m_LocalSubgraphs: []
m_LastKnownBounds:
serializedVersion: 2
x: 224
y: -42
width: 1430
height: 883
m_GraphElementMetaData:
- m_Guid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_HashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_Category: 0
m_Index: 0
- m_Guid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_HashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_Category: 0
m_Index: 1
- m_Guid:
m_Value0: 5269650743910428719
m_Value1: 257959026697812224
m_HashGuid:
serializedVersion: 2
Hash: 2f7027896e8f214900b9ed385e749403
m_Category: 2
m_Index: 0
- m_Guid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_HashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_Category: 0
m_Index: 2
- m_Guid:
m_Value0: 13678802302849805841
m_Value1: 5869810211712229956
m_HashGuid:
serializedVersion: 2
Hash: 116e289638ded4bd446211b849c17551
m_Category: 2
m_Index: 1
- m_Guid:
m_Value0: 6309969824669224220
m_Value1: 11825358839457157206
m_HashGuid:
serializedVersion: 2
Hash: 1ccdd7b61f84915756905e07361d1ca4
m_Category: 0
m_Index: 3
- m_Guid:
m_Value0: 3397748348636220684
m_Value1: 10317322138978035326
m_HashGuid:
serializedVersion: 2
Hash: 0ccda1fc1e3a272f7e260f67d27d2e8f
m_Category: 2
m_Index: 2
- m_Guid:
m_Value0: 14492247198202050630
m_Value1: 8595945445982712313
m_HashGuid:
serializedVersion: 2
Hash: 46b8fb250bce1ec9f9b16f00d7ee4a77
m_Category: 0
m_Index: 4
- m_Guid:
m_Value0: 4733159566535984953
m_Value1: 16169765346515963957
m_HashGuid:
serializedVersion: 2
Hash: 39879e648c8faf413550815ce98b66e0
m_Category: 2
m_Index: 3
m_EntryPoint:
rid: 6595524353106116633
m_Graph:
rid: 6595524353106116632
- rid: 6595524353106116631
type: {class: SectionModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 13482299192089173763
m_Value1: 8100932157345530803
m_HashGuid:
serializedVersion: 2
Hash: 03df02d4aebf1abbb3831e64e04a6c70
m_Version: 2
m_Items: []
m_Title:
- rid: 6595524353106116632
type: {class: DialogGraph, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116633
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_HashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_Version: 2
m_Position: {x: 224, y: 117}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList: []
m_ValueList: []
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116634
- rid: 6595524353106116634
type: {class: DialogStartNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116635
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_HashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_Version: 2
m_Position: {x: 433, y: 87}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- Speaker
- TalkText
- Gesture
- Expression
- Voice
- LineDuration
- LookAtPlayer
- WaitForInput
- __option_EventKey
m_ValueList:
- rid: 6595524353106116637
- rid: 6595524353106116638
- rid: 6595524353106116639
- rid: 6595524353106116640
- rid: 6595524353106116641
- rid: 6595524353106116642
- rid: 6595524353106116643
- rid: 6595524353106116644
- rid: 6595524374970761380
- rid: 6595524374970761406
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116645
- rid: 6595524353106116636
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 5269650743910428719
m_Value1: 257959026697812224
m_HashGuid:
serializedVersion: 2
Hash: 2f7027896e8f214900b9ed385e749403
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 14845512388065122572
m_Value1: 17804268460506216482
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 0c5948afdcda05ce22f82972d57715f7
m_UniqueId: Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title:
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_NodeModelHashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 6595524353106116637
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524353106116638
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: 816884903bb3c4d478520286d768c304, type: 2}
- rid: 6595524353106116639
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: "\uB2E4\uC74C \uACF5\uAC04\uC73C\uB85C \uAC08 \uC218 \uC788\uC5B4."
- rid: 6595524353106116640
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116641
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116642
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116643
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 5
- rid: 6595524353106116644
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 1
- rid: 6595524353106116645
type: {class: DialogLineNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524353106116646
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_HashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_Version: 2
m_Position: {x: 808.30005, y: 85.15}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- Speaker
- TalkText
- Gesture
- Expression
- Voice
- LineDuration
- LookAtPlayer
- ChoiceQuestion
- Choice0Text
- Choice1Text
- WaitForInput
- __option_EventKey
- Choice0Code
- Choice1Code
m_ValueList:
- rid: 6595524353106116648
- rid: 6595524353106116649
- rid: 6595524353106116650
- rid: 6595524353106116651
- rid: 6595524353106116652
- rid: 6595524353106116653
- rid: 6595524353106116654
- rid: 6595524353106116655
- rid: 6595524374970761341
- rid: 6595524374970761342
- rid: 6595524374970761343
- rid: 6595524374970761381
- rid: 6595524374970761407
- rid: 6595524374970761412
- rid: 6595524374970761413
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524353106116656
- rid: 6595524353106116647
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 13678802302849805841
m_Value1: 5869810211712229956
m_HashGuid:
serializedVersion: 2
Hash: 116e289638ded4bd446211b849c17551
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 7989713923298697385
m_Value1: 15604869423937906234
m_NodeModelHashGuid:
serializedVersion: 2
Hash: a920365f7b2ae16e3a662c1c10a28fd8
m_UniqueId: Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title:
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 6595524353106116648
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 2
- rid: 6595524353106116649
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: 816884903bb3c4d478520286d768c304, type: 2}
- rid: 6595524353106116650
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: "\uC5B4\uB290 \uACF5\uAC04\uC73C\uB85C \uC774\uB3D9\uD560\uB798?"
- rid: 6595524353106116651
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116652
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116653
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524353106116654
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 5
- rid: 6595524353106116655
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524353106116656
type: {class: DialogLineNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524374970761341
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value:
- rid: 6595524374970761342
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: '{SpaceSceneName1}'
- rid: 6595524374970761343
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: '{SpaceSceneName2}'
- rid: 6595524374970761358
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 6309969824669224220
m_Value1: 11825358839457157206
m_HashGuid:
serializedVersion: 2
Hash: 1ccdd7b61f84915756905e07361d1ca4
m_Version: 2
m_Position: {x: 1312.1732, y: -41.937325}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- Speaker
- TalkText
- Gesture
- Expression
- Voice
- LineDuration
- LookAtPlayer
- WaitForInput
- __option_EventKey
m_ValueList:
- rid: 6595524374970761360
- rid: 6595524374970761361
- rid: 6595524374970761362
- rid: 6595524374970761363
- rid: 6595524374970761364
- rid: 6595524374970761365
- rid: 6595524374970761366
- rid: 6595524374970761367
- rid: 6595524374970761382
- rid: 6595524374970761408
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524374970761368
- rid: 6595524374970761359
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 3397748348636220684
m_Value1: 10317322138978035326
m_HashGuid:
serializedVersion: 2
Hash: 0ccda1fc1e3a272f7e260f67d27d2e8f
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_UniqueId: Choice0Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title: "Choice 1 \u2192"
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 6309969824669224220
m_Value1: 11825358839457157206
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 1ccdd7b61f84915756905e07361d1ca4
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 6595524374970761360
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524374970761361
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: 816884903bb3c4d478520286d768c304, type: 2}
- rid: 6595524374970761362
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: "\uC88B\uC544! {SpaceSceneName1}\uB85C \uC774\uB3D9\uD558\uC790."
- rid: 6595524374970761363
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524374970761364
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524374970761365
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524374970761366
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 5
- rid: 6595524374970761367
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524374970761368
type: {class: DialogLineNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524374970761369
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: Unity.GraphToolkit.Editor}
data:
m_Guid:
m_Value0: 14492247198202050630
m_Value1: 8595945445982712313
m_HashGuid:
serializedVersion: 2
Hash: 46b8fb250bce1ec9f9b16f00d7ee4a77
m_Version: 2
m_Position: {x: 1314.8867, y: 457.07712}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- Speaker
- TalkText
- Gesture
- Expression
- Voice
- LineDuration
- LookAtPlayer
- WaitForInput
- __option_EventKey
m_ValueList:
- rid: 6595524374970761371
- rid: 6595524374970761372
- rid: 6595524374970761373
- rid: 6595524374970761374
- rid: 6595524374970761375
- rid: 6595524374970761376
- rid: 6595524374970761377
- rid: 6595524374970761378
- rid: 6595524374970761383
- rid: 6595524374970761409
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 6595524374970761379
- rid: 6595524374970761370
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Guid:
m_Value0: 4733159566535984953
m_Value1: 16169765346515963957
m_HashGuid:
serializedVersion: 2
Hash: 39879e648c8faf413550815ce98b66e0
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 7697830479301862552
m_Value1: 13043115897654624489
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 9864f63b0930d46ae940f4b3cd7402b5
m_UniqueId: Choice1Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title: "Choice 2 \u2192"
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 14492247198202050630
m_Value1: 8595945445982712313
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 46b8fb250bce1ec9f9b16f00d7ee4a77
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 6595524374970761371
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524374970761372
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 11400000, guid: 816884903bb3c4d478520286d768c304, type: 2}
- rid: 6595524374970761373
type: {class: 'Constant`1[[WhaleAdventure.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
Value: "\uC88B\uC544! {SpaceSceneName2}\uB85C \uC774\uB3D9\uD558\uC790."
- rid: 6595524374970761374
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524374970761375
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524374970761376
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: {fileID: 0}
- rid: 6595524374970761377
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 5
- rid: 6595524374970761378
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524374970761379
type: {class: DialogLineNode, ns: WhaleAdventure.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 6595524374970761380
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524374970761381
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 0
- rid: 6595524374970761382
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 1
- rid: 6595524374970761383
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 1
- rid: 6595524374970761406
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
- rid: 6595524374970761407
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value:
- rid: 6595524374970761408
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: OpenDoor1
- rid: 6595524374970761409
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: OpenDoor2
- rid: 6595524374970761412
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 1
- rid: 6595524374970761413
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: Unity.GraphToolkit.Internal.Editor}
data:
m_Value: 2

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: e6f745d905312c14699dd74c40a28852
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 2ae5ca89bbed445479d9023586f0c041, type: 3}

View File

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

Binary file not shown.

View File

@@ -0,0 +1,28 @@
fileFormatVersion: 2
guid: b205275e9229b8b40bcfb446b9fa4cb4
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 715df9372183c47e389bb6e19fbc3b52, type: 3}
editorImportSettings:
generateSecondaryUVSet: 0
importSettings:
nodeNameMethod: 1
animationMethod: 2
generateMipMaps: 1
texturesReadable: 0
defaultMinFilterMode: 9729
defaultMagFilterMode: 9729
anisotropicFilterLevel: 1
instantiationSettings:
mask: -1
layer: 0
skinUpdateWhenOffscreen: 1
lightIntensityFactor: 1
sceneObjectCreation: 2
assetDependencies: []
reportItems: []

View File

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

Binary file not shown.

View File

@@ -0,0 +1,110 @@
fileFormatVersion: 2
guid: 3f6af38d640059d49af824ba9ba06e73
ModelImporter:
serializedVersion: 24200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections; using System.Collections;
using UnityEngine; using UnityEngine;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
@@ -11,12 +12,57 @@ public enum ResultType
Miss Miss
} }
public enum FishingControlMode
{
TimingGauge,
SimpleReel
}
[Header("Auto Bind")]
[Tooltip("현재 만든 Prefab 구조 기준으로 비어 있는 참조를 자동 연결합니다.")]
[SerializeField] private bool autoBindMissingReferences = true;
[Header("References")] [Header("References")]
[Tooltip("낚시 UI 전체 루트입니다. UI를 자동으로 켜고 끄고 싶을 때만 연결하세요.")]
[SerializeField] private GameObject uiRoot;
[SerializeField] private FishingGaugeUI ui; [SerializeField] private FishingGaugeUI ui;
[SerializeField] private FishingRewardSystem rewardSystem; [SerializeField] private FishingRewardSystem rewardSystem;
[SerializeField] private FishingHapticManager haptic; [SerializeField] private FishingHapticManager haptic;
[SerializeField] private RotateUI centerIconRotate; [SerializeField] private RotateUI centerIconRotate;
[Header("Simple Reel Fishing")]
[Tooltip("TimingGauge는 기존 원형 타이밍 게이지 방식, SimpleReel은 릴을 감아 줄 길이를 줄이면 성공하는 방식입니다.")]
[SerializeField] private FishingControlMode fishingControlMode = FishingControlMode.SimpleReel;
[Tooltip("낚싯대 / 찌 / 릴 제어 스크립트입니다. SimpleReel 모드에서 줄 길이를 읽습니다.")]
[SerializeField] private FishingRodVRController rodController;
[Tooltip("현재 줄 길이가 이 값 이하가 되면 낚기 성공으로 처리합니다.")]
[SerializeField] private float catchCompleteLineLength = 0.7f;
[Tooltip("릴 낚시 시작 시 줄 길이가 성공 길이보다 너무 짧으면 이 거리만큼 최소 시작 길이를 보정합니다.")]
[SerializeField] private float simpleReelMinimumPullDistance = 0.35f;
[Tooltip("릴 낚기 성공 후 찌를 낚싯대 쪽 대기 위치로 회수합니다.")]
[SerializeField] private bool returnBobberAfterSimpleReelCatch = true;
[Tooltip("SimpleReel 모드에서 기존 타이밍 게이지 UI를 숨기고 진행도/줄 길이 중심으로 표시합니다.")]
[SerializeField] private bool hideTimingGaugeInSimpleReelMode = true;
[Tooltip("SimpleReel 모드에서는 StartFishing이 여러 번 호출됩니다. 켜면 첫 시작 때만 연못 상태를 초기화합니다.")]
[SerializeField] private bool resetPondOnlyOnFirstSimpleReelStart = true;
[Header("XR Controller Input")]
[Tooltip("낚시 판정을 실행할 컨트롤러 입력입니다. 예: XRI Right Interaction / Select")]
[SerializeField] private InputActionReference submitAction;
[Tooltip("낚시를 다시 시작할 컨트롤러 입력입니다. 필요 없으면 비워둬도 됩니다.")]
[SerializeField] private InputActionReference resetAction;
[Tooltip("씬에 Input Action Manager가 없거나 액션이 자동 활성화되지 않으면 켜두세요.")]
[SerializeField] private bool enableInputActionsManually = true;
[Header("Pointer")] [Header("Pointer")]
[SerializeField] private float pointerAngle; [SerializeField] private float pointerAngle;
[SerializeField] private float pointerSpeed = 180f; [SerializeField] private float pointerSpeed = 180f;
@@ -30,29 +76,110 @@ public enum ResultType
[SerializeField] private float maxZoneSize = 120f; [SerializeField] private float maxZoneSize = 120f;
[SerializeField] private float zoneCenter; [SerializeField] private float zoneCenter;
[Header("Rules")] [Header("Catch Rules")]
[Tooltip("아이템 1개를 낚기 위해 필요한 성공 횟수입니다.")]
[SerializeField] private int requiredSuccesses = 3; [SerializeField] private int requiredSuccesses = 3;
[Tooltip("아이템 1개를 낚는 동안 허용되는 실패 횟수입니다. 초과하면 낚싯줄이 끊어진 것으로 처리합니다.")]
[SerializeField] private int allowedFails = 3; [SerializeField] private int allowedFails = 3;
[Header("Pond Cleanup Rules")]
[Tooltip("연못을 맑게 만들기 위해 필요한 쓰레기성 아이템 수입니다. 쓰레기, 병, 봉지가 여기에 포함됩니다.")]
[SerializeField] private int requiredCleanupItems = 3;
[Tooltip("연못이 맑아진 뒤 다음 성공 낚시에서 기억의 조각을 확정으로 낚습니다.")]
[SerializeField] private bool guaranteeMemoryPieceAfterCleaned = true;
[Tooltip("StartFishing을 호출할 때 쓰레기 수거/연못 상태를 초기화합니다.")]
[SerializeField] private bool resetPondStateOnStart = true;
[Tooltip("낚시 세션이 진행 중일 때 StartFishing이 중복 호출되는 것을 막습니다.")]
[SerializeField] private bool preventRestartWhileSessionRunning = true;
[Header("Round Settings")] [Header("Round Settings")]
[SerializeField] private float nextRoundDelay = 0.35f; [SerializeField] private float nextRoundDelay = 0.35f;
[SerializeField] private float nextCatchDelay = 2.0f;
[SerializeField] private bool randomDirectionEachRound = true; [SerializeField] private bool randomDirectionEachRound = true;
[SerializeField] private bool resetDifficultyEachCatch = true;
[SerializeField] private bool startOnAwake = true; [SerializeField] private bool startOnAwake = true;
[Header("Final Result Settings")]
[Tooltip("최종 결과를 잠깐 보여준 뒤 uiRoot를 자동으로 끕니다. uiRoot가 비어 있으면 동작하지 않습니다.")]
[SerializeField] private bool hideUIRootAfterFinalResult = false;
[SerializeField] private float finalResultShowTime = 1.5f;
[Header("Debug")] [Header("Debug")]
[SerializeField] private bool showDebugLog = true; [SerializeField] private bool showDebugLog = true;
private int successCount; private int successCount;
private int failCount; private int failCount;
private int cleanupItemCount;
private int totalCaughtItems;
// 임시 낚시 세션 카운트입니다. 나중에 공용 인벤토리와 연결할 때는 저장용으로 쓰지 말고 UI 표시용으로만 쓰세요.
private int sessionFishCount;
private int sessionTrashCount;
private int sessionMemoryPieceCount;
private int sessionCompassCount;
private bool clockwise = true; private bool clockwise = true;
private bool activeGame; private bool activeGame;
private bool inputLocked; private bool inputLocked;
private bool fishingSessionRunning;
private bool pondCleaned;
private bool memoryPieceCollected;
private bool simpleReelCatchActive;
private bool simpleReelPondInitialized;
private float simpleReelStartLineLength;
private float simpleReelProgress;
private bool submitActionWasEnabled;
private bool resetActionWasEnabled;
private Coroutine nextRoundRoutine; private Coroutine nextRoundRoutine;
private Coroutine nextCatchRoutine;
private Coroutine finalResultRoutine;
public bool IsActiveGame => activeGame;
public bool IsFishingSessionRunning => fishingSessionRunning;
public bool IsPondCleaned => pondCleaned;
public bool IsMemoryPieceCollected => memoryPieceCollected;
public int SuccessCount => successCount;
public int FailCount => failCount;
public int CleanupItemCount => cleanupItemCount;
public int RequiredCleanupItems => requiredCleanupItems;
public int TotalCaughtItems => totalCaughtItems;
public int SessionFishCount => sessionFishCount;
public int SessionTrashCount => sessionTrashCount;
public int SessionMemoryPieceCount => sessionMemoryPieceCount;
public int SessionCompassCount => sessionCompassCount;
public FishingControlMode ControlMode => fishingControlMode;
public bool IsSimpleReelCatchActive => simpleReelCatchActive;
public float SimpleReelProgress => simpleReelProgress;
public event Action<FishingItemType, int> ItemCaught;
private void OnEnable()
{
RegisterInputAction(submitAction, OnSubmitAction, ref submitActionWasEnabled);
RegisterInputAction(resetAction, OnResetAction, ref resetActionWasEnabled);
}
private void OnDisable()
{
UnregisterInputAction(submitAction, OnSubmitAction, submitActionWasEnabled);
UnregisterInputAction(resetAction, OnResetAction, resetActionWasEnabled);
}
private void Start() private void Start()
{ {
if (autoBindMissingReferences)
AutoBindMissingReferences();
ValidateRuntimeSettings();
if (startOnAwake) if (startOnAwake)
{ {
StartFishing(); StartFishing();
@@ -68,21 +195,158 @@ private void Update()
if (!activeGame) if (!activeGame)
return; return;
if (fishingControlMode == FishingControlMode.SimpleReel)
{
UpdateSimpleReelCatch();
return;
}
if (inputLocked) if (inputLocked)
return; return;
RotatePointer(); RotatePointer();
} }
private void OnValidate()
{
ValidateRuntimeSettings();
}
[ContextMenu("Auto Bind Fishing References")]
public void AutoBindMissingReferences()
{
Transform searchRoot = GetSearchRoot();
if (uiRoot == null)
{
Transform canvasTransform = FindTransformRecursive(searchRoot, "FishingCanvas");
if (canvasTransform != null)
uiRoot = canvasTransform.gameObject;
}
if (ui == null)
ui = searchRoot != null ? searchRoot.GetComponentInChildren<FishingGaugeUI>(true) : GetComponentInChildren<FishingGaugeUI>(true);
if (rewardSystem == null)
rewardSystem = searchRoot != null ? searchRoot.GetComponentInChildren<FishingRewardSystem>(true) : GetComponentInChildren<FishingRewardSystem>(true);
if (haptic == null)
haptic = searchRoot != null ? searchRoot.GetComponentInChildren<FishingHapticManager>(true) : GetComponentInChildren<FishingHapticManager>(true);
if (rodController == null)
rodController = searchRoot != null ? searchRoot.GetComponentInChildren<FishingRodVRController>(true) : GetComponentInChildren<FishingRodVRController>(true);
if (centerIconRotate == null)
{
Transform centerIconTransform = FindTransformRecursive(searchRoot, "CenterIcon");
if (centerIconTransform != null)
centerIconRotate = centerIconTransform.GetComponent<RotateUI>();
if (centerIconRotate == null && searchRoot != null)
centerIconRotate = searchRoot.GetComponentInChildren<RotateUI>(true);
}
}
private Transform GetSearchRoot()
{
Transform current = transform;
while (current.parent != null)
current = current.parent;
return current;
}
private Transform FindTransformRecursive(Transform current, string targetName)
{
if (current == null || string.IsNullOrEmpty(targetName))
return null;
if (NormalizeName(current.name) == NormalizeName(targetName))
return current;
for (int i = 0; i < current.childCount; i++)
{
Transform found = FindTransformRecursive(current.GetChild(i), targetName);
if (found != null)
return found;
}
return null;
}
private string NormalizeName(string value)
{
return value.Replace(" ", string.Empty)
.Replace("_", string.Empty)
.Replace("-", string.Empty)
.ToLowerInvariant();
}
private void RegisterInputAction(InputActionReference actionReference, System.Action<InputAction.CallbackContext> callback, ref bool wasEnabled)
{
if (actionReference == null || actionReference.action == null)
return;
wasEnabled = actionReference.action.enabled;
actionReference.action.performed += callback;
if (enableInputActionsManually && !wasEnabled)
actionReference.action.Enable();
}
private void UnregisterInputAction(InputActionReference actionReference, System.Action<InputAction.CallbackContext> callback, bool wasEnabled)
{
if (actionReference == null || actionReference.action == null)
return;
actionReference.action.performed -= callback;
if (enableInputActionsManually && !wasEnabled)
actionReference.action.Disable();
}
private void ValidateRuntimeSettings()
{
requiredSuccesses = Mathf.Max(1, requiredSuccesses);
allowedFails = Mathf.Max(1, allowedFails);
requiredCleanupItems = Mathf.Max(1, requiredCleanupItems);
minSpeed = Mathf.Max(1f, minSpeed);
maxSpeed = Mathf.Max(minSpeed, maxSpeed);
pointerSpeed = Mathf.Clamp(pointerSpeed, minSpeed, maxSpeed);
minZoneSize = Mathf.Clamp(minZoneSize, 1f, 360f);
maxZoneSize = Mathf.Clamp(maxZoneSize, minZoneSize, 360f);
startZoneSize = Mathf.Clamp(startZoneSize, minZoneSize, maxZoneSize);
zoneSize = Mathf.Clamp(zoneSize, minZoneSize, maxZoneSize);
nextRoundDelay = Mathf.Max(0f, nextRoundDelay);
nextCatchDelay = Mathf.Max(0f, nextCatchDelay);
finalResultShowTime = Mathf.Max(0f, finalResultShowTime);
catchCompleteLineLength = Mathf.Max(0.05f, catchCompleteLineLength);
simpleReelMinimumPullDistance = Mathf.Max(0.01f, simpleReelMinimumPullDistance);
pointerAngle = Normalize(pointerAngle);
zoneCenter = Normalize(zoneCenter);
cleanupItemCount = Mathf.Max(0, cleanupItemCount);
totalCaughtItems = Mathf.Max(0, totalCaughtItems);
}
private void InitializeIdleUI() private void InitializeIdleUI()
{ {
if (ui != null) if (ui != null)
{ {
ui.HideRoundResult(); ui.InitializeFishingUI();
ui.HideFinalResult();
ui.UpdateCounter(0, requiredSuccesses, 0, allowedFails); ui.UpdateCounter(0, requiredSuccesses, 0, allowedFails);
ui.UpdateFishingProgress(cleanupItemCount, requiredCleanupItems, pondCleaned, memoryPieceCollected, totalCaughtItems);
ui.UpdateInventoryUI(sessionFishCount, sessionTrashCount, sessionMemoryPieceCount, sessionCompassCount);
ui.SetPointerRotation(0f); ui.SetPointerRotation(0f);
ui.SetZone(0f, startZoneSize); ui.SetZone(0f, startZoneSize);
ui.SetSimpleReelUIVisible(false);
ui.SetTimingGaugeVisible(fishingControlMode == FishingControlMode.TimingGauge);
} }
if (centerIconRotate != null) if (centerIconRotate != null)
@@ -91,30 +355,182 @@ private void InitializeIdleUI()
public void StartFishing() public void StartFishing()
{ {
if (nextRoundRoutine != null) StartFishing(false);
}
public void StartFishing(bool forceRestart)
{
ValidateRuntimeSettings();
if (preventRestartWhileSessionRunning && fishingSessionRunning && !forceRestart)
{ {
StopCoroutine(nextRoundRoutine); if (showDebugLog)
nextRoundRoutine = null; Debug.Log("낚시 세션이 이미 진행 중이라 StartFishing 호출을 무시했습니다.");
return;
}
StopRunningRoutines();
if (uiRoot != null)
uiRoot.SetActive(true);
bool shouldResetPondState = forceRestart || resetPondStateOnStart;
if (fishingControlMode == FishingControlMode.SimpleReel && resetPondOnlyOnFirstSimpleReelStart)
shouldResetPondState = forceRestart || (resetPondStateOnStart && !simpleReelPondInitialized);
if (shouldResetPondState)
{
ResetPondState();
if (fishingControlMode == FishingControlMode.SimpleReel)
simpleReelPondInitialized = true;
}
fishingSessionRunning = true;
if (ui != null)
ui.InitializeFishingUI();
if (fishingControlMode == FishingControlMode.SimpleReel)
StartSimpleReelCatch();
else
StartNewCatchAttempt();
if (showDebugLog)
Debug.Log(fishingControlMode == FishingControlMode.SimpleReel ? "릴 감기 낚시 시작" : "기묘한 낚시터 시작");
}
public void StopFishing(bool hideUI = false)
{
StopRunningRoutines();
activeGame = false;
inputLocked = true;
fishingSessionRunning = false;
simpleReelCatchActive = false;
if (centerIconRotate != null)
centerIconRotate.StopRotate();
if (hideUI && uiRoot != null)
uiRoot.SetActive(false);
}
public void ResetFishing()
{
fishingSessionRunning = false;
simpleReelCatchActive = false;
simpleReelPondInitialized = false;
StartFishing(true);
}
public void ResetPondState()
{
successCount = 0;
failCount = 0;
cleanupItemCount = 0;
totalCaughtItems = 0;
sessionFishCount = 0;
sessionTrashCount = 0;
sessionMemoryPieceCount = 0;
sessionCompassCount = 0;
pondCleaned = false;
memoryPieceCollected = false;
simpleReelCatchActive = false;
simpleReelProgress = 0f;
simpleReelStartLineLength = 0f;
}
private void StartSimpleReelCatch()
{
if (rodController == null && autoBindMissingReferences)
AutoBindMissingReferences();
if (rodController == null)
{
Debug.LogWarning("[FishingGameManager] SimpleReel 모드에는 FishingRodVRController 참조가 필요합니다.", this);
activeGame = false;
inputLocked = true;
fishingSessionRunning = false;
return;
} }
successCount = 0; successCount = 0;
failCount = 0; failCount = 0;
pointerAngle = 0f;
pointerSpeed = minSpeed;
zoneSize = startZoneSize;
activeGame = true;
inputLocked = false; inputLocked = false;
activeGame = true;
simpleReelCatchActive = true;
clockwise = Random.value > 0.5f; float currentLineLength = Mathf.Max(rodController.CurrentLineLength, catchCompleteLineLength + simpleReelMinimumPullDistance);
simpleReelStartLineLength = currentLineLength;
simpleReelProgress = 0f;
if (centerIconRotate != null)
{
centerIconRotate.ResetRotation();
centerIconRotate.StopRotate();
}
if (ui != null) if (ui != null)
{ {
ui.HideRoundResult(); ui.SetSimpleReelUIVisible(true);
ui.HideFinalResult(); if (hideTimingGaugeInSimpleReelMode)
ui.SetTimingGaugeVisible(false);
ui.UpdateSimpleReelUI(simpleReelProgress, rodController.CurrentLineLength, rodController.IsReeling);
ui.ShowPersistentResult("릴을 감아 끌어올려라!");
} }
UpdateUI();
}
private void UpdateSimpleReelCatch()
{
if (!simpleReelCatchActive || rodController == null)
return;
float currentLineLength = rodController.CurrentLineLength;
float totalPullDistance = Mathf.Max(0.001f, simpleReelStartLineLength - catchCompleteLineLength);
float pulledDistance = simpleReelStartLineLength - currentLineLength;
simpleReelProgress = Mathf.Clamp01(pulledDistance / totalPullDistance);
if (ui != null)
ui.UpdateSimpleReelUI(simpleReelProgress, currentLineLength, rodController.IsReeling);
if (currentLineLength <= catchCompleteLineLength || simpleReelProgress >= 1f)
{
simpleReelCatchActive = false;
inputLocked = true;
if (haptic != null)
haptic.Perfect();
if (ui != null)
{
ui.UpdateSimpleReelUI(1f, currentLineLength, false);
ui.ShowPersistentResult("낚았다!");
}
CatchItemSuccess();
}
}
private void StartNewCatchAttempt()
{
successCount = 0;
failCount = 0;
inputLocked = false;
activeGame = true;
if (resetDifficultyEachCatch)
{
pointerAngle = 0f;
pointerSpeed = minSpeed;
zoneSize = startZoneSize;
}
if (randomDirectionEachRound)
clockwise = UnityEngine.Random.value > 0.5f;
if (centerIconRotate != null) if (centerIconRotate != null)
{ {
centerIconRotate.ResetRotation(); centerIconRotate.ResetRotation();
@@ -123,9 +539,27 @@ public void StartFishing()
RandomizeZone(); RandomizeZone();
UpdateUI(); UpdateUI();
}
if (showDebugLog) private void StopRunningRoutines()
Debug.Log("낚시 시작"); {
if (nextRoundRoutine != null)
{
StopCoroutine(nextRoundRoutine);
nextRoundRoutine = null;
}
if (nextCatchRoutine != null)
{
StopCoroutine(nextCatchRoutine);
nextCatchRoutine = null;
}
if (finalResultRoutine != null)
{
StopCoroutine(finalResultRoutine);
finalResultRoutine = null;
}
} }
private void RotatePointer() private void RotatePointer()
@@ -141,6 +575,9 @@ private void RotatePointer()
public void SubmitAttempt() public void SubmitAttempt()
{ {
if (fishingControlMode == FishingControlMode.SimpleReel)
return;
if (!activeGame) if (!activeGame)
return; return;
@@ -149,8 +586,17 @@ public void SubmitAttempt()
inputLocked = true; inputLocked = true;
if (ui != null)
ui.HideControllerGuide();
ResultType result = EvaluateResult(); ResultType result = EvaluateResult();
if (ui != null)
{
ui.ShowResultForType(result);
ui.FlashFeedbackForType(result);
}
switch (result) switch (result)
{ {
case ResultType.Perfect: case ResultType.Perfect:
@@ -168,7 +614,7 @@ public void SubmitAttempt()
if (successCount >= requiredSuccesses) if (successCount >= requiredSuccesses)
{ {
FishingSuccess(); CatchItemSuccess();
return; return;
} }
@@ -207,11 +653,8 @@ private void OnPerfect()
if (haptic != null) if (haptic != null)
haptic.Perfect(); haptic.Perfect();
if (ui != null)
ui.ShowResult("완벽!");
if (showDebugLog) if (showDebugLog)
Debug.Log("낚시 판정: Perfect"); Debug.Log("낚시 판정: Perfect");
ClampDifficulty(); ClampDifficulty();
UpdateUI(); UpdateUI();
@@ -227,11 +670,8 @@ private void OnGood()
if (haptic != null) if (haptic != null)
haptic.Good(); haptic.Good();
if (ui != null)
ui.ShowResult("성공!");
if (showDebugLog) if (showDebugLog)
Debug.Log("낚시 판정: Good"); Debug.Log("낚시 판정: Good");
ClampDifficulty(); ClampDifficulty();
UpdateUI(); UpdateUI();
@@ -247,11 +687,8 @@ private void OnMiss()
if (haptic != null) if (haptic != null)
haptic.Miss(); haptic.Miss();
if (ui != null)
ui.ShowResult("실패!");
if (showDebugLog) if (showDebugLog)
Debug.Log("낚시 판정: Miss"); Debug.Log("낚시 판정: Miss");
ClampDifficulty(); ClampDifficulty();
UpdateUI(); UpdateUI();
@@ -262,10 +699,13 @@ private IEnumerator NextRoundRoutine()
yield return new WaitForSeconds(nextRoundDelay); yield return new WaitForSeconds(nextRoundDelay);
if (!activeGame) if (!activeGame)
{
nextRoundRoutine = null;
yield break; yield break;
}
if (randomDirectionEachRound) if (randomDirectionEachRound)
clockwise = Random.value > 0.5f; clockwise = UnityEngine.Random.value > 0.5f;
RandomizeZone(); RandomizeZone();
UpdateUI(); UpdateUI();
@@ -274,6 +714,133 @@ private IEnumerator NextRoundRoutine()
nextRoundRoutine = null; nextRoundRoutine = null;
} }
private void CatchItemSuccess()
{
activeGame = false;
inputLocked = true;
if (centerIconRotate != null)
centerIconRotate.StopRotate();
bool forceMemoryPiece = pondCleaned && guaranteeMemoryPieceAfterCleaned && !memoryPieceCollected;
FishingRewardSystem.CatchResult catchResult;
if (rewardSystem != null)
catchResult = rewardSystem.RollCatch(pondCleaned, forceMemoryPiece);
else
catchResult = new FishingRewardSystem.CatchResult(FishingItemType.Fish, "생선", false, false);
ApplyCatchResult(catchResult);
}
private void ApplyCatchResult(FishingRewardSystem.CatchResult catchResult)
{
totalCaughtItems++;
AddToSessionCounts(catchResult.ItemType);
ItemCaught?.Invoke(catchResult.ItemType, 1);
bool pondJustCleaned = false;
string extraHint = string.Empty;
if (catchResult.CountsAsCleanupItem)
{
cleanupItemCount = Mathf.Min(cleanupItemCount + 1, requiredCleanupItems);
extraHint = $"연못 정화 {cleanupItemCount}/{requiredCleanupItems}";
if (!pondCleaned && cleanupItemCount >= requiredCleanupItems)
{
pondCleaned = true;
pondJustCleaned = true;
extraHint = "연못이 맑아졌다. 기억의 조각이 모습을 드러낸다.";
}
}
if (catchResult.IsMemoryPiece)
{
memoryPieceCollected = true;
extraHint = "잃어버린 기억의 일부다.";
}
UpdateUI();
if (ui != null)
{
ui.HighlightSlotForItem(catchResult.ItemType);
if (!catchResult.IsMemoryPiece)
ui.ShowCaughtItem(catchResult.ItemType, catchResult.DisplayName, catchResult.CountsAsCleanupItem, extraHint);
if (pondJustCleaned)
ui.ShowNotice("연못이 맑아졌다!\n기억의 조각이 모습을 드러냈다!");
// 기억의 조각 획득은 FinalResultPanel에서 크게 보여줍니다.
// NoticePanel까지 동시에 띄우면 ShowFinalResult에서 바로 숨겨져 연출이 겹칠 수 있습니다.
}
if (showDebugLog)
Debug.Log($"{catchResult.DisplayName}을(를) 낚았다!");
if (catchResult.IsMemoryPiece)
{
FishingSuccess();
return;
}
if (fishingControlMode == FishingControlMode.SimpleReel)
{
fishingSessionRunning = false;
simpleReelCatchActive = false;
if (returnBobberAfterSimpleReelCatch && rodController != null)
rodController.ReturnBobberToRest();
return;
}
nextCatchRoutine = StartCoroutine(NextCatchRoutine());
}
private IEnumerator NextCatchRoutine()
{
yield return new WaitForSeconds(nextCatchDelay);
if (memoryPieceCollected)
{
nextCatchRoutine = null;
yield break;
}
StartNewCatchAttempt();
nextCatchRoutine = null;
}
private void AddToSessionCounts(FishingItemType itemType)
{
switch (itemType)
{
case FishingItemType.Fish:
sessionFishCount++;
break;
case FishingItemType.Trash:
case FishingItemType.Bottle:
case FishingItemType.PlasticBag:
sessionTrashCount++;
break;
case FishingItemType.MemoryPiece:
sessionMemoryPieceCount++;
break;
case FishingItemType.OldCompass:
sessionCompassCount++;
break;
}
}
private void ClampDifficulty() private void ClampDifficulty()
{ {
zoneSize = Mathf.Clamp(zoneSize, minZoneSize, maxZoneSize); zoneSize = Mathf.Clamp(zoneSize, minZoneSize, maxZoneSize);
@@ -282,7 +849,7 @@ private void ClampDifficulty()
private void RandomizeZone() private void RandomizeZone()
{ {
zoneCenter = Random.Range(0f, 360f); zoneCenter = UnityEngine.Random.Range(0f, 360f);
} }
private void UpdateUI() private void UpdateUI()
@@ -290,46 +857,88 @@ private void UpdateUI()
if (ui == null) if (ui == null)
return; return;
if (fishingControlMode == FishingControlMode.SimpleReel)
{
ui.SetSimpleReelUIVisible(activeGame || simpleReelCatchActive);
if (hideTimingGaugeInSimpleReelMode)
ui.SetTimingGaugeVisible(false);
ui.UpdateFishingProgress(cleanupItemCount, requiredCleanupItems, pondCleaned, memoryPieceCollected, totalCaughtItems);
ui.UpdateInventoryUI(sessionFishCount, sessionTrashCount, sessionMemoryPieceCount, sessionCompassCount);
float currentLineLength = rodController != null ? rodController.CurrentLineLength : 0f;
bool isReeling = rodController != null && rodController.IsReeling;
ui.UpdateSimpleReelUI(simpleReelProgress, currentLineLength, isReeling);
return;
}
ui.SetSimpleReelUIVisible(false);
ui.SetTimingGaugeVisible(true);
ui.SetZone(zoneCenter, zoneSize); ui.SetZone(zoneCenter, zoneSize);
ui.UpdateCounter(successCount, requiredSuccesses, failCount, allowedFails); ui.UpdateCounter(successCount, requiredSuccesses, failCount, allowedFails);
ui.UpdateFishingProgress(cleanupItemCount, requiredCleanupItems, pondCleaned, memoryPieceCollected, totalCaughtItems);
ui.UpdateInventoryUI(sessionFishCount, sessionTrashCount, sessionMemoryPieceCount, sessionCompassCount);
} }
private void FishingSuccess() private void FishingSuccess()
{ {
activeGame = false; activeGame = false;
inputLocked = true; inputLocked = true;
fishingSessionRunning = false;
simpleReelCatchActive = false;
if (centerIconRotate != null) if (centerIconRotate != null)
centerIconRotate.StopRotate(); centerIconRotate.StopRotate();
if (ui != null) UpdateUI();
ui.ShowFinalResult("낚시 성공!");
if (rewardSystem != null) if (ui != null)
rewardSystem.GiveReward(); ui.ShowFinalResult("기억의 조각 획득!\n기묘한 낚시터 클리어!");
if (showDebugLog) if (showDebugLog)
Debug.Log("낚시 최종 성공"); Debug.Log("기묘한 낚시터 클리어");
BeginFinalResultRoutineIfNeeded();
} }
private void FishingFail() private void FishingFail()
{ {
activeGame = false; activeGame = false;
inputLocked = true; inputLocked = true;
fishingSessionRunning = false;
simpleReelCatchActive = false;
if (centerIconRotate != null) if (centerIconRotate != null)
centerIconRotate.StopRotate(); centerIconRotate.StopRotate();
if (ui != null) if (ui != null)
ui.ShowFinalResult("낚시 실패!"); ui.ShowFinalResult("낚싯줄이 끊어졌다!\n다시 천천히 낚아보자.");
if (showDebugLog) if (showDebugLog)
Debug.Log("낚시 최종 실패"); Debug.Log("낚시 실패: 낚싯줄 끊어짐");
BeginFinalResultRoutineIfNeeded();
} }
public void ResetFishing() private void BeginFinalResultRoutineIfNeeded()
{ {
StartFishing(); if (!hideUIRootAfterFinalResult || uiRoot == null)
return;
if (finalResultRoutine != null)
StopCoroutine(finalResultRoutine);
finalResultRoutine = StartCoroutine(HideUIRootAfterFinalResultRoutine());
}
private IEnumerator HideUIRootAfterFinalResultRoutine()
{
yield return new WaitForSeconds(finalResultShowTime);
if (uiRoot != null)
uiRoot.SetActive(false);
finalResultRoutine = null;
} }
private float Normalize(float angle) private float Normalize(float angle)
@@ -342,17 +951,13 @@ private float Normalize(float angle)
return angle; return angle;
} }
// XR Input Action의 Select / Trigger 버튼에 연결 private void OnSubmitAction(InputAction.CallbackContext context)
public void OnSubmit(InputValue value)
{ {
if (value.isPressed) SubmitAttempt();
SubmitAttempt();
} }
// Reset 버튼에 연결 가능 private void OnResetAction(InputAction.CallbackContext context)
public void OnReset(InputValue value)
{ {
if (value.isPressed) ResetFishing();
ResetFishing();
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,7 @@ public class FishingHapticManager : MonoBehaviour
[Header("Haptic Settings")] [Header("Haptic Settings")]
[SerializeField] private bool useHaptic = true; [SerializeField] private bool useHaptic = true;
[SerializeField] private bool showHapticDebugLog = false;
[SerializeField] private float perfectAmplitude = 1f; [SerializeField] private float perfectAmplitude = 1f;
[SerializeField] private float perfectDuration = 0.2f; [SerializeField] private float perfectDuration = 0.2f;
@@ -18,6 +19,19 @@ public class FishingHapticManager : MonoBehaviour
[SerializeField] private float missAmplitude = 0.2f; [SerializeField] private float missAmplitude = 0.2f;
[SerializeField] private float missDuration = 0.05f; [SerializeField] private float missDuration = 0.05f;
public XRNode TargetHand => targetHand;
private void OnValidate()
{
perfectAmplitude = Mathf.Clamp01(perfectAmplitude);
goodAmplitude = Mathf.Clamp01(goodAmplitude);
missAmplitude = Mathf.Clamp01(missAmplitude);
perfectDuration = Mathf.Max(0f, perfectDuration);
goodDuration = Mathf.Max(0f, goodDuration);
missDuration = Mathf.Max(0f, missDuration);
}
private void SendHaptic(float amplitude, float duration) private void SendHaptic(float amplitude, float duration)
{ {
if (!useHaptic) if (!useHaptic)
@@ -26,15 +40,46 @@ private void SendHaptic(float amplitude, float duration)
InputDevice device = InputDevices.GetDeviceAtXRNode(targetHand); InputDevice device = InputDevices.GetDeviceAtXRNode(targetHand);
if (!device.isValid) if (!device.isValid)
return;
if (device.TryGetHapticCapabilities(out HapticCapabilities capabilities))
{ {
if (!capabilities.supportsImpulse) LogHapticWarning("Haptic device not found.");
return; return;
} }
device.SendHapticImpulse(0u, Mathf.Clamp01(amplitude), duration); if (!device.TryGetHapticCapabilities(out HapticCapabilities capabilities))
{
LogHapticWarning("Haptic capabilities not available.");
return;
}
if (!capabilities.supportsImpulse)
{
LogHapticWarning("Haptic impulse is not supported on this device.");
return;
}
if (capabilities.numChannels < 1)
{
LogHapticWarning("Haptic channel count is zero.");
return;
}
device.SendHapticImpulse(0u, Mathf.Clamp01(amplitude), Mathf.Max(0f, duration));
}
private void LogHapticWarning(string message)
{
if (showHapticDebugLog)
Debug.LogWarning($"[FishingHapticManager] {message}", this);
}
public void SetTargetHand(XRNode hand)
{
targetHand = hand;
}
public void SetUseHaptic(bool value)
{
useHaptic = value;
} }
public void Perfect() public void Perfect()
@@ -51,4 +96,4 @@ public void Miss()
{ {
SendHaptic(missAmplitude, missDuration); SendHaptic(missAmplitude, missDuration);
} }
} }

View File

@@ -0,0 +1,178 @@
using UnityEngine;
public class FishingInventory : MonoBehaviour
{
[Header("Item Counts")]
[SerializeField] private int fishCount;
[SerializeField] private int rottenFishCount;
[SerializeField] private int trashCount;
[SerializeField] private int bottleCount;
[SerializeField] private int plasticBagCount;
[SerializeField] private int jellyfishPowderCount;
[SerializeField] private int oldCompassCount;
[SerializeField] private int memoryPieceCount;
public int FishCount => fishCount;
public int RottenFishCount => rottenFishCount;
public int TrashCount => trashCount;
public int BottleCount => bottleCount;
public int PlasticBagCount => plasticBagCount;
public int JellyfishPowderCount => jellyfishPowderCount;
public int OldCompassCount => oldCompassCount;
public int MemoryPieceCount => memoryPieceCount;
private void OnValidate()
{
ClampCounts();
}
private void ClampCounts()
{
fishCount = Mathf.Max(0, fishCount);
rottenFishCount = Mathf.Max(0, rottenFishCount);
trashCount = Mathf.Max(0, trashCount);
bottleCount = Mathf.Max(0, bottleCount);
plasticBagCount = Mathf.Max(0, plasticBagCount);
jellyfishPowderCount = Mathf.Max(0, jellyfishPowderCount);
oldCompassCount = Mathf.Max(0, oldCompassCount);
memoryPieceCount = Mathf.Max(0, memoryPieceCount);
}
public void AddItem(FishingItemType itemType, int amount = 1)
{
if (itemType == FishingItemType.None || amount <= 0)
return;
switch (itemType)
{
case FishingItemType.Fish:
fishCount += amount;
break;
case FishingItemType.RottenFish:
rottenFishCount += amount;
break;
case FishingItemType.Trash:
trashCount += amount;
break;
case FishingItemType.Bottle:
bottleCount += amount;
break;
case FishingItemType.PlasticBag:
plasticBagCount += amount;
break;
case FishingItemType.JellyfishPowder:
jellyfishPowderCount += amount;
break;
case FishingItemType.OldCompass:
oldCompassCount += amount;
break;
case FishingItemType.MemoryPiece:
memoryPieceCount += amount;
break;
}
}
public bool HasItem(FishingItemType itemType, int amount = 1)
{
if (itemType == FishingItemType.None || amount <= 0)
return false;
return GetItemCount(itemType) >= amount;
}
public bool ConsumeItem(FishingItemType itemType, int amount = 1)
{
if (!HasItem(itemType, amount))
return false;
switch (itemType)
{
case FishingItemType.Fish:
fishCount -= amount;
break;
case FishingItemType.RottenFish:
rottenFishCount -= amount;
break;
case FishingItemType.Trash:
trashCount -= amount;
break;
case FishingItemType.Bottle:
bottleCount -= amount;
break;
case FishingItemType.PlasticBag:
plasticBagCount -= amount;
break;
case FishingItemType.JellyfishPowder:
jellyfishPowderCount -= amount;
break;
case FishingItemType.OldCompass:
oldCompassCount -= amount;
break;
case FishingItemType.MemoryPiece:
memoryPieceCount -= amount;
break;
}
return true;
}
public int GetItemCount(FishingItemType itemType)
{
switch (itemType)
{
case FishingItemType.Fish:
return fishCount;
case FishingItemType.RottenFish:
return rottenFishCount;
case FishingItemType.Trash:
return trashCount;
case FishingItemType.Bottle:
return bottleCount;
case FishingItemType.PlasticBag:
return plasticBagCount;
case FishingItemType.JellyfishPowder:
return jellyfishPowderCount;
case FishingItemType.OldCompass:
return oldCompassCount;
case FishingItemType.MemoryPiece:
return memoryPieceCount;
case FishingItemType.None:
default:
return 0;
}
}
public void ResetInventory()
{
fishCount = 0;
rottenFishCount = 0;
trashCount = 0;
bottleCount = 0;
plasticBagCount = 0;
jellyfishPowderCount = 0;
oldCompassCount = 0;
memoryPieceCount = 0;
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: df5f5119d6ecc8746a4ee16c9f1b50cd

View File

@@ -0,0 +1,12 @@
public enum FishingItemType
{
None,
Fish,
RottenFish,
Trash,
Bottle,
PlasticBag,
JellyfishPowder,
OldCompass,
MemoryPiece
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6365b670fd7854c4bb6024c911f30c5c

View File

@@ -1,53 +1,255 @@
using System;
using System.Collections.Generic;
using UnityEngine; using UnityEngine;
public class FishingRewardSystem : MonoBehaviour public class FishingRewardSystem : MonoBehaviour
{ {
public enum RewardType [Serializable]
public class LootEntry
{ {
Normal, public FishingItemType itemType = FishingItemType.Fish;
Rare public string displayName = "생선";
[Min(0f)] public float weight = 1f;
public LootEntry(FishingItemType itemType, string displayName, float weight)
{
this.itemType = itemType;
this.displayName = displayName;
this.weight = Mathf.Max(0f, weight);
}
} }
[Header("Reward Chance")] public struct CatchResult
[Range(0f, 100f)]
[SerializeField] private float rareChance = 10f;
[Header("Reward Count")]
[SerializeField] private int normalMemory;
[SerializeField] private int rareMemory;
public int NormalMemory => normalMemory;
public int RareMemory => rareMemory;
public RewardType GiveReward()
{ {
if (Random.value < rareChance / 100f) public FishingItemType ItemType;
return GiveRareMemory(); public string DisplayName;
public bool CountsAsCleanupItem;
public bool IsMemoryPiece;
return GiveNormalMemory(); public CatchResult(FishingItemType itemType, string displayName, bool countsAsCleanupItem, bool isMemoryPiece)
{
ItemType = itemType;
DisplayName = displayName;
CountsAsCleanupItem = countsAsCleanupItem;
IsMemoryPiece = isMemoryPiece;
}
} }
private RewardType GiveNormalMemory() [Header("Loot Table - Dirty Pond")]
[Tooltip("연못이 정화되기 전 낚이는 아이템 목록입니다. 기억의 조각은 이 테이블에 있어도 자동 제외됩니다.")]
[SerializeField] private List<LootEntry> dirtyPondLootTable = new List<LootEntry>();
[Header("Loot Table - Clean Pond")]
[Tooltip("연못이 정화된 뒤 낚이는 아이템 목록입니다. 기억의 조각을 포함할 수 있습니다.")]
[SerializeField] private List<LootEntry> cleanPondLootTable = new List<LootEntry>();
[Header("Debug")]
[SerializeField] private bool showDebugLog = true;
public IReadOnlyList<LootEntry> DirtyPondLootTable => dirtyPondLootTable;
public IReadOnlyList<LootEntry> CleanPondLootTable => cleanPondLootTable;
private void Reset()
{ {
normalMemory++; SetDefaultLootTables();
Debug.Log("ÀÏ¹Ý ±â¾ï +1");
return RewardType.Normal;
} }
private RewardType GiveRareMemory() private void Awake()
{ {
rareMemory++; EnsureLootTables();
Debug.Log("Èñ±Í ±â¾ï +1");
return RewardType.Rare;
} }
public void ResetRewardCount() private void OnValidate()
{ {
normalMemory = 0; EnsureLootTables();
rareMemory = 0; ClampLootTable(dirtyPondLootTable);
ClampLootTable(cleanPondLootTable);
} }
}
private void EnsureLootTables()
{
if (dirtyPondLootTable == null)
dirtyPondLootTable = new List<LootEntry>();
if (cleanPondLootTable == null)
cleanPondLootTable = new List<LootEntry>();
if (dirtyPondLootTable.Count == 0)
SetDefaultDirtyLootTable();
if (cleanPondLootTable.Count == 0)
SetDefaultCleanLootTable();
}
private void SetDefaultLootTables()
{
SetDefaultDirtyLootTable();
SetDefaultCleanLootTable();
}
private void SetDefaultDirtyLootTable()
{
dirtyPondLootTable = new List<LootEntry>
{
new LootEntry(FishingItemType.Fish, "생선", 25f),
new LootEntry(FishingItemType.RottenFish, "상한 생선", 8f),
new LootEntry(FishingItemType.Trash, "쓰레기", 28f),
new LootEntry(FishingItemType.Bottle, "병", 18f),
new LootEntry(FishingItemType.PlasticBag, "봉지", 18f),
new LootEntry(FishingItemType.JellyfishPowder, "해파리 가루", 6f),
new LootEntry(FishingItemType.OldCompass, "낡은 나침반", 4f)
};
}
private void SetDefaultCleanLootTable()
{
cleanPondLootTable = new List<LootEntry>
{
new LootEntry(FishingItemType.MemoryPiece, "기억의 조각", 30f),
new LootEntry(FishingItemType.Fish, "생선", 30f),
new LootEntry(FishingItemType.OldCompass, "낡은 나침반", 15f),
new LootEntry(FishingItemType.JellyfishPowder, "해파리 가루", 15f),
new LootEntry(FishingItemType.RottenFish, "상한 생선", 4f)
};
}
private void ClampLootTable(List<LootEntry> table)
{
if (table == null)
return;
for (int i = 0; i < table.Count; i++)
{
if (table[i] == null)
{
table[i] = new LootEntry(FishingItemType.Fish, "생선", 1f);
continue;
}
table[i].weight = Mathf.Max(0f, table[i].weight);
if (string.IsNullOrWhiteSpace(table[i].displayName))
table[i].displayName = GetDefaultDisplayName(table[i].itemType);
}
}
public CatchResult RollCatch(bool pondCleaned, bool forceMemoryPiece)
{
if (forceMemoryPiece)
return CreateCatchResult(FishingItemType.MemoryPiece, GetDefaultDisplayName(FishingItemType.MemoryPiece));
List<LootEntry> table = pondCleaned ? cleanPondLootTable : dirtyPondLootTable;
LootEntry selectedEntry = RollFromTable(table, pondCleaned);
if (selectedEntry == null)
return CreateCatchResult(FishingItemType.Fish, GetDefaultDisplayName(FishingItemType.Fish));
return CreateCatchResult(selectedEntry.itemType, selectedEntry.displayName);
}
private LootEntry RollFromTable(List<LootEntry> table, bool pondCleaned)
{
if (table == null || table.Count == 0)
return null;
float totalWeight = 0f;
for (int i = 0; i < table.Count; i++)
{
LootEntry entry = table[i];
if (!IsRollableEntry(entry, pondCleaned))
continue;
totalWeight += entry.weight;
}
if (totalWeight <= 0f)
return null;
float roll = UnityEngine.Random.Range(0f, totalWeight);
float current = 0f;
for (int i = 0; i < table.Count; i++)
{
LootEntry entry = table[i];
if (!IsRollableEntry(entry, pondCleaned))
continue;
current += entry.weight;
if (roll <= current)
return entry;
}
return null;
}
private bool IsRollableEntry(LootEntry entry, bool pondCleaned)
{
if (entry == null)
return false;
if (entry.weight <= 0f)
return false;
if (!pondCleaned && entry.itemType == FishingItemType.MemoryPiece)
return false;
return entry.itemType != FishingItemType.None;
}
private CatchResult CreateCatchResult(FishingItemType itemType, string displayName)
{
string finalDisplayName = string.IsNullOrWhiteSpace(displayName) ? GetDefaultDisplayName(itemType) : displayName;
bool countsAsCleanupItem = IsCleanupItem(itemType);
bool isMemoryPiece = itemType == FishingItemType.MemoryPiece;
if (showDebugLog)
Debug.Log($"낚시 획득: {finalDisplayName}");
return new CatchResult(itemType, finalDisplayName, countsAsCleanupItem, isMemoryPiece);
}
public bool IsCleanupItem(FishingItemType itemType)
{
return itemType == FishingItemType.Trash ||
itemType == FishingItemType.Bottle ||
itemType == FishingItemType.PlasticBag;
}
public string GetDefaultDisplayName(FishingItemType itemType)
{
switch (itemType)
{
case FishingItemType.Fish:
return "생선";
case FishingItemType.RottenFish:
return "상한 생선";
case FishingItemType.Trash:
return "쓰레기";
case FishingItemType.Bottle:
return "병";
case FishingItemType.PlasticBag:
return "봉지";
case FishingItemType.JellyfishPowder:
return "해파리 가루";
case FishingItemType.OldCompass:
return "낡은 나침반";
case FishingItemType.MemoryPiece:
return "기억의 조각";
case FishingItemType.None:
default:
return "없음";
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f8b17139274961d4d9b190b0bb7d6e8e

View File

@@ -0,0 +1,361 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class FishingUIEffects : MonoBehaviour
{
private readonly Dictionary<Object, Coroutine> runningEffects = new Dictionary<Object, Coroutine>();
private readonly Dictionary<Transform, Vector3> originalScales = new Dictionary<Transform, Vector3>();
private readonly Dictionary<RectTransform, Vector2> originalAnchoredPositions = new Dictionary<RectTransform, Vector2>();
public CanvasGroup EnsureCanvasGroup(GameObject target)
{
if (target == null)
return null;
CanvasGroup group = target.GetComponent<CanvasGroup>();
if (group == null)
group = target.AddComponent<CanvasGroup>();
return group;
}
public void SetCanvasGroupInstant(GameObject target, CanvasGroup group, bool visible)
{
if (target == null && group == null)
return;
if (target != null)
target.SetActive(visible);
if (group != null)
{
group.alpha = visible ? 1f : 0f;
group.interactable = visible;
group.blocksRaycasts = visible;
}
}
public void FadeCanvasGroup(GameObject target, CanvasGroup group, bool visible, float duration)
{
if (target == null && group == null)
return;
if (group == null && target != null)
group = EnsureCanvasGroup(target);
if (group == null)
{
if (target != null)
target.SetActive(visible);
return;
}
StopManaged(group);
runningEffects[group] = StartCoroutine(FadeCanvasGroupRoutine(target, group, visible, Mathf.Max(0f, duration)));
}
private IEnumerator FadeCanvasGroupRoutine(GameObject target, CanvasGroup group, bool visible, float duration)
{
if (target != null && visible)
target.SetActive(true);
group.interactable = visible;
group.blocksRaycasts = visible;
float startAlpha = group.alpha;
float endAlpha = visible ? 1f : 0f;
if (duration <= 0f)
{
group.alpha = endAlpha;
}
else
{
float timer = 0f;
while (timer < duration)
{
timer += Time.deltaTime;
float t = Mathf.Clamp01(timer / duration);
t = EaseOutCubic(t);
group.alpha = Mathf.Lerp(startAlpha, endAlpha, t);
yield return null;
}
group.alpha = endAlpha;
}
if (target != null && !visible)
target.SetActive(false);
runningEffects.Remove(group);
}
public void Pop(Transform target, float peakScale = 1.12f, float duration = 0.18f)
{
if (target == null)
return;
StopManaged(target);
runningEffects[target] = StartCoroutine(PopRoutine(target, Mathf.Max(1f, peakScale), Mathf.Max(0.01f, duration)));
}
private IEnumerator PopRoutine(Transform target, float peakScale, float duration)
{
if (!originalScales.TryGetValue(target, out Vector3 originalScale))
{
originalScale = target.localScale;
originalScales[target] = originalScale;
}
float half = duration * 0.5f;
float timer = 0f;
while (timer < half)
{
timer += Time.deltaTime;
float t = Mathf.Clamp01(timer / half);
target.localScale = Vector3.Lerp(originalScale, originalScale * peakScale, EaseOutCubic(t));
yield return null;
}
timer = 0f;
Vector3 peak = originalScale * peakScale;
while (timer < half)
{
timer += Time.deltaTime;
float t = Mathf.Clamp01(timer / half);
target.localScale = Vector3.Lerp(peak, originalScale, EaseOutCubic(t));
yield return null;
}
target.localScale = originalScale;
runningEffects.Remove(target);
}
public void Shake(RectTransform target, float strength = 12f, float duration = 0.18f)
{
if (target == null)
return;
StopManaged(target);
runningEffects[target] = StartCoroutine(ShakeRoutine(target, Mathf.Max(0f, strength), Mathf.Max(0.01f, duration)));
}
private IEnumerator ShakeRoutine(RectTransform target, float strength, float duration)
{
if (!originalAnchoredPositions.TryGetValue(target, out Vector2 originalPosition))
{
originalPosition = target.anchoredPosition;
originalAnchoredPositions[target] = originalPosition;
}
float timer = 0f;
while (timer < duration)
{
timer += Time.deltaTime;
float t = Mathf.Clamp01(timer / duration);
float power = Mathf.Lerp(strength, 0f, t);
Vector2 offset = UnityEngine.Random.insideUnitCircle * power;
target.anchoredPosition = originalPosition + offset;
yield return null;
}
target.anchoredPosition = originalPosition;
runningEffects.Remove(target);
}
public void Flash(Image image, Color color, float maxAlpha = 0.28f, float duration = 0.16f)
{
if (image == null)
return;
StopManaged(image);
runningEffects[image] = StartCoroutine(FlashRoutine(image, color, Mathf.Clamp01(maxAlpha), Mathf.Max(0.01f, duration)));
}
private IEnumerator FlashRoutine(Image image, Color color, float maxAlpha, float duration)
{
image.gameObject.SetActive(true);
image.raycastTarget = false;
float timer = 0f;
while (timer < duration)
{
timer += Time.deltaTime;
float t = Mathf.Clamp01(timer / duration);
Color current = color;
current.a = Mathf.Lerp(maxAlpha, 0f, EaseOutCubic(t));
image.color = current;
yield return null;
}
Color clear = color;
clear.a = 0f;
image.color = clear;
image.gameObject.SetActive(false);
runningEffects.Remove(image);
}
public void FillImage(Image image, float targetFill, float duration)
{
if (image == null)
return;
targetFill = Mathf.Clamp01(targetFill);
StopManaged(image);
runningEffects[image] = StartCoroutine(FillImageRoutine(image, targetFill, Mathf.Max(0f, duration)));
}
private IEnumerator FillImageRoutine(Image image, float targetFill, float duration)
{
float startFill = image.fillAmount;
if (duration <= 0f)
{
image.fillAmount = targetFill;
}
else
{
float timer = 0f;
while (timer < duration)
{
timer += Time.deltaTime;
float t = Mathf.Clamp01(timer / duration);
image.fillAmount = Mathf.Lerp(startFill, targetFill, EaseOutCubic(t));
yield return null;
}
image.fillAmount = targetFill;
}
runningEffects.Remove(image);
}
public void HighlightSlot(Image background, Image icon, Transform slotRoot, Color highlightColor, float duration, float popScale)
{
Object key = background != null ? background : icon != null ? icon : slotRoot;
if (key == null)
return;
StopManaged(key);
runningEffects[key] = StartCoroutine(HighlightSlotRoutine(background, icon, slotRoot, highlightColor, Mathf.Max(0.01f, duration), Mathf.Max(1f, popScale), key));
}
private IEnumerator HighlightSlotRoutine(Image background, Image icon, Transform slotRoot, Color highlightColor, float duration, float popScale, Object key)
{
Color? originalBackground = null;
Color? originalIcon = null;
Vector3 originalScale = Vector3.one;
if (background != null)
{
originalBackground = background.color;
Color c = Color.Lerp(background.color, highlightColor, 0.65f);
c.a = 1f;
background.color = c;
}
if (icon != null)
{
originalIcon = icon.color;
Color c = icon.color;
c.a = 1f;
icon.color = c;
}
if (slotRoot != null)
{
if (!originalScales.TryGetValue(slotRoot, out originalScale))
{
originalScale = slotRoot.localScale;
originalScales[slotRoot] = originalScale;
}
}
float half = duration * 0.5f;
float timer = 0f;
while (timer < half)
{
timer += Time.deltaTime;
float t = Mathf.Clamp01(timer / half);
if (slotRoot != null)
slotRoot.localScale = Vector3.Lerp(originalScale, originalScale * popScale, EaseOutCubic(t));
yield return null;
}
timer = 0f;
Vector3 peak = originalScale * popScale;
while (timer < half)
{
timer += Time.deltaTime;
float t = Mathf.Clamp01(timer / half);
if (slotRoot != null)
slotRoot.localScale = Vector3.Lerp(peak, originalScale, EaseOutCubic(t));
if (background != null && originalBackground.HasValue)
background.color = Color.Lerp(background.color, originalBackground.Value, t);
if (icon != null && originalIcon.HasValue)
icon.color = Color.Lerp(icon.color, originalIcon.Value, t);
yield return null;
}
if (slotRoot != null)
slotRoot.localScale = originalScale;
if (background != null && originalBackground.HasValue)
background.color = originalBackground.Value;
if (icon != null && originalIcon.HasValue)
icon.color = originalIcon.Value;
runningEffects.Remove(key);
}
public void StopAllEffects()
{
foreach (Coroutine coroutine in runningEffects.Values)
{
if (coroutine != null)
StopCoroutine(coroutine);
}
runningEffects.Clear();
foreach (KeyValuePair<Transform, Vector3> pair in originalScales)
{
if (pair.Key != null)
pair.Key.localScale = pair.Value;
}
foreach (KeyValuePair<RectTransform, Vector2> pair in originalAnchoredPositions)
{
if (pair.Key != null)
pair.Key.anchoredPosition = pair.Value;
}
}
private void StopManaged(Object key)
{
if (key == null)
return;
if (runningEffects.TryGetValue(key, out Coroutine coroutine) && coroutine != null)
StopCoroutine(coroutine);
runningEffects.Remove(key);
}
private float EaseOutCubic(float t)
{
t = Mathf.Clamp01(t);
t = 1f - Mathf.Pow(1f - t, 3f);
return t;
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b9b3bfbbd08e39e42b891728dcad3a9c

View File

@@ -5,15 +5,22 @@ public class RotateUI : MonoBehaviour
[Header("Rotation Settings")] [Header("Rotation Settings")]
[SerializeField] private float rotateSpeed = 30f; [SerializeField] private float rotateSpeed = 30f;
[SerializeField] private bool clockwise = true; [SerializeField] private bool clockwise = true;
[SerializeField] private bool playOnStart = true; [SerializeField] private bool playOnStart = false;
private bool isRotating; private bool isRotating;
public bool IsRotating => isRotating;
private void Awake() private void Awake()
{ {
isRotating = playOnStart; isRotating = playOnStart;
} }
private void OnValidate()
{
rotateSpeed = Mathf.Max(0f, rotateSpeed);
}
private void Update() private void Update()
{ {
if (!isRotating) if (!isRotating)
@@ -39,8 +46,13 @@ public void SetClockwise(bool value)
clockwise = value; clockwise = value;
} }
public void SetRotateSpeed(float value)
{
rotateSpeed = Mathf.Max(0f, value);
}
public void ResetRotation() public void ResetRotation()
{ {
transform.localEulerAngles = Vector3.zero; transform.localEulerAngles = Vector3.zero;
} }
} }

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: e36e14e60fc40cf41bfd445f80e62535
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 9b1669e795bdb7b4c88e4376a98347d9
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: d57aa12e9412ea74d844438588adc0f5
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: a9e1c44292c7bdb4da8926e8fc9addd2
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: e76bfcda04825f043b3f6c1e6cef400b
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 6365c45c31605c745bf1a33e3a1e0791
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 5d0cced1099954d478056e93dd67e0b4
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: b20f3401dfb723541b090e4f3bcf5901
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

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

View File

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

Binary file not shown.

View File

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

Binary file not shown.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 52b638411302f9445a3b1e998f291209
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 23800000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -40,7 +40,7 @@ Material:
- _ZCLIP_ON - _ZCLIP_ON
- _ZWRITE_ON - _ZWRITE_ON
m_LightmapFlags: 4 m_LightmapFlags: 4
m_EnableInstancingVariants: 0 m_EnableInstancingVariants: 1
m_DoubleSidedGI: 0 m_DoubleSidedGI: 0
m_CustomRenderQueue: -1 m_CustomRenderQueue: -1
stringTagMap: {} stringTagMap: {}

View File

@@ -38,7 +38,7 @@ Material:
- _WORLDSPACEUV_ON - _WORLDSPACEUV_ON
- _ZCLIP_ON - _ZCLIP_ON
m_LightmapFlags: 4 m_LightmapFlags: 4
m_EnableInstancingVariants: 0 m_EnableInstancingVariants: 1
m_DoubleSidedGI: 0 m_DoubleSidedGI: 0
m_CustomRenderQueue: -1 m_CustomRenderQueue: -1
stringTagMap: {} stringTagMap: {}
@@ -185,6 +185,7 @@ Material:
- _FoamBubblesSpread: 1 - _FoamBubblesSpread: 1
- _FoamBubblesStrength: 0.217 - _FoamBubblesStrength: 0.217
- _FoamClipping: 0.5 - _FoamClipping: 0.5
- _FoamClippingDynamic: 0
- _FoamDistanceOn: 1 - _FoamDistanceOn: 1
- _FoamDistortion: 0.34 - _FoamDistortion: 0.34
- _FoamOn: 1 - _FoamOn: 1
@@ -238,6 +239,7 @@ Material:
- _PlanarReflectionsParams: 0 - _PlanarReflectionsParams: 0
- _PointSpotLightReflectionDistortion: 0.5 - _PointSpotLightReflectionDistortion: 0.5
- _PointSpotLightReflectionExp: 64 - _PointSpotLightReflectionExp: 64
- _PointSpotLightReflectionSharp: 0
- _PointSpotLightReflectionSize: 0 - _PointSpotLightReflectionSize: 0
- _PointSpotLightReflectionStrength: 10 - _PointSpotLightReflectionStrength: 10
- _QueueOffset: 0 - _QueueOffset: 0
@@ -282,6 +284,7 @@ Material:
- _SrcBlend: 1 - _SrcBlend: 1
- _SunReflectionDistortion: 0.49 - _SunReflectionDistortion: 0.49
- _SunReflectionPerturbance: 1 - _SunReflectionPerturbance: 1
- _SunReflectionSharp: 0
- _SunReflectionSize: 0.122 - _SunReflectionSize: 0.122
- _SunReflectionStrength: 0 - _SunReflectionStrength: 0
- _Surface: 0 - _Surface: 0
@@ -295,6 +298,7 @@ Material:
- _TranslucencyReflectionMask: 0 - _TranslucencyReflectionMask: 0
- _TranslucencyStrength: 1 - _TranslucencyStrength: 1
- _TranslucencyStrengthDirect: 0.05 - _TranslucencyStrengthDirect: 0.05
- _UnderwaterReflectionStrength: 0.5
- _UnderwaterRefractionOffset: 0.2 - _UnderwaterRefractionOffset: 0.2
- _UnderwaterSurfaceSmoothness: 0.8 - _UnderwaterSurfaceSmoothness: 0.8
- _VertexColorFoam: 0 - _VertexColorFoam: 0

View File

@@ -2,7 +2,7 @@
%TAG !u! tag:unity3d.com,2011: %TAG !u! tag:unity3d.com,2011:
--- !u!114 &1 --- !u!114 &1
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 53 m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
@@ -11,5 +11,5 @@ MonoBehaviour:
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7e9a0ba2b7f40ebbb3dad8385aa807b, type: 3} m_Script: {fileID: 11500000, guid: d7e9a0ba2b7f40ebbb3dad8385aa807b, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Unity.XR.AndroidOpenXR.Editor::UnityEditor.XR.OpenXR.Features.Android.AndroidXRSettingsInitializer m_EditorClassIdentifier:
isInitialized: 0 isInitialized: 0

View File

@@ -1,4 +1,5 @@
{ {
"version": 1,
"name": "XRI Default Input Actions", "name": "XRI Default Input Actions",
"maps": [ "maps": [
{ {
@@ -3373,6 +3374,94 @@
"isPartOfComposite": true "isPartOfComposite": true
} }
] ]
},
{
"name": "Fishing",
"id": "3c6bb206-3104-4a53-bb96-176241ce078c",
"actions": [
{
"name": "ReturnBobber",
"type": "Button",
"id": "9cdb56e8-00cd-48ec-9198-6c70a8d9fe39",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "CastBobber",
"type": "Button",
"id": "c85d2e74-550d-4a30-9a50-17d5daf11580",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "ReelHold",
"type": "Button",
"id": "796d924d-c49e-49a2-89c8-a3336b7faed2",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "SubmitFishing",
"type": "Button",
"id": "c45b8ecb-0e50-49f0-bc60-479385b0bf5f",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
}
],
"bindings": [
{
"name": "",
"id": "deb6a7a2-8de5-46b1-812b-d24b20c907a2",
"path": "<XRController>{RightHand}/secondaryButton",
"interactions": "",
"processors": "",
"groups": "",
"action": "ReturnBobber",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "22448257-ef2a-42bf-a6c0-66fad17ee5e8",
"path": "<XRController>{RightHand}/primaryButton",
"interactions": "",
"processors": "",
"groups": "",
"action": "CastBobber",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "a6cfa3d8-bd52-4c0e-8ff2-414ab0f22663",
"path": "<XRController>{LeftHand}/gripPressed",
"interactions": "",
"processors": "",
"groups": "",
"action": "ReelHold",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "f435cfcf-7a21-40e3-b066-c6bbfc42783c",
"path": "<XRController>{RightHand}/triggerPressed",
"interactions": "",
"processors": "",
"groups": "",
"action": "SubmitFishing",
"isComposite": false,
"isPartOfComposite": false
}
]
} }
], ],
"controlSchemes": [] "controlSchemes": []

Binary file not shown.

Binary file not shown.