본문 바로가기

게임개발31

오브젝트 풀링(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.
UI 자동화 수동으로 일일히 해당 UI에 컴포넌트를 적용시키는 것의 단점 적용할 컴포넌트(스크립트)가 매우 많아지게 되면 추후에 관리하기가 매우 복잡해짐 코드로 UI에 컴포넌트를 적용하는 것을 자동화 시키는 방법 1. 해당 오브젝트에 컴포넌트로 연결을 자동화 시킬 UI 오브젝트들의 이름을 종류별로 정의 public class UI_Btn{ enum Buttons { PointBtn } enum Images { ItemIcon } } Button 컴포넌트를 가지고 있는 "PointBtn" UI 오브젝트에 Button 클릭이벤트를 컴포넌트를 연결시킨다고 가정 2. 유니티 씬상에 연결시킬 컴포넌트 종류에 관한 UI 오브젝트가 있는지 확인 Bind(typeof(Buttons)); public class UI_Base : M.. 2024. 3. 3.
UI 앵커 사용법 1. 자식 UI와 자식 UI의 앵커 사이는 부모 UI 크기가 변해도 길이가 고정으로 유지됨 2. 자식 UI 앵커와 부모 UI는 정해진 비율을 유지함 앵커가 자식 UI의 중간에 있는 경우 앵커와 자식 UI의 길이는 고정인채로 부모 UI의 증감에 따라 자식 UI의 위치만 변경된다. 앵커와 부모 UI는 비율을 계속 동일하게 유지해야 되니까 자식 UI의 위치를 변경해야 된다. 참고 : https://ansohxxn.github.io/unity%20lesson%202/ch7-2/ 2024. 2. 27.