1. 특정 시간 경과 이후 특정 작업 반복 실행하기
Coroutines으로 작업이 가능하지만 단순한 지연 이벤트를 처리하기는
Coroutines의 처리로직이 복잡해질 수 있다...
Time.deltaTime을 사용하는 방법
float timer;
int waitingTime;
void Start()
{
timer = 0.0;
waitingTime = 2;
inside = false;
}
void Update()
{
timer += Time.deltaTime;
if(timer > waitingTime)
{
//Action
timer = 0;
}
}
2. 오브젝트가 생성된 이후 특정 시간이 경과한 뒤에 destroy시키기
화면에 오브젝트가 나타난뒤 몇초 이후 제거하려 한다면 다음과 같은 코드를 사용하면 됩니다.
function Start()
{
//Destroy the game object in 5 seconds
Destroy(gameObject, 5);
}
3. Coroutine을 이용한 Action 지연 처리
using UnityEngine;
using System.Collections;
public class Wait : MonoBehaviour
{
public bool check =true;
int i = 0;
void Update ()
{
if(Input.GetKeyDown(KeyCode.A)&&check)
{
check = false;
print("Inside" + i++);
StartCoroutine(WaitForIt());
}
}
IEnumerator WaitForIt()
{
yield return new WaitForSeconds(2.0f);
check=true;
}
}
4. 함수 지연 호출
public Rigidbody projectile;
void LaunchProjectile()
{
Rigidbody instance = Instantiate(projectile);
instance.velocity = Random.insideUnitSphere * 5;
// CancelInvoke(“LaunchProjectile”); // 필요할 경루 Invoke 취소처리
}
void Start()
{
Invoke("LaunchProjectile", 2); // 2초뒤 LaunchProjectile함수 호출
Invoke("LaunchProjectile", 2, 0.3f); // 2초뒤 0.3초주기로 LaunchProjectile함수 반복 호출
}
4. 언제 coroutine을 사용할까?
coroutine은 Update함수의 내용이 너무 복잡해지는걸 원치 않을때 유용하게 사용될 수 있습니다.
주의 : 여러개의 coroutine이 같은 변수를 수정하고자 하면 찾기 어려운 오류를 발생시킬 수 있습니다.
댓글 없음:
댓글 쓰기