[Unity] 유니티 코루틴 정지(StopCoroutine())를 했는데도 불구하고 코루틴이 멈추지 않을 때. StopCoroutine() is not stopping my coroutines.
유니티 StopCoroutine() 이 동작하지 않을 때.
안녕하세요 정보처리마법사 입니다.
이번 포스팅의 주제는 StopCoroutine() 을 호출했음에도 불구하고 해당 코루틴이 멈추지 않을 때에 관한 내용입니다.
기존에 제가 쓰던 방식은
StartCoroutine( My_coroutine() )
혹은
StartCoroutine( "My_coroutine" )
이런식으로 코루틴을 시작하고,
StopCoroutine( My_coroutine() )
혹은
StopCoroutine( "My_coroutine" )
이런식으로 코루틴을 정지를 했는데, 어쩐일인지 코루틴이 멈추질 않아서
구글링한 후 저런 방법을 찾아서 적용을 해보니 아주 잘 됩니다.
방법은
아래 소스코드와 같이
Coroutine co_my_coroutine; 을 하나 선언해주고.
이 선언한 변수에 StartCoroutine( My_coroutine() ) 을 대입.
co_my_coroutine = StartCoroutine( My_coroutine() );
이런식으로 말이죠.
그다음에 정지할 때에는 아까 선언한 Coroutine 을 정지하면 됩니다.
StopCoroutine( co_my_coroutine );
아주 잘 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
Coroutine co_green_po;
Coroutine co_purple_po;
/// <summary>
/// 초록물약 버튼 클릭 시.
/// </summary>
public void Click_btn_potion_green()
{
if (SceneManager.GetActiveScene().buildIndex != 0)
{
p = GameObject.Find("P").GetComponent<P>();
}
// 물약의 갯수가 1개 이상이고, 게임중이라면
if (p.p_green_po > 0 && p.game_state == P.GAME_STATE.GAME_PLAYING)
{
// 이펙트( 복용 이펙트 및 유지 이펙트 및 아이콘 추가 예정)
Debug.Log("초록물약 이펙트!!!!!!!!!");
// 버프 지속 쿨타임 시작.
if (CR_po_green_is_running)
{
CR_po_green_is_running = false;
// 만약 초록물약 효과 상태이면 버프 코루틴 종료후 재시작(시간 초기화)
// StopCoroutine("Potion_green_cooltime");
StopCoroutine(co_green_po);
}
co_green_po = StartCoroutine(Potion_green_cooltime());
p.p_green_po--;
if (p.potion_state == P.POTION_STATE.POTION_PURPLE)
{
// 초록+보라물약 복용상태로 전환.
p.potion_state = P.POTION_STATE.POTION_GREEN_PURPLE;
}
else if (p.potion_state == P.POTION_STATE.POTION_NOMAL)
{
// 초록물약 복용상태로 전환.
p.potion_state = P.POTION_STATE.POTION_GREEN;
}
}
}
|
cs |
이상으로 포스팅을 마칩니다. 감사합니다.
잘 못 된 정보가 있으면 말씀해주세요.
공감버튼 클릭은 작성자에게 큰 힘이 됩니다. 행복한 하루 되세요.
“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"