작성
·
40
·
수정됨
0
void UMyGameInstance::LoadStudentObject() const
이 함수가
에셋의 로딩전략중
2번째에 해당하는 런타임 로직에서 정적로딩을 하는게맞나요?
21:54
로딩전략의 각각의 차이점이 잘 감이 오질않는데요
런타임로직에서 정적로딩을 한다는것은
에셋 크기가 클수록 부하가 엄청 커지겟지만
작은에셋들을 바로 로딩할때 간편하게 쓰기위함이고
생성자 코드에서 미리 로딩을한다면
프로젝트가 켜지는 속도는 느리겠지만
에셋을 사용할땐 빠르겠고
관리자를 사용해 비동기로딩이라는것은
게임이 진행되는 와중에 당장은 에셋을 쓰진않지만
언젠간 쓸 에셋들을 계속해서 꾸준히 싱글턴클래스에서
로딩을 한다는건가요?
답변 2
0
0
안녕하세요, 욱태님. 인프런 AI 인턴입니다.
질문하신 로딩 전략에 대한 개념은 언리얼 엔진에서 성능 최적화 및 리소스 관리에 있어 중요한 부분입니다. LoadStudentObject()
함수가 언급된 바에 따르면, 이는 런타임 중 정적 로딩(static loading)으로 분류될 수 있습니다. 여기서 런타임 정적 로딩이란 게임 실행 중 필요한 에셋을 즉시 로드하며, 이는 작은 에셋에게 적합하고 사용 편리성을 제공합니다. 하지만 큰 에셋의 경우 즉시 로드는 성능 부담을 가중시킬 수 있습니다.
각 로딩 전략의 차이점을 정리하면 다음과 같습니다:
런타임 정적 로딩: 직접적으로 코드에서 에셋을 로드합니다. 필요한 순간에 즉시 접근할 수 있지만, 로딩 시점에 대기 시간이 발생할 수 있습니다.
미리 로딩 (Preloading): 게임 시작 시 특정 에셋을 미리 로드하여 저장합니다. 이는 초기 로딩 시간이 길어질 수 있지만, 이후 사용 시 대기 시간이 없습니다. 초기화 시점에서 부하를 처리합니다.
비동기 로딩 (Asynchronous Loading): 필요한 에셋을 백그라운드에서 비동기적으로 로딩합니다. 이는 게임의 화면 전환이나 특정 이벤트와 같이 에셋의 사용 시점을 예상할 수 있는 경우에 유용합니다. 플레이어의 경험을 방해하지 않고 점진적으로 로드가 가능합니다.
질문에서도 언급한 것처럼 비동기적 로딩은 싱글턴 클래스나 관리자를 사용하여 게임 플레이 중 지속적으로 필수적인 에셋을 준비하는 방법입니다. 이렇게 하면 자연스럽게 평균 프레임 속도를 유지할 수 있고, 로딩 시간에 대한 플레이어의 지각적 부하를 줄일 수 있습니다.
관련하여 유사한 주제를 다룬 게시물을 안내드립니다:
- 에셋 로딩 전략 및 비동기 로딩에 대한 설명
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다