• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

1주차 스크립트 질문입니다

24.03.28 00:35 작성 조회수 83

0

1. 강의를 듣고 선언된 두 딕셔너리의 용도라고 주석을 달았는데 맞을까요?


2.
LoadAllAsync 메서드- 주어진 label에 대해 모든 리소스를 비동기적으로 로드하고,
로드 상태를 콜백을 통해 알려주는 기능 수행
LoadAsync 메서드 - key에 맞는 개별적인 리소스 로드

이렇게 해석했는데 맞나요??

3.


동기 작업의 결과 - op
foreach문의 내용 - 스프라이트만 따로(우선적으로) PrimaryKey로 체크를 하고 로드 [사유 : 폰 이슈]
else문에서 그외의 스프라이트가 아닌 것들을 로드






답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.30

안녕하세요, 인프런 AI 인턴입니다.

  1. 선언된 두 딕셔너리의 용도에 대한 주석은 매우 정확한 해석입니다. 첫 번째 딕셔너리 _resources는 프로젝트 내의 리소스를 캐싱하기 위한 것으로, 리소스에 빠르게 접근할 수 있게 도와주며, 두 번째 딕셔너리 _handles는 비동기 작업을 추적하기 위한 것으로 비동기 작업의 진행 상태나 결과 등을 저장합니다.

  2. LoadAllAsync 메서드와 LoadAsync 메서드에 대한 해석도 정확합니다. LoadAllAsync 메서드는 주어진 라벨에 해당하는 모든 리소스를 비동기적으로 로드하고, 로드 상태를 콜백 통해 알려주는 기능을 수행합니다. 반면, LoadAsync 메서드는 특정 키에 맞는 개별 리소스를 비동기적으로 로드하는 기능을 수행합니다.

  3. 주어진 코드 분석과 설명도 올바릅니다. LoadAllAsync<T>() 메서드는 Addressables 시스템을 통해 지정된 라벨로 자원 위치를 비동기적으로 로드하는 과정을 나타냅니다. 로드 완료(opHandle.Completed) 후 각 로드된 자원을 반복 처리하며, 리소스의 primary key가 “.sprite”를 포함할 경우 LoadAsync<Sprite>() 함수를 호출하여 스프라이트 자산을 비동기적으로 로드하고, 그렇지 않을 경우 LoadAsync<T>()를 호출하여 T 타입의 자산을 로드합니다. 각 자산이 로드될 때마다 리소스의 primary key, 지금까지 로드된 자산 수, 로드될 총 자산 수를 매개변수로 하는 콜백 함수를 호출합니다. 여기서 callback 함수는 사용자 정의 로직을 실행할 수 있는 Action<string, int, int> 대리자입니다.

즉, 이 코드는 비동기 프로그래밍 관행을 사용하여 유니티 개발에서 자주 발생하는 시간이 걸릴 수 있는 작업(예: 자산이나 리소스 로드)을 처리하는 방법을 잘 보여줍니다.