Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3,067 changes: 3,067 additions & 0 deletions Assets/General/Prefabs/Main Menu Canvas 1.prefab

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions Assets/General/Prefabs/Main Menu Canvas 1.prefab.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

107 changes: 101 additions & 6 deletions Assets/General/Prefabs/Slot.prefab
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ GameObject:
- component: {fileID: 2652109749751903879}
- component: {fileID: 6201035823732713442}
- component: {fileID: 9001249831959521244}
- component: {fileID: 3663875903491596918}
- component: {fileID: 5495994635504386825}
- component: {fileID: 1776555152170583237}
m_Layer: 5
m_Name: Slot
m_TagString: Untagged
Expand All @@ -151,6 +152,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5447703360882503968}
- {fileID: 4763695783566573428}
- {fileID: 7250117908153862964}
- {fileID: 663184603893197898}
Expand Down Expand Up @@ -199,7 +201,7 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &3663875903491596918
--- !u!114 &5495994635504386825
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
Expand All @@ -208,7 +210,7 @@ MonoBehaviour:
m_GameObject: {fileID: 3120388872076188187}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
Expand All @@ -222,8 +224,8 @@ MonoBehaviour:
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 1, g: 1, b: 1, a: 1}
m_SelectedColor: {r: 1, g: 1, b: 1, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
Expand All @@ -240,9 +242,27 @@ MonoBehaviour:
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 9001249831959521244}
m_OnClick:
toggleTransition: 1
graphic: {fileID: 869876975796326227}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls: []
m_IsOn: 0
--- !u!114 &1776555152170583237
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3120388872076188187}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3189429ad548a714db5af3590bab4751, type: 3}
m_Name:
m_EditorClassIdentifier:
slotNum: {fileID: 0}
day: {fileID: 2434910406009280827}
--- !u!1 &3547274042974016564
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -511,3 +531,78 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &8649567392425510933
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5447703360882503968}
- component: {fileID: 4638087642336487325}
- component: {fileID: 869876975796326227}
m_Layer: 5
m_Name: SelectedImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5447703360882503968
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8649567392425510933}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2652109749751903879}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4638087642336487325
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8649567392425510933}
m_CullTransparentMesh: 1
--- !u!114 &869876975796326227
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8649567392425510933}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.4292453, g: 0.42722055, b: 0.42722055, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
89 changes: 89 additions & 0 deletions Assets/General/Scripts/DataClasses/SaveSlotManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

/// <summary>
public class SaveSlotManager : MonoBehaviour
{
[Tooltip("저장 슬롯 배열")]
[SerializeField] private GameObject[] slots;

[Header("UI References")]
[SerializeField] private ToggleGroup toggleGroup;
[SerializeField] private Button loadButton;

void Awake()
{
// 씬 시작 시 슬롯을 초기화하고 생성합니다.
InitializeSlots();
}

private void Start()
{
// 초기 상태: 아무 토글도 선택 안 되어 있다면 LoadButton 비활성화
UpdateLoadButtonState();

// 그룹 내 모든 토글에 이벤트 연결
foreach (Toggle toggle in toggleGroup.GetComponentsInChildren<Toggle>())
{
toggle.onValueChanged.AddListener(delegate { OnToggleChanged(); });
}

// LoadButton 클릭 시 실행할 함수 연결 (Inspector에서도 가능)
loadButton.onClick.AddListener(LoadGameDataBySlotNum);
}

public void InitializeSlots()
{
// 설정된 개수만큼 슬롯 프리펩을 초기화
for (int i = 0; i < slots.Length; i++)
{
if (slots[i].TryGetComponent<Slot>(out var slot))
slot.SetDataText(SaveLoadManager.Instance.LoadSlotData<GeneralData>(i));
}
}

public void LoadGameDataBySlotNum()
{
List<Toggle> slotToggles = new List<Toggle>();
for (int i = 0; i < slots.Length; i++)
{
if (slots[i].TryGetComponent<Toggle>(out var slotToggle))
slotToggles.Add(slotToggle);
}

for (int i = 0; i < slotToggles.Count; i++)
{
if (slotToggles[i].isOn)
{
SaveLoadManager.Instance.LoadAllByIndex(i);
GameFlowManager.LoadStartGame();
break;
}
}
}

private void OnToggleChanged()
{
//토글 상태가 변할 때마다 버튼 활성화 여부 갱신
UpdateLoadButtonState();
}

private void UpdateLoadButtonState()
{
// 그룹 내 하나라도 켜진 토글이 있는지 검사
bool hasActiveToggle = false;

foreach (Toggle toggle in toggleGroup.ActiveToggles())
{
if (toggle.isOn)
{
hasActiveToggle = true;
break;
}
}

// 하나라도 active면 LoadButton 활성화
loadButton.interactable = hasActiveToggle;
}
}
11 changes: 11 additions & 0 deletions Assets/General/Scripts/DataClasses/SaveSlotManager.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading