Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- KOI
- fxml
- 스태프
- 장개
- JavaFX 컨테이너
- 개조
- 유니티
- 딜레이
- 종결
- Unity
- 스카이박스
- 자리배정
- 풀이
- delay
- 초등부
- 스펙
- 저울
- 조이스틱
- JavaFX 기본
- FXML 로딩
- 한국정보올림피아드시․도지역본선
- 원드
- 유저인터페이스
- 2014
- 개미
- JavaFX 코드
- javaFX
- 마법
- skybox
- joystick
Archives
- Today
- Total
Sage
[Unity] 딜레이 주는 방법 본문
유니티에서 미사일이나 총알을 발사하거나 몬스터를 일정 시간 간격으로 생성하는 등 delay(시간 지연)를 줘야하는 경우가 있다.
여러 가지 방법을 정리해보았다.
1. 특정 시간 경과 이후 특정 작업 반복 실행하기
Coroutines으로 작업이 가능하지만 단순한 지연 이벤트를 처리하기는 Coroutines의 처리로직이 복잡해질 수 있다.
Time.deltaTime을 사용하는 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | float timer; int waitingTime; void Start() { timer = 0.0; waitingTime = 2; inside = false ; } void Update() { timer += Time.deltaTime; if (timer > waitingTime) { //Action timer = 0; } } |
화면에 오브젝트가 나타난 뒤, 일정시간 이후 제거하려 한다면 다음과 같은 코드를 사용하면 된다.
3. Coroutine을 이용한 Action 지연 처리
4. 함수 지연 호출
1 2 3 4 5 | function Start() { //Destroy the game object in 5 seconds Destroy(gameObject, 5); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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 ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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함수 반복 호출 } |
5. 언제 Coroutine을 사용할까?
Coroutine은 Update함수의 내용이 너무 복잡해지는걸 원치 않을때 유용하게 사용될 수 있습니다.
※ 주의 : 여러개의 Coroutine이 같은 변수를 수정하고자 하면 찾기 어려운 오류를 발생시킬 수 있습니다.
'Project > Unity' 카테고리의 다른 글
[Unity] UI JoyStick 적용하기 (2) | 2017.11.27 |
---|---|
[Unity] SkyBox 적용하는 메뉴 위치 (1) | 2017.11.27 |