[Fix] 끝 버튼 중복 클릭 방지
This commit is contained in:
parent
cdac8eaefa
commit
c46f813b1b
@ -19668,6 +19668,7 @@ MonoBehaviour:
|
||||
userBProfileImages:
|
||||
- {fileID: 2288075173090734880}
|
||||
- {fileID: 7536757830621973007}
|
||||
replayFinishButton: {fileID: 609484620077371465}
|
||||
--- !u!1 &8676936482266105011
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.Serialization;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class ReplayController : MonoBehaviour
|
||||
@ -11,6 +12,7 @@ public class ReplayController : MonoBehaviour
|
||||
[SerializeField] private TMP_Text playerBNicknameText;
|
||||
[SerializeField] private GameObject[] userAProfileImages;
|
||||
[SerializeField] private GameObject[] userBProfileImages;
|
||||
[SerializeField] private Button replayFinishButton;
|
||||
void Start()
|
||||
{
|
||||
InitReplayUI();
|
||||
@ -18,19 +20,26 @@ public class ReplayController : MonoBehaviour
|
||||
|
||||
public void OnclickExitButton()
|
||||
{
|
||||
ReplayManager.Instance.StopReplayFinish();
|
||||
ReplayManager.Instance.StopReplayFinish(() => { });;
|
||||
SceneManager.LoadScene("Main");
|
||||
}
|
||||
|
||||
public void OnclickFirstButton()
|
||||
{
|
||||
ReplayManager.Instance.StopReplayFinish();
|
||||
ReplayManager.Instance.StopReplayFinish(() =>
|
||||
{
|
||||
replayFinishButton.interactable = true;
|
||||
});;
|
||||
ReplayManager.Instance.ReplayFirst();
|
||||
}
|
||||
|
||||
public void OnclickUndoButton()
|
||||
{
|
||||
ReplayManager.Instance.StopReplayFinish();
|
||||
ReplayManager.Instance.StopReplayFinish(() =>
|
||||
{
|
||||
replayFinishButton.interactable = true;
|
||||
});;
|
||||
|
||||
Move targetMove = ReplayManager.Instance.PopPlacedMove();
|
||||
if (targetMove != null)
|
||||
{
|
||||
@ -40,7 +49,10 @@ public class ReplayController : MonoBehaviour
|
||||
|
||||
public void OnclickNextButton()
|
||||
{
|
||||
ReplayManager.Instance.StopReplayFinish();
|
||||
ReplayManager.Instance.StopReplayFinish(() =>
|
||||
{
|
||||
replayFinishButton.interactable = true;
|
||||
});;
|
||||
Move nextMove = ReplayManager.Instance.GetNextMove();
|
||||
if (nextMove != null)
|
||||
{
|
||||
@ -48,9 +60,17 @@ public class ReplayController : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 끝 버튼 눌렸을 때 중복 클릭 방지
|
||||
/// </summary>
|
||||
public void OnClickFinishButton()
|
||||
{
|
||||
ReplayManager.Instance.ReplayFinish();
|
||||
replayFinishButton.interactable = false;
|
||||
//실행이 끝난 후 끝버튼 다시 활성화
|
||||
ReplayManager.Instance.ReplayFinish(() =>
|
||||
{
|
||||
replayFinishButton.interactable = true;
|
||||
});
|
||||
}
|
||||
|
||||
public void InitReplayUI()
|
||||
|
@ -224,27 +224,33 @@ public class ReplayManager : Singleton<ReplayManager>
|
||||
}
|
||||
}
|
||||
|
||||
public void ReplayFinish()
|
||||
public void ReplayFinish(Action onFinishEnd)
|
||||
{
|
||||
finishCoroutine = StartCoroutine(IReplayFinish());
|
||||
finishCoroutine = StartCoroutine(IReplayFinish(onFinishEnd));
|
||||
}
|
||||
|
||||
public void StopReplayFinish()
|
||||
/// <summary>
|
||||
/// 끝 버튼을 중간에 멈춰야 할 때 사용
|
||||
/// </summary>
|
||||
/// <param name="onFinishStop">마지막 장면까지 가는 도중에 멈출경우 해야할 일 전달</param>
|
||||
public void StopReplayFinish(Action onFinishStop)
|
||||
{
|
||||
if (finishCoroutine != null)
|
||||
{
|
||||
StopCoroutine(finishCoroutine);
|
||||
finishCoroutine = null;
|
||||
}
|
||||
onFinishStop?.Invoke();
|
||||
}
|
||||
|
||||
private IEnumerator IReplayFinish()
|
||||
private IEnumerator IReplayFinish(Action onFinishEnd)
|
||||
{
|
||||
while(_placedStoneStack.Count < _selectedReplayRecord.moves.Count)
|
||||
{
|
||||
ReplayNext(GetNextMove());
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
}
|
||||
onFinishEnd?.Invoke();
|
||||
}
|
||||
public string GetPlayerANickname()
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user