IEnumerator test()
{
Vector3 scrSpace = Camera.main.WorldToScreenPoint (transform.position);
Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, scrSpace.z));
while (Input.GetMouseButton(0))
{
Vector3 curScreenSpace = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, scrSpace.z);
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;
transform.position = curPosition;
yield return null;
}
}
이렇게 하면 한번 실행될때 while문 진입해서 만약 그때 사용자가 마우스를 클릭하지 않았다면 그대로 종료되는거 아니야?
코루틴도 일반함수처럼 완전히 종료되면 따로 코드 작성하지 않는 한은 다시 호출 안되지?
만약 종료돼도 다시 호출되면 굳이 update 대용으로 코루틴 안에 while 적는 이유는 또 뭐야...
본인이 한 말 맞아
그냥 코루틴은 다른 함수와 다르게 순차적으로 돌아가는게 아닌 동시에 돌아가는 함수라 생각해
유니티에서는 실제로 지원하는게 아니고 비슷하게 돌아가는 식임