내가 지금 평상시 A코루틴을 주기적으로 돌리고 있고, 맵 이동할때 맵 로드 B코루틴를 돌리고 있거든?
두개 코루틴이 전혀 다른 스크립튼데, 코루틴 업데이트 순서가 꼬일 수도 있음?
예를들면 A - A - A- A - B- B- B- B 처음 A도는 동안에는 B가 실행 안된다거나
A - B - A - B 처럼 프레임 단위로 순서대로 진행되는거 중에 어떤게 맞는거임??
지금 문제가 코루틴 여러개 돌리는데 A도 자꾸 꼬이고, 맵로드(B)도 작동하다 안하다 하는 문제가 있음..
각자 스크립트는 문제없는데 두개 같이 돌리면 자꾸 꼬이네
A, B 둘다 반복문인데, A는 new WaitForSeconds(0.01f); 마다 돌고, B는 return null; 인데 이런거도 상관있나
0.01f면 100프레임 미만에서는 프레임당 두 번 이상 실행될 수도 있는건데 그런 문제는 아님?
헐 코루틴이 한프레임에 2번이 실행될 수가 있나요? 저 수치가 아무리 낮아도, 한번 실행하면 무조건 다음프레임에 다시 실행되는 것으로 아는데... 진짜로 대기 시간이 프레임 시간보다 짧으면 두번 실행되나요?
나도 잘 모르겠네... 이런건 뭔가 무의식적으로 신경쓰여서 0.1f 미만으로는 잘 안 써와서...
WaitForSeconds(0.02), WaitForEndOfFrame, null 해도 똑같이 안되네.. 씬 넘어갈때 꼬이는데 방식을 바꿔야되나
1. 일단 yeild return WaitForSeconds랑 null은 전체 Update()한번 다 돌고 한번씩 호출함 따라서 ABAB가 맞음. // 2. 앞의 두개반환형 코루틴은 Update()함수를 반환후에 호출됨. 그런데 Update()안에 연산량이 많으면 연산이 끝날때까지 프레임을 그리는걸 미루기때문에 Coroutine도 자연스럽게 밀리게됨. // 3. WaitForSeconds(0.01)은 0.01초마다 실행되는거고 null은 60프레임으로 설정했을시 0.01666초이기 때문에 두개의 코루틴이 서로 영향을 미치는거라면 당연히 꼬일수 밖에없고 기기마다 성능차이로 50fps, 40fps로 내려갈수 있기때문에 더더욱 꼬임.
자세하게 설명해줘서 고마워! 코루틴 좀 찾아보니까 관리하는게 힘들지 성능상에는 몇개씩 돌려도 상관없다는 말이 있더라구. 원인은 정확히 파악은 안되는데, 난 지금 코루틴이 서로 영향을 주는거 같거든? 코루틴 2개가 도는 상황 자체는 못막을거 같아서 하나는 업데이트로 할 생각인데, 이렇게 해결해도 될까? WaitForSeconds는 색을 바꾸는거라서 일부러 촘촘하게 돌렸어
앞의 두 리턴값은 무조건 Update() 후에 도니까 그래도 로직상으로 문제는 없을꺼 같은데 정확히 충돌할지 안할지 판단은 코드를 봐야알듯