commonButton 연동

This commit is contained in:
NTG 2025-08-25 10:54:25 +09:00
parent 3e93ad0b39
commit cf43d6f0ff
35 changed files with 4247 additions and 782 deletions

View File

@ -8,9 +8,9 @@ public class SetXY : Action
{
[Tooltip("The Vector2 to set the values of")]
public SharedVector2 vector2Variable;
[Tooltip("The X value. Set to None to have the value ignored")]
[Tooltip("The X value. Set to Normal to have the value ignored")]
public SharedFloat xValue;
[Tooltip("The Y value. Set to None to have the value ignored")]
[Tooltip("The Y value. Set to Normal to have the value ignored")]
public SharedFloat yValue;
public override TaskStatus OnUpdate()

View File

@ -8,11 +8,11 @@ public class SetXYZ : Action
{
[Tooltip("The Vector3 to set the values of")]
public SharedVector3 vector3Variable;
[Tooltip("The X value. Set to None to have the value ignored")]
[Tooltip("The X value. Set to Normal to have the value ignored")]
public SharedFloat xValue;
[Tooltip("The Y value. Set to None to have the value ignored")]
[Tooltip("The Y value. Set to Normal to have the value ignored")]
public SharedFloat yValue;
[Tooltip("The Z value. Set to None to have the value ignored")]
[Tooltip("The Z value. Set to Normal to have the value ignored")]
public SharedFloat zValue;
public override TaskStatus OnUpdate()

Binary file not shown.

View File

@ -97,7 +97,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 1.1, y: 1.1, z: 1.1}
value: {x: 1, y: 1, z: 1}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@ -274,7 +274,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 1.1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
@ -295,7 +295,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 1.1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
@ -316,7 +316,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 1.1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 136
@ -480,42 +480,42 @@ AnimatorController:
m_Name: CategoryTabUi
serializedVersion: 5
m_AnimatorParameters:
- m_Name: Normal
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Highlighted
m_Type: 9
- m_Name: Disabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Pressed
m_Type: 9
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Toggled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Selected
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Disabled
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: CanDisabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Highlighted
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Enabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 1
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@ -537,8 +537,8 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: CanDisabled
- m_ConditionMode: 2
m_ConditionEvent: Enabled
m_EventTreshold: 0
- m_ConditionMode: 1
m_ConditionEvent: Disabled
@ -1350,7 +1350,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 0.71765
value: 0.8
inSlope: 0
outSlope: 0
tangentMode: 136
@ -1572,7 +1572,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 0.71765
value: 0.8
inSlope: 0
outSlope: 0
tangentMode: 136
@ -1649,26 +1649,26 @@ AnimatorStateMachine:
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -9197952397577950673}
m_Position: {x: 200, y: 0, z: 0}
m_Position: {x: 400, y: -20, z: 0}
- serializedVersion: 1
m_State: {fileID: 5740288191183519716}
m_Position: {x: 235, y: 65, z: 0}
m_Position: {x: 430, y: 50, z: 0}
- serializedVersion: 1
m_State: {fileID: 2264358156696285842}
m_Position: {x: 270, y: 130, z: 0}
m_Position: {x: 470, y: 110, z: 0}
- serializedVersion: 1
m_State: {fileID: -2657841246124178625}
m_Position: {x: 305, y: 195, z: 0}
m_Position: {x: 500, y: 180, z: 0}
- serializedVersion: 1
m_State: {fileID: -4335743845369311454}
m_Position: {x: 340, y: 260, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: 7122475715172880790}
- {fileID: -4959916750101030702}
- {fileID: 113719257869837387}
- {fileID: -4382471172070126114}
- {fileID: 8410860602511447315}
- {fileID: 113719257869837387}
- {fileID: -4959916750101030702}
- {fileID: 7122475715172880790}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@ -1685,8 +1685,17 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Normal
- m_ConditionMode: 2
m_ConditionEvent: Disabled
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Pressed
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Toggled
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Highlighted
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -9197952397577950673}
@ -2054,7 +2063,7 @@ AnimatorStateTransition:
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Selected
m_ConditionEvent: Toggled
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -2657841246124178625}

View File

@ -876,8 +876,8 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: CanDisabled
- m_ConditionMode: 2
m_ConditionEvent: Enabled
m_EventTreshold: 0
- m_ConditionMode: 1
m_ConditionEvent: Disabled
@ -907,26 +907,26 @@ AnimatorStateMachine:
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -6677785953113548519}
m_Position: {x: 200, y: 0, z: 0}
m_Position: {x: 360, y: -10, z: 0}
- serializedVersion: 1
m_State: {fileID: -8792213448813508643}
m_Position: {x: 235, y: 65, z: 0}
m_Position: {x: 390, y: 50, z: 0}
- serializedVersion: 1
m_State: {fileID: 5205114662233237982}
m_Position: {x: 270, y: 130, z: 0}
m_Position: {x: 430, y: 120, z: 0}
- serializedVersion: 1
m_State: {fileID: -5490678238363298755}
m_Position: {x: 305, y: 195, z: 0}
m_Position: {x: 460, y: 180, z: 0}
- serializedVersion: 1
m_State: {fileID: 1374993701516088108}
m_Position: {x: 340, y: 260, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -30650213741062983}
- {fileID: -6580421973980778535}
- {fileID: -4112017457821995473}
- {fileID: -566993761381039251}
- {fileID: 8862062841961532378}
- {fileID: -4112017457821995473}
- {fileID: -6580421973980778535}
- {fileID: -30650213741062983}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@ -968,8 +968,17 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Normal
- m_ConditionMode: 2
m_ConditionEvent: Disabled
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Pressed
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Toggled
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Highlighted
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -6677785953113548519}
@ -994,42 +1003,42 @@ AnimatorController:
m_Name: SectionTabUi
serializedVersion: 5
m_AnimatorParameters:
- m_Name: Normal
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Highlighted
m_Type: 9
- m_Name: Disabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Pressed
m_Type: 9
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Toggled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Selected
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Disabled
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: CanDisabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Highlighted
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Enabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 1
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@ -1134,7 +1143,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 0.7176471
value: 0.8
inSlope: 0
outSlope: 0
tangentMode: 136
@ -1284,7 +1293,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 0.7176471
value: 0.8
inSlope: 0
outSlope: 0
tangentMode: 136
@ -1614,7 +1623,7 @@ AnimatorStateTransition:
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Selected
m_ConditionEvent: Toggled
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -5490678238363298755}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 077fbb30d2367574db4211e2945acda0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -8,8 +8,20 @@ AnimatorStateTransition:
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Normal
- m_ConditionMode: 2
m_ConditionEvent: Disabled
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Pressed
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Toggled
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Selected
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Highlighted
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -6259034119004896615}
@ -368,26 +380,26 @@ AnimatorStateMachine:
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -6259034119004896615}
m_Position: {x: 200, y: 0, z: 0}
m_Position: {x: 460, y: 0, z: 0}
- serializedVersion: 1
m_State: {fileID: -4170228312314127899}
m_Position: {x: 235, y: 65, z: 0}
m_Position: {x: 540, y: 70, z: 0}
- serializedVersion: 1
m_State: {fileID: -2429834667517848280}
m_Position: {x: 270, y: 130, z: 0}
m_Position: {x: 520, y: 140, z: 0}
- serializedVersion: 1
m_State: {fileID: 6386372134413823796}
m_Position: {x: 305, y: 195, z: 0}
m_Position: {x: 510, y: 200, z: 0}
- serializedVersion: 1
m_State: {fileID: -755592736906726463}
m_Position: {x: 340, y: 260, z: 0}
m_Position: {x: 430, y: 270, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -8454442321133926692}
- {fileID: 5688398759945136006}
- {fileID: 768286118201508997}
- {fileID: -2947644494943107051}
- {fileID: 814151823820984193}
- {fileID: 768286118201508997}
- {fileID: 5688398759945136006}
- {fileID: -8454442321133926692}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@ -1120,36 +1132,42 @@ AnimatorController:
m_Name: InventorySlotUi
serializedVersion: 5
m_AnimatorParameters:
- m_Name: Normal
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Highlighted
m_Type: 9
- m_Name: Disabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Pressed
m_Type: 9
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Toggled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Selected
m_Type: 9
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Disabled
m_Type: 9
- m_Name: Highlighted
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Enabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 1
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer

