Unity 매뉴얼: NativeContainer 구조체 복사

개요

NativeContainer는 유니티에서 데이터 저장 및 관리를 위한 매우 효과적인 방법입니다. 특히, NativeContainer는 멀티스레딩 안전성과 같은 중요한 기능을 제공합니다. 이 문서에서는 NativeContainer의 작동 방식과 커스텀 NativeContainer 구현에 대해 설명합니다.

NativeContainer 구조체 복사

NativeContainer는 값 타입으로, 변수에 할당할 때 데이터가 저장된 위치에 대한 포인터를 포함하는 NativeContainer 구조체가 복사됩니다. 내용 전체를 복사하는 것이 아니라, 이것은 동일한 메모리 영역을 참조하게 됩니다. 즉, 여러 개의 NativeContainer 사본이 동일한 사실상의 컨테이너를 참조할 수 있습니다.

NativeContainer 개체 사본의 동작方式

  • NativeContainer의 사본은 동일한 데이터를 가리키며, 서로 다른 플래그를 가집니다.
  • AtomicSafetyHandle은 안전 데이터에 대한 포인터와 플래그로 구성됩니다.
사본 1 사본 2 사본 3 메모리 위치 데이터
----- ------ ----- ------ ------
동일한 실체 참조 동일한 실체 참조 동일한 실체 참조 동일한 데이터 동일한 원본

폐기 및 무효화

NativeContainer의 폐기 시, 모든 사본은 원본이 무효화되었음을 인식해야 합니다. 이 경우, 사본의 저장 데이터 포인터는 더 이상 유효하지 않으며 액세스 위반이 발생할 수 있습니다.

동적 NativeContainer의 정적 뷰

동적 NativeContainer는 가변 크기를 가지며 사용 중에 요소를 추가할 수 있습니다. 여기에 대한 예제와 함께 설명하겠습니다.

뷰의 예

  • NativeList와 같은 동적 네이티브 컨테이너에서 사용할 수 있는 열거자
  • NativeList.AsArray 메서드를 활용하여 NativeArray처럼 사용할 수 있습니다.
동적 컨테이너 예시 정적 컨테이너 예시
--------------------- ---------------------
NativeList NativeArray
요소 추가 가능 고정 크기

보조 버전 번호

AtomicSafetyHandle에 보조 버전 번호를 포함하여 동적 NativeContainer의 크기 변경을 안전하게 관리할 수 있습니다. 주 버전 번호와 독립적으로 증분되며, 새로운 뷰를 구성할 때 사용됩니다.

메서드 설명
------ --------- ---------- -------- ---------
UseSecondaryVersion 보조 버전 관리
CheckWriteAndBumpSecondaryVersion 크기 변경 시 사용

특수 핸들

임시 네이티브 컨테이너와 작업할 때 사용할 수 있는 두 가지 특수 핸들이 있습니다.

특수 핸들 설명
GetTempMemoryHandle Allocator.Temp로 할당된 AtomicSafetyHandle 반환
GetTempUnsafePtrSliceHandle 안전하지 않은 메모리에서 사용할 수 있는 전역 핸들 반환

예제: 커스텀 NativeContainer 구현

커스텀 NativeContainer를 구현하여 특정 요구 사항에 맞게 활용할 수 있습니다. 커스텀 NativeContainer는 주로 최적화된 성능이나 특정 로직이 필요한 경우 사용됩니다.

이번 문서에서 제공한 내용은 NativeContainer의 작동 방식에 대한 기본 개요이며, 이를 통해 다양한 스레드 안전한 데이터를 효율적으로 사용할 수 있습니다.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA