게임개발/유니티 엔진20 Time.DeltaTime 총알이 1 프레임당 1m를 간다고 가정했을 때 10 FPS인 A 컴퓨터가 1초에 10m를 움직일 때 20 FPS인 B 컴퓨터는 20m를 움직이게 되므로 싱크가 맞지 않게 된다. 컴퓨터 성능에 따라 달라지는 현상들을 막기 위해서 Time.DeltaTime은 10FPS 이면 1초에 10 프레임이니까 1/10(10분의 1) 0.1초이고, 20 FPS 이면 1초에 20 프레임이니까 1/20(20분의 1) 0.05초가 된다. detlaTime을 적용하면 10 FPS 컴퓨터에서 1 프레임당 1m 이동하는 총알이 1초에 1m 이동(10 프레임 * 1m * 0.1)하고 20 FPS 컴퓨터에서 1 프레임당 2m 이동하는 총알이 1초에 1m 이동(20 프레임 * 1m * 0.05)하게 된다. A컴퓨터는 1초에 10m 이동.. 2024. 3. 9. Coroutine(코루틴) 코루틴의 개념 로직을 실행하기 위해 최초로 main() 으로 진입하고 main 함수 안에서 차례대로 함수가 실행되고 함수가 종료되면 main 함수로 되돌아가서 다음 함수를 실행하는 방식으로 이루어진다. 여기서 main 함수를 메인 루틴이라 부르고 메인 루틴 안에서 실행되는 모든 함수를 서브 루틴이라고 부른다. 서브 루틴이 메인 루틴에 종속된 상태로 호출을 받는 입장이라고 한다면, 코루틴(Co-Routine)은 "Co" 라는 접두사 의미가 "공동의", "협력 관계" 이라는 것으로 메인 루틴과 대등한 관계에 있다. 위키피디아에서 코루틴의 정의는 다음과 같다. 실행의 지연과 재개를 허용함으로써, 비선점적 멀티태스킹을 위한 서브 루틴을 일반화한 컴퓨터 프로그램 구성요소 비선점 : 하나의 프로세스가 CPU를 할당.. 2024. 3. 7. 오브젝트 풀링(Object Pooling) 오브젝트 풀링 개념 LOL에서 게임이 끝나기 전까지 몇 초마다 미니언이 계속해서 나온다. 미니언이라는 오브젝트를 계속해서 생성하게 되면 메모리의 사용량과 CPU의 연산이 점차 커지게 된다. (미니언을 매번 인스턴스화해서 메모리에 올리고 해당 미니언의 위치를 씬에 배치하는 작업이 계속 수행된다 하면 메모리 사용량과 CPU 연산이 점차 커질 수밖에 없음) 그리고 미니언이 죽게되면 메모리에서 해제가 되는 방식으로 구현되었다. 이런 식으로 객체를 생성하고 객체의 사용이 끝나면 메모리에서 아예 날려버리는 방식으로 구현되니까 실시간으로 돌아가는 대규모 게임 같은 경우 성능이 크게 저하될 수 있다. 이러한 문제를 해결하기 위한 최적화 기법을 오브젝트 풀링(Object Pooling)이라고 한다. 즉, Pool을 만들.. 2024. 3. 6. UI 이벤트 시스템 UI를 마우스로 클릭하거나 UI위에 마우스 커서를 올리는 등... 이러한 행동을 했을 때 이벤트가 발생하는 이유는 이벤트 시스템이라는 곳에서 처리를 하기 때문이다. UI를 생성하면 이벤트 시스템이 같이 생성된다. IPointer Event 핸들러가 작동하지 않는 이유? public class UI_EventHandler : MonoBehaviour, IPointerClickHandler { public Action OnClickHandler = null; public void OnPointerClick(PointerEventData eventData) { if (OnClickHandler != null) OnClickHandler.Invoke(eventData); // 등록된 이벤트 핸들러 호출 } } .. 2024. 3. 4. 이전 1 2 3 4 5 다음