'유니티'에 해당되는 글 3건

  1. 2016.12.27 만든 게임들 영상 모음
  2. 2016.11.11 유니티 기본 이벤트 함수
  3. 2016.11.09 Coroutine
포트폴리오2016. 12. 27. 15:50

https://www.youtube.com/channel/UCeNHWO0t5QsGUoD2CmQXCQw

Posted by JinFluenza
프로그래밍/유니티2016. 11. 11. 05:43

출처 : 유니티 메뉴얼 :  https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html

다음 그림은 스크립트의 유효기간 동안 이벤트 함수의 순서와 반복 처리를 정리 한 것입니다.

자주 사용되는 함수 정리


Awake() : 스크립트가 실행될 때 딱 한번만 호출됨. Start함수가 호출되기 전에 먼저 실행되고.

스크립트가 비활성화돼 있어도 실행된다고 함. 코루틴으로는 실행 불가능.


Start()  : Update() 함수 호출전에 딱 한번만 호출된다. Awake()와 다른점은 스크립트가 활성화 되어있어야 호출된다는 점.

다른스크립트의 Awake()가 모두 호출된 후에 실행된다. 코루틴으로 실행 가능하다.


Update() : 매 프레임 마다 호출되는 함수로 주로 게임의 핵심 로직을 여기에 작성한다. 스크립트가 활성화 되어 있어야 실행된다.


LateUpdate() : 모든 Update()함수가 호출되고 나서 한 번씩 호출된다. 순차적으로 실행하는 로직에 사용하면 좋고, 카메라 이동 로직에 주로 사용된다고

한다.  마찬가지로 스크립트가 활성화돼 있어야 실행이 된다.


FixedUpdate(): 이 함수는 Update()보다 자주 호출되는 경우가 많다. 프레임 속도가 낮은 경우에는 프레임마다 여러번 호출 될 수도 있다.

그러나 프레임 속도가 높은 경우에는 프레임간에 호출 될 수는 없다. 모든 물리적 특성 계산 및 업데이트는 FixedUpdate() 이후에 발생한다.

그리고 이 함수 내에서는 Time.deltaTime 값을 곱할 필요가 없는데 왜냐하면 프레임 속도와 독립적으로 FixedUpdate()만의 신뢰 할 수 있는 타이머에서 호출되기 때문이라고 한다. 타이머에 따라서 발생하는 주기가 일정하다.

(Edit -> Project setting -> Time 메뉴에 들어가면 발생 주기를 직접 입력 할 수 있다.)


OnEnable() : 게임 오브젝트 또는 스크립트가 활성화됐을 때 호출된다. 코루틴으로는 실행이 불가능.


OnDisable() : 게임 오브젝트 또는 스크립트가 비활성화됐을 때 호출된다. 코루틴으로는 실행이 불가능.



*주의 :  오타를 잡아주지 못하기 때문에 스펠링을 정확하게 써야 원하는 방향으로 작동한다.




'프로그래밍 > 유니티' 카테고리의 다른 글

유니티 비주얼스튜디오 ctrl + ' 단축키 설정법  (0) 2017.03.14
다이나믹 메시  (0) 2017.01.04
이벤트 활용  (0) 2016.11.11
Physics.OverlapSphere,Quaternion.Lerp  (0) 2016.11.10
Coroutine  (0) 2016.11.09
Posted by JinFluenza
프로그래밍/유니티2016. 11. 9. 02:28
유니티 메뉴얼에서 본 정보인데 까먹기전에 여기에 복사해논다.

코루틴은 실행을 중지하여 Unity에 제어권을 돌려주고, 그러나 계속할 때는 다음 프레임에서 중지한 곳부터 실행을 계속할 수 있는 기능입니다. C#에서 코루틴은 다음과 같이 선언합니다:

IEnumerator Fade() {
    for (float f = 1f; f >= 0; f -= 0.1f) {
        Color c = renderer.material.color;
        c.a = f;
        renderer.material.color = c;
        yield return null;
    }
}

즉, 이것은 IEnumerator 형식을 반환값으로 가지며 yield return 구문을 어디엔가 포함하고 있는 함수입니다. yield return 행은 실행을 중지하고 다음 프레임에서 실행을 재개할 수 있는 지점입니다. 코루틴을 실행하려면 StartCoroutine 함수를 사용합니다. \n

void Update() {
    if (Input.GetKeyDown("f")) {
        StartCoroutine("Fade");
    }
}



적이 많은 경우에 이 함수를 매 프레임 호출 하여 현저한 오버 헤드를 초래할 지도 모릅니다. 그러나 코루틴을 사용하여 1/10 초 간격으로 호출할 수 있습니다:

IEnumerator DoCheck() {
    for(;;) {
        ProximityCheck;
        yield return new WaitForSeconds(.1f);
    }
}

따라서 게임에 악영향을 주지 않고 체크 횟수를 비약적으로 감소시킬 수 있습니다.



StopAllCoroutines() 이라는 함수가 있는데

해당 클래스 내에서 진행되고 있는 코루틴 함수들을 전부 중지시킵니다.



보다 자세한 설명

http://unityindepth.tistory.com/21 여기에 잘 나와있습니다



그리고.. StartCoruotine(함수명()) 으로 실행한 코루틴은 StopCoroutine으로 멈출수 없다고 합니다.

함수명() 대신에 "함수명" 으로 실행해야 StopCoroutine("함수명") 으로 멈출수 있다고 하는데; 버그인지 뭔지는 알아봐야 할 것 같네요


'프로그래밍 > 유니티' 카테고리의 다른 글

유니티 비주얼스튜디오 ctrl + ' 단축키 설정법  (0) 2017.03.14
다이나믹 메시  (0) 2017.01.04
이벤트 활용  (0) 2016.11.11
유니티 기본 이벤트 함수  (0) 2016.11.11
Physics.OverlapSphere,Quaternion.Lerp  (0) 2016.11.10
Posted by JinFluenza