반응형
728x170
안녕하세요 유니티 비기너입니다.
이번 시간에는 Invoke에 대해서 알아보겠습니다.
Invoke
초단위 시간을 경과시킨 후에 함수를 실행합니다.
ex ) Invoke ("함수명", 지연시킬 초);
Invoke의 간단한 사용 예를 들자면 주인공이 몬스터를 제압하여 쓰러지는 가정을 할 때
쓰러지는 모습과 동시에 사라진다면 굉장히 부자연스러워지게 됩니다.
그러한 부분을 처리하기 위해 일정 시간을 딜레이 시킨 후에 함수를 실행시켜
천천히 사라지게 하는 방법이 가능합니다.
실행화면
공격 아이콘을 누르면 비활성화되어있는 이펙트가 나타나고 잠시 후 다시 비활성화됩니다.
스킬 아이콘을 누르면 운석이 떨어져 적을 가격하고 쓰러진 적은 잠시 후 비활성화됩니다.
2가지 아이콘 모두 Invoke를 활용하여 오브젝트를 몇 초 후에 비활성화시키는 화면입니다.
스크립트 Player
public class PlayerManager : MonoBehaviour
{
public GameObject attackEffect, skillEffect;
public void Attack() {
attackEffect.SetActive(true);
Invoke("HideEffect", 1f);
}
private void HideEffect() {
attackEffect.SetActive(false);
}
public void Skill() {
skillEffect.SetActive(true);
}
}
칼모양 아이콘을 클릭하면 Attack() 함수가 실행되며 Invoke를 사용하여 1초 후에 HideEffect() 함수가 실행됩니다.
스크립트 Monster
public class MonsterManager : MonoBehaviour
{
public Animator anim;
private void Die(){
anim.SetTrigger("Die");
Invoke("Hide", 1.25f);
}
private void Hide() {
gameObject.SetActive(false);
}
private void OnCollisionEnter2D(Collision2D col) {
if(col.gameObject.tag == "Meteor") {
Die();
Destroy(col.gameObject);
}
}
}
운석 아이콘을 클릭하면 운석이 나타나 몬스터와 충돌하면서 OnCollisionEnter2D에 의해
Die()함수를 호출하고 1.25 초 후에 몬스터는 비활성화됩니다.
위의 예제는 해당 함수를 이해하기 위해 간단하게 활용한 방식이며
좀 더 다양한 방식으로 응용하여 사용가능합니다.
반응형
그리드형
'유니티실습' 카테고리의 다른 글
유니티 에셋스토어 퍼블리셔 로그인 위치 찾기 (0) | 2020.11.07 |
---|---|
유니티 2D 그림자 표현해보기 (0) | 2020.11.05 |
유니티 씬 전환 시 큐브가 어둡게 나오는 경우 처리방법 (0) | 2020.10.19 |
유니티 이벤트 핸들러를 이용한 오브젝트 드래그 (0) | 2020.08.24 |
유니티 동영상 재생시켜보기 (0) | 2020.08.18 |