Merge pull request #55 from Degulleo/DO-46-게임-씬-보조-기능-추가

Do 46 게임 씬 보조 기능 추가
This commit is contained in:
Lim0_C 2025-03-26 15:08:37 +09:00 committed by GitHub
commit cc63e75f2a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 172 additions and 12 deletions

View File

@ -527,6 +527,7 @@ GameObject:
- component: {fileID: 8635639988778983738}
- component: {fileID: 4545556044007292713}
- component: {fileID: 6152865991947934791}
- component: {fileID: 3813612584874639807}
m_Layer: 5
m_Name: Draw Effect Panel
m_TagString: Untagged
@ -624,3 +625,48 @@ MonoBehaviour:
tigerOpenEyes: {fileID: 1508819185250841244}
tigerCloseEyes: {fileID: 399504369641388738}
flipDuration: 0.3
--- !u!61 &3813612584874639807
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8383435151006156655}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0

View File

@ -450,6 +450,7 @@ GameObject:
- component: {fileID: 8635639988778983738}
- component: {fileID: 4545556044007292713}
- component: {fileID: 3229800624310508893}
- component: {fileID: 6984539173991577744}
m_Layer: 5
m_Name: Lose Effect Panel
m_TagString: Untagged
@ -546,3 +547,48 @@ MonoBehaviour:
characterOpenEyes: {fileID: 1632927645355555415}
characterCloseEyes: {fileID: 3881260292094838299}
depressedEffect: {fileID: 155037671892554820}
--- !u!61 &6984539173991577744
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8383435151006156655}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0

View File

@ -788,6 +788,7 @@ GameObject:
- component: {fileID: 8635639988778983738}
- component: {fileID: 3127148509640414758}
- component: {fileID: 4545556044007292713}
- component: {fileID: 7229651074095795597}
m_Layer: 5
m_Name: Win Effect Panel
m_TagString: Untagged
@ -890,6 +891,51 @@ CanvasGroup:
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!61 &7229651074095795597
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8383435151006156655}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
--- !u!1 &8851077685063213123
GameObject:
m_ObjectHideFlags: 0

View File

@ -12,10 +12,11 @@ public class DrawEffectController : EffectController
[SerializeField] private float flipDuration = 0.3f;
protected override string fullText => "무승부 입니다";
protected override void ShowEffect()
public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{
gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd;
ShowPanel();
StartCoroutine(AnimateLoadingText());

View File

@ -3,9 +3,11 @@ using System.Threading;
using DG.Tweening;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UIElements;
[RequireComponent(typeof(CanvasGroup))]
public abstract class EffectController : MonoBehaviour
public abstract class EffectController : MonoBehaviour, IPointerClickHandler
{
[SerializeField] protected GameObject bannerObj;
[SerializeField] protected TextMeshProUGUI bannerText;
@ -14,14 +16,17 @@ public abstract class EffectController : MonoBehaviour
protected CancellationTokenSource cancellationTokenSource;
protected int currentLength = 0;
public delegate void OnEffectPanelEnded();
protected OnEffectPanelEnded onEffectPanelEnded;
protected virtual void Start()
{
ShowEffect();
}
// protected virtual void Start()
// {
// ShowEffect();
// }
// 효과를 실행하는 메서드 (자식이 구현해야 함)
protected abstract void ShowEffect();
public abstract void ShowEffect(OnEffectPanelEnded onEffectPanelEnded);
// 공통 UI 애니메이션 (패널 표시)
protected virtual void ShowPanel()
@ -59,7 +64,13 @@ public abstract class EffectController : MonoBehaviour
cancellationTokenSource.Dispose();
cancellationTokenSource = null;
}
onEffectPanelEnded?.Invoke();
gameObject.SetActive(false);
}
public void OnPointerClick(PointerEventData eventData)
{
HideEffect();
}
}

View File

@ -12,10 +12,11 @@ public class LoseEffectController : EffectController
protected override string fullText => "패배했습니다";
protected override void ShowEffect()
public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{
gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd;
ShowPanel();
StartCoroutine(AnimateLoadingText());

View File

@ -14,10 +14,11 @@ public class WinEffectController : EffectController
protected override string fullText => "승리했습니다!";
protected override void ShowEffect()
public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{
gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd;
ShowPanel();
StartCoroutine(AnimateLoadingText());

View File

@ -86,22 +86,30 @@ public class PanelManager : MonoBehaviour
if (_canvas != null)
{
var winEffectPanelObject = GetEffectPanel("Win Effect Panel");
winEffectPanelObject.GetComponent<WinEffectController>().ShowEffect(OnEffectPanelEnded);
}
break;
case Enums.GameResult.Lose:
if (_canvas != null)
{
var winEffectPanelObject = GetEffectPanel("Lose Effect Panel");
var loseEffectPanelObject = GetEffectPanel("Lose Effect Panel");
loseEffectPanelObject.GetComponent<LoseEffectController>().ShowEffect(OnEffectPanelEnded);
}
break;
case Enums.GameResult.Draw:
if (_canvas != null)
{
var winEffectPanelObject = GetEffectPanel("Draw Effect Panel");
var drawEffectPanelObject = GetEffectPanel("Draw Effect Panel");
drawEffectPanelObject.GetComponent<DrawEffectController>().ShowEffect(OnEffectPanelEnded);
}
break;
}
}
private void OnEffectPanelEnded()
{
OpenRatingPanel();
}
#endregion
public void OpenMainPanel()