View File

@ -1,6 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1101 &-8454442321133926692
--- !u!1101 &-8514625505402044885
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
@ -9,7 +9,44 @@ AnimatorStateTransition:
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Normal
m_ConditionEvent: Pressed
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -2429834667517848280}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-8454442321133926692
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 2
m_ConditionEvent: Toggled
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Highlighted
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Pressed
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Selected
m_EventTreshold: 0
- m_ConditionMode: 2
m_ConditionEvent: Disabled
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -6259034119004896615}
@ -368,25 +405,25 @@ AnimatorStateMachine:
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -6259034119004896615}
m_Position: {x: 200, y: 0, z: 0}
m_Position: {x: 410, y: 0, z: 0}
- serializedVersion: 1
m_State: {fileID: -4170228312314127899}
m_Position: {x: 235, y: 65, z: 0}
m_Position: {x: 580, y: 60, z: 0}
- serializedVersion: 1
m_State: {fileID: -2429834667517848280}
m_Position: {x: 270, y: 130, z: 0}
m_Position: {x: 540, y: 140, z: 0}
- serializedVersion: 1
m_State: {fileID: 6386372134413823796}
m_Position: {x: 305, y: 195, z: 0}
m_Position: {x: 530, y: 210, z: 0}
- serializedVersion: 1
m_State: {fileID: -755592736906726463}
m_Position: {x: 340, y: 260, z: 0}
m_Position: {x: 410, y: 270, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: 768286118201508997}
- {fileID: 814151823820984193}
- {fileID: -2947644494943107051}
- {fileID: 5688398759945136006}
- {fileID: -1036174919220373316}
- {fileID: -8514625505402044885}
- {fileID: 5381093293389739199}
- {fileID: 1846144826618844133}
- {fileID: -8454442321133926692}
m_EntryTransitions: []
m_StateMachineTransitions: {}
@ -728,31 +765,6 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-2947644494943107051
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Pressed
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -2429834667517848280}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-2429834667517848280
AnimatorState:
serializedVersion: 6
@ -1085,6 +1097,31 @@ AnimationClip:
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
--- !u!1101 &-1036174919220373316
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Disabled
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -755592736906726463}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-755592736906726463
AnimatorState:
serializedVersion: 6
@ -1120,36 +1157,42 @@ AnimatorController:
m_Name: TodayMenuSlotUi
serializedVersion: 5
m_AnimatorParameters:
- m_Name: Normal
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Highlighted
m_Type: 9
- m_Name: Disabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Pressed
m_Type: 9
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Toggled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Selected
m_Type: 9
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Disabled
m_Type: 9
- m_Name: Highlighted
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Enabled
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 1
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@ -1163,57 +1206,7 @@ AnimatorController:
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &768286118201508997
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Disabled
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -755592736906726463}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &814151823820984193
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Selected
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 6386372134413823796}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &5688398759945136006
--- !u!1101 &1846144826618844133
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
@ -1238,6 +1231,31 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &5381093293389739199
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Selected
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 6386372134413823796}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!74 &5939040793034423229
AnimationClip:
m_ObjectHideFlags: 0

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 077fbb30d2367574db4211e2945acda0
guid: eb71f745b6cd4de419660adac752471b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000

View File

