본문 바로가기
728x90

유니티59

유니티 스크립터블 오브젝트( ScriptableObject ) 1. ScriptableObject 스크립터블 오브젝트(ScriptableObject)는 대량의 데이터를 저장할 수 있는 데이터 컨테이너이며, 미리 정의된 데이터를 공유하여, 메모리의 사용을 줄일 수 있도록 구현되어 있다.  스크립터블 오브젝트는 프로젝트를 빌드하기 전 에디터 모드에서 수정 및 정의가 가능하도록 설계되어 있다. 유니티 프로그램 안에서 플레이 모드 런타임 시에는 수정이 가능하다. 그러나 빌드된 후에는 수정을 할 수 없다. 물론, 기타 여러 가지 방법을 사용하면 가능할 수 있다. 인터넷 상에서 스크립터블 오브젝트를 사용하여 인벤토리 시스템을 구현하는 것을 본 적이 있다. 실제 테스트를 해보지는 않았다. 그렇지만 인벤토리 시스템과 같이 실시간으로 데이터를 수정 및 저장하는 부분은 C# clas.. 2021. 1. 5.
유니티 오브젝트 풀링(Object pooling) 1. 오브젝트 풀링(Object pooling) 오브젝트 풀링은 개체를 할당하고 파괴하는 대신, 미리 오브젝트 집합(Object Pool)을 생성하고, 필요할 때에 불러와 사용하고, 사용한 개체를 다시 개체 집합에 반환하여, 개체들을 재사용하는 디자인 패턴 중의 하나이다.    오브젝트 풀링은 미리 생성된 개체를 재사용하므로 개체를 생성하고, 파괴하는데 드는 시간 및 비용의 낭비를 줄일 수 있다. 오브젝트의 생성 및 파괴는 자원의 낭비가 심하다. 게다가, 오브젝트의 파괴는 가비지 컬렉션(Garbage Collection )을 호출하게 된다. 가비지 컬렉션은 시스템에서 자동으로 호출되며, 수집 과정은 상당한 CPU 시간을 요구한다. 최적화와 관련된 글을 접하게 되면 자주 언급되는 것이 가비지 컬렉션이다. .. 2020. 12. 2.
유니티 Invoke 1. Invoke() 이전 글에서는 시간의 경과에 따른 절차적 단계를 수행하는 로직을 구현하는 데 사용되는 함수로 Update 함수들과 Coroutine을 언급하였다. 이 함수들에 시간을 지연시키는 로직을 구현할 수 있다. 이러한 지연시키는 로직을 간단하게 구현한 함수가 Invoke() 함수이다. Invoke() 함수는 지정 시간 이후에 대상 함수를 호출한다. 또한, 일정 시간 후에 반복적으로 해당 함수를 호출하도록 구현한 InvokeRepeating() 함수와 같은 추가적인 함수들을 제공한다. Invoke(string methodName, float delayTime) InvokeRepeating(string methodName, float delayTime, float repeatRateTime ) .. 2020. 12. 1.
유니티 코루틴(Coroutine) 과 IEnumerator 1. 코루틴 (Coroutine) 코루틴은 시간의 경과에 따른 절차적 단계를 수행하는 로직을 구현하는 데 사용되는 함수이다. 시간의 경과에 따른 절차적 단계에 대한 로직을 구현하는 것은 Update() 함수들에서도 가능하다. 매 프레임마다 호출되는 로직은 Update()에서 구현하면 된다. 하지만 초당 호출이나, 매 프레임마다 호출이 필요하지 않은 부분을 매 프레임마다 호출하는 것은 바람직한 로직이 아니다. 코루틴은 함수를 호출한다. 함수는 한 프레임에 호출되어 완료가 된다. 이에 IEnumerator 형식을 반환 값으로 가지는 함수를 사용한다. IEnumerator는 함수 내부에 실행을 중지하고, 다음 프레임에서 실행을 재개할 수 있는 yield return 구문을 사용한다. 2. yield retur.. 2020. 11. 30.
728x90