@ -13,6 +13,7 @@ GameObject:
- component: {fileID: 7876932839802805243}
- component: {fileID: 6141761943717344037}
- component: {fileID: 2840965674874438582}
- component: {fileID: 8127989733875123651}
m_Layer: 5
m_Name: BaseButton
m_TagString: Untagged
@ -68,7 +69,7 @@ MonoBehaviour:
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 3
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
@ -89,7 +90,7 @@ MonoBehaviour:
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 0}
m_TargetGraphic: {fileID: 2857241882409296209}
m_OnClick:
m_PersistentCalls:
m_Calls: []
@ -103,7 +104,7 @@ Animator:
m_GameObject: {fileID: 7153853149712347897}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 662dee01fb75baf4a8b0706a2a8997d1, type: 2}
m_Controller: {fileID: 9100000, guid: 077fbb30d2367574db4211e2945acda0, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
@ -135,6 +136,22 @@ MonoBehaviour:
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &8127989733875123651
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7153853149712347897}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fb17a59bc188495b84cb323bb982f64b, type: 3}
m_Name:
m_EditorClassIdentifier:
_button: {fileID: 7876932839802805243}
_animator: {fileID: 6141761943717344037}
_synchronizeStates: 1
_buttonType: 0
--- !u!1001 &1381293524313834950
PrefabInstance:
m_ObjectHideFlags: 0
@ -165,7 +182,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7857853769095069531, guid: c7ae409f7430c9a408d36ccf54ef4164, type: 3}
propertyPath: m_Name
value: TextLabel
value: Label
objectReference: {fileID: 0}
- target: {fileID: 9048682655274794071, guid: c7ae409f7430c9a408d36ccf54ef4164, type: 3}
propertyPath: m_Pivot.x
@ -359,13 +376,24 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 6023966856263752882, guid: ecdd9e5f95150a64788ab21d61a154b9, type: 3}
propertyPath: m_Name
value: BaseBackground
value: Background
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ecdd9e5f95150a64788ab21d61a154b9, type: 3}
--- !u!114 &2857241882409296209 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4684438329468569219, guid: ecdd9e5f95150a64788ab21d61a154b9, type: 3}
m_PrefabInstance: {fileID: 7396178934505482194}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!224 &3058851479138929988 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 5537097381728496278, guid: ecdd9e5f95150a64788ab21d61a154b9, type: 3}

View File

@ -158,6 +158,10 @@ PrefabInstance:
propertyPath: m_Name
value: ButtonWithOutline
objectReference: {fileID: 0}
- target: {fileID: 7876932839802805243, guid: 556da9949111f1a428d7e13fe22600fb, type: 3}
propertyPath: m_TargetGraphic
value:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects:
- {fileID: 3836482481758862176, guid: 556da9949111f1a428d7e13fe22600fb, type: 3}
@ -262,7 +266,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4018690074381891769, guid: b82b15dc37a01c04d82151c6c7fd0ee6, type: 3}
propertyPath: m_Name
value: BackgroundWithOutline
value: Background
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []

View File

@ -163,6 +163,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2994250131869375978, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Name
value: Background
objectReference: {fileID: 0}
- target: {fileID: 6930594362999665433, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Name
value: FilledButtonWithOutline

View File

@ -294,10 +294,6 @@ PrefabInstance:
propertyPath: m_HorizontalAlignment
value: 4
objectReference: {fileID: 0}
- target: {fileID: 6220058918333870789, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 9100000, guid: 83afdd7c8e0232443a83b09a90d0d3b1, type: 2}
- target: {fileID: 6930594362999665433, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Name
value: ItemSlot
@ -343,17 +339,6 @@ PrefabInstance:
insertIndex: -1
addedObject: {fileID: -7696367963215207771}
m_SourcePrefab: {fileID: 100100000, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
--- !u!114 &304190825780974321 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7942522337697241627, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
m_PrefabInstance: {fileID: 7638441478130698474}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 733902947636509683}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &733902947636509683 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6930594362999665433, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
@ -372,7 +357,6 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
<RectTransform>k__BackingField: {fileID: 7689845634213550448}
_button: {fileID: 304190825780974321}
_backgroundImage: {fileID: 5843313364549996337}
_icon: {fileID: 4868191311215280477}
_countText: {fileID: 3433189186403740826}

View File

@ -112,14 +112,14 @@ PrefabInstance:
propertyPath: m_fontSize
value: 36
objectReference: {fileID: 0}
- target: {fileID: 6220058918333870789, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 0}
- target: {fileID: 6930594362999665433, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Name
value: TabButton
objectReference: {fileID: 0}
- target: {fileID: 8333232481367262243, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: _buttonType
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@ -145,23 +145,4 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a0323801ed497de44ab53f18c23cc402, type: 3}
m_Name:
m_EditorClassIdentifier:
_button: {fileID: 1035128454163554855}
_animator: {fileID: 3906332291023473401}
_content: []
_isEnabled: 1
--- !u!114 &1035128454163554855 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7942522337697241627, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
m_PrefabInstance: {fileID: 6945678879497254972}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 20944589761710885}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!95 &3906332291023473401 stripped
Animator:
m_CorrespondingSourceObject: {fileID: 6220058918333870789, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
m_PrefabInstance: {fileID: 6945678879497254972}
m_PrefabAsset: {fileID: 0}

View File

@ -96,6 +96,10 @@ PrefabInstance:
propertyPath: m_text
value: "\uD655\uC778"
objectReference: {fileID: 0}
- target: {fileID: 6220058918333870789, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 9100000, guid: 1ccba7a2ea7adb54b9c10f748eb5e15c, type: 2}
- target: {fileID: 6930594362999665433, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Name
value: ConfirmButton
@ -118,15 +122,15 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 51478933647135130, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
m_PrefabInstance: {fileID: 365676999855177481}
m_PrefabAsset: {fileID: 0}
--- !u!114 &7722165617535051026 stripped
--- !u!114 &8554221910551001898 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7942522337697241627, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
m_CorrespondingSourceObject: {fileID: 8333232481367262243, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
m_PrefabInstance: {fileID: 365676999855177481}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Script: {fileID: 11500000, guid: fb17a59bc188495b84cb323bb982f64b, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1754916058526123613
@ -327,6 +331,10 @@ PrefabInstance:
propertyPath: m_text
value: "\uCDE8\uC18C"
objectReference: {fileID: 0}
- target: {fileID: 6220058918333870789, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 9100000, guid: 1ccba7a2ea7adb54b9c10f748eb5e15c, type: 2}
- target: {fileID: 6930594362999665433, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
propertyPath: m_Name
value: CancelButton
@ -340,15 +348,15 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
--- !u!114 &3014273876221658359 stripped
--- !u!114 &3767486664176736975 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7942522337697241627, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
m_CorrespondingSourceObject: {fileID: 8333232481367262243, guid: 4e6ece2a19dc5204bb37f2182e8d857c, type: 3}
m_PrefabInstance: {fileID: 5182899775093219052}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Script: {fileID: 11500000, guid: fb17a59bc188495b84cb323bb982f64b, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!224 &5141905932541103990 stripped
@ -813,12 +821,11 @@ MonoBehaviour:
m_EditorClassIdentifier:
<UiType>k__BackingField: 3
_enableBlockImage: 1
InputActionMaps: 3
_uiActionsInputBinding: {fileID: 11400000, guid: 99d3d87bd43df65488e757c43a308f36, type: 2}
_messageLabel: {fileID: 3495127426411772216}
_messageLabelLocalizeStringEvent: {fileID: 7334955628972040157}
_cancelButton: {fileID: 3014273876221658359}
_confirmButton: {fileID: 7722165617535051026}
_cancelButton: {fileID: 3767486664176736975}
_confirmButton: {fileID: 8554221910551001898}
--- !u!224 &1239966994818037661 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 8967231042952671610, guid: 4f2bf029cb06b084ba41defc8fc76731, type: 3}

View File

@ -5440,6 +5440,10 @@ PrefabInstance:
propertyPath: m_Name
value: CompleteBatchButton
objectReference: {fileID: 0}
- target: {fileID: 8042095202224553856, guid: 58ae0c57367fe0641baa61ad17086ce2, type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 9100000, guid: 1ccba7a2ea7adb54b9c10f748eb5e15c, type: 2}
- target: {fileID: 8965898531745589557, guid: 58ae0c57367fe0641baa61ad17086ce2, type: 3}
propertyPath: m_text
value: "\uBC30\uCE58 \uC644\uB8CC"
@ -5481,6 +5485,18 @@ PrefabInstance:
propertyPath: propertyValue
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5843313364549996337, guid: 1ad3a3bc80a837444b272ed226c73c9a, type: 3}
propertyPath: m_Color.b
value: 0.44705886
objectReference: {fileID: 0}
- target: {fileID: 5843313364549996337, guid: 1ad3a3bc80a837444b272ed226c73c9a, type: 3}
propertyPath: m_Color.g
value: 0.5254902
objectReference: {fileID: 0}
- target: {fileID: 5843313364549996337, guid: 1ad3a3bc80a837444b272ed226c73c9a, type: 3}
propertyPath: m_Color.r
value: 0.5529412
objectReference: {fileID: 0}
- target: {fileID: 7689845634213550448, guid: 1ad3a3bc80a837444b272ed226c73c9a, type: 3}
propertyPath: m_Pivot.x
value: 0.5
@ -8375,6 +8391,10 @@ PrefabInstance:
propertyPath: m_Navigation.m_Mode
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1423582709212085279, guid: b8766f1471289d74bbcdc2f5ad979e8b, type: 3}
propertyPath: _isEnabled
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2720195383270857804, guid: b8766f1471289d74bbcdc2f5ad979e8b, type: 3}
propertyPath: m_text
value: "\uC810\uC6D0"

View File

@ -1899,6 +1899,10 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -2
objectReference: {fileID: 0}
- target: {fileID: 9202130552867610519, guid: 1804d4a9b5156fb4fab4ef0464ee226b, type: 3}
propertyPath: _animator
value:
objectReference: {fileID: 0}
m_RemovedComponents:
- {fileID: 6504051702555978097, guid: 1804d4a9b5156fb4fab4ef0464ee226b, type: 3}
m_RemovedGameObjects: []

View File

@ -59,7 +59,7 @@ public async Task Init()
}
#else
var data = new SceneData(activeScene, null);
_loadedSceneDatas[GameFlowState.None] = data;
_loadedSceneDatas[GameFlowState.Normal] = data;
#endif
await PreloadAll();
}

View File

@ -1,6 +1,7 @@
using System;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.InputSystem;
using UnityEngine.Localization.Components;
@ -12,11 +13,11 @@ public class ConfirmUi : PopupUi<RestaurantUiActions, ConfirmViewModel>
{
[SerializeField] private TextMeshProUGUI _messageLabel;
[SerializeField] private LocalizeStringEvent _messageLabelLocalizeStringEvent;
[SerializeField] private Button _cancelButton;
[SerializeField] private Button _confirmButton;
[SerializeField] private CommonButton _cancelButton;
[SerializeField] private CommonButton _confirmButton;
private Action _onCancel;
private Action _onConfirm;
private UnityAction _onCancel;
private UnityAction _onConfirm;
protected override GameObject GetInitialSelected()
{
@ -36,8 +37,14 @@ public override void Open(OpenPopupUiEvent evt)
_messageLabelLocalizeStringEvent.StringReference = LocalizationManager.Instance.GetLocalizedString(evt.NewMessageKey);
_cancelButton.onClick.RemoveAllListeners();
_confirmButton.onClick.RemoveAllListeners();
if (_onCancel != null)
{
_cancelButton.RemoveListener(_onCancel);
}
if (_onConfirm != null)
{
_confirmButton.RemoveListener(_onConfirm);
}
_onCancel = () =>
{
@ -51,13 +58,14 @@ public override void Open(OpenPopupUiEvent evt)
Close();
};
_cancelButton.onClick.AddListener(() => _onCancel?.Invoke());
_confirmButton.onClick.AddListener(() => _onConfirm?.Invoke());
_cancelButton.AddListener(_onCancel);
_confirmButton.AddListener(_onConfirm);
_cancelButton.gameObject.SetActive(evt.IsCancelButtonVisible);
}
protected override bool OnInputPerformed(RestaurantUiActions actionEnum, InputAction.CallbackContext context)
{
if (base.OnInputPerformed(actionEnum, context) == false) return false;

View File

@ -9,7 +9,7 @@ public enum TodayMenuEventType
Remove
}
public class ItemSlotInteractor : MonoBehaviour, IInteractableUi
public class ItemSlotInteractor : MonoBehaviour
{
private ItemSlotUi _itemSlotUi;
@ -17,18 +17,15 @@ public class ItemSlotInteractor : MonoBehaviour, IInteractableUi
public IItemSlotInteractorStrategy Strategy { get; private set; }
private void Awake()
{
_itemSlotUi = GetComponent<ItemSlotUi>();
}
public void Initialize(TodayMenuEventType todayMenuEventType, IItemSlotInteractorStrategy strategy)
{
_itemSlotUi = GetComponent<ItemSlotUi>();
_todayMenuEventType = todayMenuEventType;
Strategy = strategy;
_itemSlotUi.AddListener(OnInteracted);
}
public void OnInteract()
public void OnInteracted()
{
switch (_todayMenuEventType)
{

View File

@ -1,14 +1,15 @@
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace DDD
{
[RequireComponent(typeof(CommonButton))]
public class ItemSlotUi : MonoBehaviour, ISelectHandler, IAutoScrollItem
{
[field: SerializeField] public RectTransform RectTransform { get; private set; }
[SerializeField] private Button _button;
[SerializeField] private Image _backgroundImage;
[SerializeField] private Image _icon;
[SerializeField] private TextMeshProUGUI _countText;
@ -17,9 +18,13 @@ public class ItemSlotUi : MonoBehaviour, ISelectHandler, IAutoScrollItem
[field: SerializeField] public ItemViewModel Model { get; private set; }
public IItemSlotUiStrategy Strategy { get; private set; }
private CommonButton _commonButton;
public void Initialize(ItemViewModel model, IItemSlotUiStrategy strategy)
{
_commonButton = GetComponent<CommonButton>();
Model = model;
Strategy = strategy;
@ -43,12 +48,14 @@ public void ShowMark(Sprite sprite)
_markImage.gameObject.SetActive(true);
}
public void HideMark() => _markImage.gameObject.SetActive(false);
public void SetButtonInteractable(bool interactable) => _button.interactable = interactable;
public void SetButtonInteractable(bool interactable) => _commonButton.SetInteractable(interactable);
public void SetActive(bool value) => gameObject.SetActive(value);
public void OnSelect(BaseEventData eventData)
{
RestaurantEvents.ItemSlotSelectedEvent.Model = Model;
EventBus.Broadcast(RestaurantEvents.ItemSlotSelectedEvent);
}
public void AddListener(UnityAction action) => _commonButton.AddListener(action);
public void ForceUpdateState() => _commonButton.ForceUpdateState();
}
}

View File

@ -98,7 +98,6 @@ protected override GameObject GetInitialSelected()
{
if (IsInitialized == false) return null;
// ViewModel의 현재 상태에 따라 초기 선택 UI 결정
var inventoryInitialSelected = _inventoryView.GetInitialSelected();
if (inventoryInitialSelected)
{

View File

@ -1,4 +1,5 @@
using System;
using UnityEngine.Events;
namespace DDD
{
@ -18,12 +19,6 @@ public interface ITabButton
/// </summary>
bool IsInteractable { get; }
/// <summary>
/// 탭 데이터를 설정합니다.
/// </summary>
/// <param name="tabValue">탭 값</param>
void SetTabData(int tabValue);
/// <summary>
/// 탭의 선택 상태를 설정합니다.
/// </summary>
@ -33,6 +28,6 @@ public interface ITabButton
/// <summary>
/// 탭이 클릭되었을 때 발생하는 이벤트
/// </summary>
event Action<int> OnTabClicked;
event UnityAction OnSelected;
}
}

View File

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
namespace DDD
{
@ -22,87 +21,43 @@ public enum InventoryCategoryType
Cookware, // 조리도구
Special // 특수 아이템
}
/// <summary>
/// 공통 탭 버튼 UI 클래스
/// 제네릭 없이 탭을 관리합니다.
/// </summary>
public class TabButtonUi : MonoBehaviour, IInteractableUi, ITabButton
[RequireComponent(typeof(CommonButton))]
public class TabButtonUi : MonoBehaviour, ITabButton
{
[SerializeField] private Button _button;
[SerializeField] private Animator _animator;
[SerializeField] private List<GameObject> _content = new();
[SerializeField] private bool _isEnabled = true;
private Action<int> _onSelected;
private CommonButton _commonButton;
private bool _isSelected;
// ITabButton 인터페이스 구현을 위한 필드
private int _tabButtonValue;
public event Action<int> OnTabClicked;
private readonly int _canDisabled = Animator.StringToHash("CanDisabled");
public event UnityAction OnSelected;
// ITabButton 인터페이스 구현
public int TabValue => _tabButtonValue;
public bool IsInteractable => _button != null && _button.interactable;
public bool IsInteractable => _commonButton.IsInteractable;
private void OnEnable()
{
if (_isEnabled == false)
{
_animator.SetBool(_canDisabled, true);
return;
}
if (_isSelected == true)
{
_animator.SetTrigger(nameof(DefaultAnimatorParams.Selected));
}
}
public void Initialize(Action<int> onSelected)
public void Initialize(int tabValue, UnityAction onSelected)
{
_commonButton = GetComponent<CommonButton>();
gameObject.SetActive(true);
_onSelected = onSelected;
_button.onClick.AddListener(() => _onSelected?.Invoke(_tabButtonValue));
if (_commonButton.IsEnabled == false) return;
_tabButtonValue = tabValue;
OnSelected = onSelected;
_commonButton.AddListener(OnSelected);
}
public void SetSelected(bool isSelected)
{
if (_isEnabled == false) return;
if (_commonButton.IsEnabled == false) return;
_isSelected = isSelected;
SetActiveContents(isSelected);
_button.interactable = _isSelected == false;
if (_isSelected == true)
{
_animator.SetTrigger(nameof(DefaultAnimatorParams.Selected));
}
else
{
_animator.SetTrigger(nameof(DefaultAnimatorParams.Normal));
}
}
public void SetTabData(int tabValue)
{
if (_isEnabled == false) return;
_tabButtonValue = tabValue;
// 버튼 클릭 이벤트 설정
if (_button != null)
{
_button.onClick.RemoveAllListeners();
_button.onClick.AddListener(() =>
{
_onSelected?.Invoke(tabValue);
OnTabClicked?.Invoke(tabValue);
});
}
_commonButton.SetToggle(_isSelected);
}
private void SetActiveContents(bool isActive)
@ -112,11 +67,5 @@ private void SetActiveContents(bool isActive)
content.SetActive(isActive);
}
}
public void OnInteract()
{
_onSelected?.Invoke(_tabButtonValue);
OnTabClicked?.Invoke(_tabButtonValue);
}
}
}
}

View File

@ -61,19 +61,6 @@ public class TabGroupUi : MonoBehaviour
public event Action<int> OnTabSelected;
private void OnDestroy()
{
if (_tabButtons == null) return;
foreach (var tabButton in _tabButtons)
{
if (tabButton != null)
{
tabButton.OnTabClicked -= HandleTabButtonClicked;
}
}
}
public void Initialize(Action<int> onTabSelected)
{
if (onTabSelected != null)
@ -119,13 +106,7 @@ public void InitializeTabsWithValues(List<int> allowedValues)
if (tabButton != null)
{
// 탭 버튼 데이터 설정
tabButton.SetTabData(enumValue);
// 클릭 이벤트 설정 (add/remove 패턴 사용)
tabButton.OnTabClicked += HandleTabButtonClicked;
// 딕셔너리에 추가
tabButton.Initialize(enumValue, () => HandleTabButtonClicked(enumValue));
_tabLookup[enumValue] = tabButton;
}
}

View File

@ -0,0 +1,292 @@
using System;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.InputSystem;
namespace DDD
{
public enum ButtonState
{
Normal,
Highlighted,
Pressed,
Selected,
Disabled
}
public enum ButtonType
{
Normal = 0,
Toggle
}
[RequireComponent(typeof(Button))]
public class CommonButton : MonoBehaviour, IInteractableUi, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler,
IPointerDownHandler, IPointerUpHandler, ISelectHandler, IDeselectHandler, ISubmitHandler
{
[SerializeField] private Button _button;
[SerializeField] private Animator _animator;
[SerializeField] private bool _isEnabled = true;
[SerializeField] private bool _synchronizeStates = true;
[SerializeField] private ButtonType _buttonType;
private bool _isPressed;
private bool _isHighlighted;
private bool _isSelected;
private bool _isToggled;
private readonly int _normalHash = Animator.StringToHash("Normal");
private readonly int _highlightedHash = Animator.StringToHash("Highlighted");
private readonly int _pressedHash = Animator.StringToHash("Pressed");
private readonly int _selectedHash = Animator.StringToHash("Selected");
private readonly int _toggleHash = Animator.StringToHash("Toggled");
private readonly int _disabledHash = Animator.StringToHash("Disabled");
private readonly int _isEnabledHash = Animator.StringToHash("Enabled");
private void OnEnable()
{
_isPressed = false;
_isHighlighted = false;
_isSelected = false;
_isToggled = false;
UpdateVisualState();
}
private void OnDestroy()
{
if (_button)
{
_button.onClick.RemoveAllListeners();
}
}
private void UpdateVisualState()
{
if (gameObject.activeInHierarchy == false || _synchronizeStates == false) return;
var currentState = GetCurrentState();
ApplyVisualState(currentState);
}
private ButtonState GetCurrentState()
{
if (_buttonType == ButtonType.Normal)
{
if (_button.interactable == false)
{
return ButtonState.Disabled;
}
if (_isPressed)
{
return ButtonState.Pressed;
}
if (_isSelected)
{
return ButtonState.Selected;
}
return ButtonState.Normal;
}
if (_buttonType == ButtonType.Toggle)
{
if (_isToggled)
{
return ButtonState.Selected;
}
if (_isPressed)
{
return ButtonState.Pressed;
}
if (_isSelected || _isHighlighted)
{
return ButtonState.Highlighted;
}
if (_button.interactable == false)
{
return ButtonState.Disabled;
}
}
return ButtonState.Normal;
}
private void ApplyVisualState(ButtonState state)
{
if (_animator && _animator.runtimeAnimatorController)
{
ApplyAnimatorState(state);
}
}
private void ApplyAnimatorState(ButtonState state)
{
_animator.SetBool(_isEnabledHash, _isEnabled);
_animator.SetBool(_highlightedHash, _isHighlighted);
_animator.SetBool(_pressedHash, _isPressed);
_animator.SetBool(_selectedHash, _isSelected);
_animator.SetBool(_toggleHash, _isToggled);
_animator.SetBool(_disabledHash, !_button.interactable);
}
public void OnInteract()
{
_button.onClick.Invoke();
}
public void OnPointerClick(PointerEventData eventData)
{
UpdateVisualState();
}
public void OnPointerEnter(PointerEventData eventData)
{
if (_button.interactable == false) return;
if (_buttonType == ButtonType.Normal)
{
_isSelected = true;
EventSystem.current.SetSelectedGameObject(gameObject);
}
else if (_buttonType == ButtonType.Toggle)
{
_isHighlighted = true;
}
UpdateVisualState();
}
public void OnPointerExit(PointerEventData eventData)
{
if (_button.interactable == false) return;
if (_buttonType == ButtonType.Normal)
{
_isSelected = false;
}
else if (_buttonType == ButtonType.Toggle)
{
_isHighlighted = false;
}
UpdateVisualState();
}
public void OnPointerDown(PointerEventData eventData)
{
if (_button.interactable == false) return;
if (eventData.button == PointerEventData.InputButton.Left)
{
_isPressed = true;
UpdateVisualState();
}
}
public void OnPointerUp(PointerEventData eventData)
{
if (_button.interactable == false) return;
if (eventData.button == PointerEventData.InputButton.Left)
{
_isPressed = false;
if (_buttonType == ButtonType.Normal)
{
_isSelected = false;
}
else if (_buttonType == ButtonType.Toggle)
{
_isHighlighted = false;
_isToggled = true;
}
UpdateVisualState();
}
}
public void OnSelect(BaseEventData eventData)
{
if (_button.interactable == false) return;
if (_buttonType == ButtonType.Normal)
{
_isSelected = true;
}
else if (_buttonType == ButtonType.Toggle)
{
_isHighlighted = true;
}
UpdateVisualState();
}
public void OnDeselect(BaseEventData eventData)
{
if (_button.interactable == false) return;
if (_buttonType == ButtonType.Normal)
{
_isSelected = false;
}
else if (_buttonType == ButtonType.Toggle)
{
_isHighlighted = false;
}
UpdateVisualState();
}
public void OnSubmit(BaseEventData eventData)
{
_button.onClick.Invoke();
}
public void AddListener(UnityAction action) => _button.onClick.AddListener(action);
public void RemoveListener(UnityAction action) => _button?.onClick.RemoveListener(action);
public void RemoveAllListeners() => _button.onClick.RemoveAllListeners();
public bool IsEnabled => _isEnabled;
public bool IsInteractable => _button.interactable;
public void SetInteractable(bool interactable)
{
_button.interactable = interactable;
UpdateVisualState();
}
public void SetToggle(bool isSelected)
{
if (_buttonType == ButtonType.Toggle)
{
_isToggled = isSelected;
_isHighlighted = false;
_button.interactable = !isSelected;
}
UpdateVisualState();
}
public void ForceUpdateState()
{
UpdateVisualState();
}
public bool UseToggle
{
get => _buttonType == ButtonType.Toggle;
set => _buttonType = value ? ButtonType.Toggle : ButtonType.Normal;
}
public bool IsToggled => _isToggled;
public void SetToggleState(bool toggled)
{
if (_buttonType != ButtonType.Toggle) return;
_isToggled = toggled;
_isPressed = false;
if (!toggled)
{
_isSelected = false;
}
UpdateVisualState();
}
}
}

View File

@ -1,402 +0,0 @@
// using System;
// using UnityEngine;
// using UnityEngine.UI;
// using UnityEngine.EventSystems;
// using UnityEngine.InputSystem;
//
// namespace DDD
// {
// public enum ButtonState
// {
// Normal,
// Highlighted,
// Pressed,
// Selected,
// Disabled
// }
//
// public enum ButtonType
// {
// None = 0,
// Toggle
// }
//
// // TODO : ButtonType == None
// // normal, selected(마우스 pointerEnter, eventsystem selected), pressed (마우스 pointerDown, 키보드 외부 입력처리), disabled
// // Highlighted가 사실상 selected로 통합, 실제로 마우스가 가리키는 오브젝트가 eventsystem의 selected가 됨
// // ButtonType == Toggle
// // normal, highlighted, selected(계속 눌려있는 상태, 추후에 ToggleGroup 클래스에서 관리 - 다른 토글이 눌리기 전까지 풀리지 않음), pressed(눌리면 selected 고정), disabled
//
// public class UiButton : MonoBehaviour, IInteractableUi, IPointerEnterHandler, IPointerExitHandler,
// IPointerDownHandler, IPointerUpHandler, ISelectHandler, IDeselectHandler, ISubmitHandler
// {
// [Header("Button Components")]
// [SerializeField] private Button _button;
// [SerializeField] private Selectable _selectable;
//
// [Header("State Synchronization")]
// [SerializeField] private bool _synchronizeStates = true;
// [SerializeField] private bool _handleKeyboardInput = true;
// [SerializeField] private bool _handleGamepadInput = true;
//
// [Header("Visual Feedback")]
// [SerializeField] private Animator _animator;
// [SerializeField] private Image _targetGraphic;
//
// [Header("Toggle Functionality")]
// [SerializeField] private ButtonType _buttonType;
//
// // State tracking
// private bool _isPressed;
// private bool _isHighlighted;
// private bool _isSelected;
// private bool _wasSelectedByKeyboard;
// private bool _isToggled = false;
//
// // Events
// public event Action OnClicked;
// public event Action OnStateChanged;
//
// // Animation parameter hashes (if using Animator)
// private readonly int _normalHash = Animator.StringToHash("Normal");
// private readonly int _highlightedHash = Animator.StringToHash("Highlighted");
// private readonly int _pressedHash = Animator.StringToHash("Pressed");
// private readonly int _selectedHash = Animator.StringToHash("Selected");
// private readonly int _disabledHash = Animator.StringToHash("Disabled");
//
// private void Awake()
// {
// InitializeComponents();
// }
//
// private void OnEnable()
// {
// if (_button != null)
// {
// _button.onClick.AddListener(HandleButtonClick);
// }
//
// UpdateVisualState();
// }
//
// private void OnDisable()
// {
// if (_button != null)
// {
// _button.onClick.RemoveListener(HandleButtonClick);
// }
// }
//
// private void Update()
// {
// HandleInputUpdate();
// }
//
// private void InitializeComponents()
// {
// // Get Button component if not assigned
// if (_button == null)
// {
// _button = GetComponent<Button>();
// }
//
// // Get Selectable component (Button inherits from Selectable)
// if (_selectable == null)
// {
// _selectable = _button;
// }
//
// // Get target graphic from button if not assigned
// if (_targetGraphic == null && _button != null)
// {
// _targetGraphic = _button.targetGraphic as Image;
// }
//
// // Get Animator if not assigned
// if (_animator == null)
// {
// _animator = GetComponent<Animator>();
// }
// }
//
// private void HandleInputUpdate()
// {
// if (!_handleKeyboardInput && !_handleGamepadInput) return;
// if (_selectable == null || !_selectable.interactable) return;
//
// // Handle keyboard/gamepad input when this button is selected
// if (EventSystem.current != null && EventSystem.current.currentSelectedGameObject == gameObject)
// {
// //HandleSelectedInput();
// }
// }
//
// private void HandleSelectedInput()
// {
// var keyboard = Keyboard.current;
// var gamepad = Gamepad.current;
//
// // Handle keyboard input
// if (_handleKeyboardInput && keyboard != null)
// {
// if (keyboard.enterKey.wasPressedThisFrame || keyboard.spaceKey.wasPressedThisFrame)
// {
// HandleButtonClick();
// }
// }
//
// // Handle gamepad input
// if (_handleGamepadInput && gamepad != null)
// {
// if (gamepad.buttonSouth.wasPressedThisFrame) // A button on Xbox controller
// {
// HandleButtonClick();
// }
// }
// }
//
// private void HandleButtonClick()
// {
// if (_selectable != null && !_selectable.interactable) return;
//
// if (_buttonType == ButtonType.Toggle)
// {
// _isToggled = !_isToggled;
//
// if (_isToggled)
// {
// // When toggled on, maintain pressed state and make non-interactable
// _isPressed = true;
// _selectable.interactable = false;
// }
// else
// {
// // When toggled off, restore normal behavior
// _isPressed = false;
// _selectable.interactable = true;
// }
//
// UpdateVisualState();
// }
//
// OnClicked?.Invoke();
// }
//
// private void UpdateVisualState()
// {
// if (!_synchronizeStates) return;
//
// var currentState = GetCurrentState();
// print(currentState);
// ApplyVisualState(currentState);
// OnStateChanged?.Invoke();
// }
//
// private ButtonState GetCurrentState()
// {
// if (_selectable == null || (!_selectable.interactable && !_isToggled))
// return ButtonState.Disabled;
//
// // Toggle mode: when toggled on, maintain pressed state even if not interactable
// if (_useToggle && _isToggled)
// return ButtonState.Pressed;
//
// if (_isPressed)
// return ButtonState.Pressed;
//
// if (_isSelected)
// return ButtonState.Selected;
//
// if (_isHighlighted)
// return ButtonState.Highlighted;
//
// return ButtonState.Normal;
// }
//
// private void ApplyVisualState(ButtonState state)
// {
// // Apply animator state if available
// if (_animator != null && _animator.runtimeAnimatorController != null)
// {
// ApplyAnimatorState(state);
// }
//
// // Apply color tint if using Button's color block
// if (_button != null && _targetGraphic != null)
// {
// ApplyColorState(state);
// }
// }
//
// private void ApplyAnimatorState(ButtonState state)
// {
// switch (state)
// {
// case ButtonState.Normal:
// _animator.SetTrigger(_normalHash);
// break;
// case ButtonState.Highlighted:
// _animator.SetTrigger(_highlightedHash);
// break;
// case ButtonState.Pressed:
// _animator.SetTrigger(_pressedHash);
// break;
// case ButtonState.Selected:
// _animator.SetTrigger(_selectedHash);
// break;
// case ButtonState.Disabled:
// _animator.SetTrigger(_disabledHash);
// break;
// }
// }
//
// private void ApplyColorState(ButtonState state)
// {
// var colors = _button.colors;
// Color targetColor;
//
// switch (state)
// {
// case ButtonState.Normal:
// targetColor = colors.normalColor;
// break;
// case ButtonState.Highlighted:
// targetColor = colors.highlightedColor;
// break;
// case ButtonState.Pressed:
// targetColor = colors.pressedColor;
// break;
// case ButtonState.Selected:
// targetColor = colors.selectedColor;
// break;
// case ButtonState.Disabled:
// targetColor = colors.disabledColor;
// break;
// default:
// targetColor = colors.normalColor;
// break;
// }
//
// _targetGraphic.color = targetColor;
// }
//
// // IInteractableUi implementation
// public void OnInteract()
// {
// if (_selectable != null && _selectable.interactable)
// {
// // This method is called for programmatic interaction
// HandleButtonClick();
// }
// }
//
// // Pointer event handlers
// public void OnPointerEnter(PointerEventData eventData)
// {
// _isHighlighted = true;
// UpdateVisualState();
// }
//
// public void OnPointerExit(PointerEventData eventData)
// {
// _isHighlighted = false;
// UpdateVisualState();
// }
//
// public void OnPointerDown(PointerEventData eventData)
// {
// if (eventData.button == PointerEventData.InputButton.Left)
// {
// if (_isSelected)
// {
// _isPressed = true;
// UpdateVisualState();
// return;
// }
// _isSelected = true;
// UpdateVisualState();
// }
// }
//
// public void OnPointerUp(PointerEventData eventData)
// {
// if (eventData.button == PointerEventData.InputButton.Left)
// {
// // Don't reset pressed state in toggle mode when toggled on
// if (_isPressed && !(_useToggle && _isToggled))
// {
// _isPressed = false;
// }
// _isSelected = false;
// UpdateVisualState();
// }
// }
//
// // Selection event handlers (for keyboard/gamepad navigation)
// public void OnSelect(BaseEventData eventData)
// {
// _isSelected = true;
// UpdateVisualState();
// }
//
// public void OnDeselect(BaseEventData eventData)
// {
// _isSelected = false;
// UpdateVisualState();
// }
//
// // Submit handler (for keyboard/gamepad activation)
// public void OnSubmit(BaseEventData eventData)
// {
// HandleButtonClick();
// }
//
// // Public API
// public bool IsInteractable => _selectable != null && _selectable.interactable;
//
// public void SetInteractable(bool interactable)
// {
// if (_selectable != null)
// {
// _selectable.interactable = interactable;
// UpdateVisualState();
// }
// }
//
// public void ForceUpdateState()
// {
// UpdateVisualState();
// }
//
// // Toggle functionality API
// public bool UseToggle
// {
// get => _useToggle;
// set => _useToggle = value;
// }
//
// public bool IsToggled => _isToggled;
//
// public void SetToggleState(bool toggled)
// {
// if (!_useToggle) return;
//
// _isToggled = toggled;
//
// if (_isToggled)
// {
// _isPressed = true;
// if (_selectable != null)
// _selectable.interactable = false;
// }
// else
// {
// _isPressed = false;
// if (_selectable != null)
// _selectable.interactable = true;
// }
//
// UpdateVisualState();
// }
// }
// }

View File

@ -145,7 +145,7 @@ private static string BuildEnumCode(string rootNamespace, Dictionary<string, Has
var enumName = IdentifierSanitizer.Sanitize(kv.Key, true);
var values = kv.Value
.Where(v => !string.IsNullOrWhiteSpace(v) &&
!string.Equals(v, "None", StringComparison.OrdinalIgnoreCase))
!string.Equals(v, "Normal", StringComparison.OrdinalIgnoreCase))
.Select(v => IdentifierSanitizer.Sanitize(v, true))
.Distinct(StringComparer.OrdinalIgnoreCase)
.OrderBy(v => v, StringComparer.Ordinal)
@ -153,7 +153,7 @@ private static string BuildEnumCode(string rootNamespace, Dictionary<string, Has
sb.AppendLine($" public enum {enumName}");
sb.AppendLine(" {");
sb.AppendLine(" None = 0,");
sb.AppendLine(" Normal = 0,");
for (int i = 0; i < values.Count; i++)
sb.AppendLine($" {values[i]} = {i + 1},");
sb.AppendLine(" }");
@ -231,7 +231,7 @@ private string GenerateDataClass(string rootNamespace, string className, JArray
private static string NormalizeEnumKey(string input)
{
if (string.IsNullOrEmpty(input)) return "None";
if (string.IsNullOrEmpty(input)) return "Normal";
var valid = System.Text.RegularExpressions.Regex.Replace(input, @"[^a-zA-Z0-9_]+", "_");
if (char.IsDigit(valid[0])) valid = "_" + valid;
return char.ToUpperInvariant(valid[0]) + valid.Substring(1);

View File

@ -66,7 +66,7 @@ public bool TryConvert(string source, Type targetType, out object value)
private static string NormalizeEnumKey(string input)
{
if (string.IsNullOrEmpty(input)) return "None";
if (string.IsNullOrEmpty(input)) return "Normal";
string valid = System.Text.RegularExpressions.Regex.Replace(input, @"[^a-zA-Z0-9_]+", "_");
if (char.IsDigit(valid[0])) valid = "_" + valid;
return char.ToUpperInvariant(valid[0]) + valid.Substring(1);

View File

@ -201,7 +201,7 @@ private void ApplyOutlineType(InteractionOutlineType type)
// OutlineData에서 해당 타입의 스타일 가져오기
if (!_outlineData.TryGetValue(type, out var data))
{
// 데이터가 없으면 None 타입 적용
// 데이터가 없으면 Normal 타입 적용
data = _outlineData[InteractionOutlineType.None];
}