런타임에서 ECS와 GameObject 간의 간단한 상호 작용. 1. "Scripts/MonoBehaviours" 폴더에 "CameraSingleton.cs"라는 이름의 새 C# 소스 파일을 만들고 아래 코드를 작성합니다. // main cmaera에 접근하는 방법은 여러 가지가 있지만 싱글톤(여기서 사용하는 대로)을 사용하는 접근 방식은 모든 종류의 MonoBehaviour에서 작동합니다. class CameraSingleton : UnityEngine.MonoBehaviour { public static UnityEngine.Camera Instance; void Awake() { Instance = GetComponent(); } } 2. "SampleScene"의 "Main Camera" Game..
Config 싱글톤, 실시간 변환. 1. "Authoring/Components" 폴더에 "Shooting.cs"라는 이름의 새 C# 소스 파일을 만들고 아래 코드를 작성합니다. using Unity.Entities; // 이것은 "Enableable Component"이기도 한 태그 구성 요소입니다. // 이러한 Component는 Entity에 남아 있는 동안 켜고 끌 수 있습니다. // 그렇게 하는 것이 Component를 추가하고 제거하는 것보다 훨씬 효율적입니다. struct Shooting : IComponentData, IEnableableComponent { } 2. "Scripts/Authoring" 폴더에 있는 "TurretAuthoring.cs" 파일의 내용을 아래와 같이 수정합니다...
고급 베이킹, 베이킹 시스템 도입. ECS Component들은 렌더링에 사용되는 Shader에 대한 입력을 제어할 수 있습니다. Shader Graph를 통해 자체 Shader를 생성하고 사용자 지정 ECS Component를 해당 입력에 매핑하는 것은 이 Tutorial의 범위를 벗어나지만 URPMaterialPropertyBaseColor라는 Component를 사용합니다. 이름에서 알 수 있듯이 Standard URP Material의 기본 색상을 제어할 수 있습니다. 우리의 탱크는 3개의 요소(탱크, 포탑, 대포)로 구성되며 각 Entity에는 URPMaterialPropertyBaseColor Component가 추가되어야 합니다. 이렇게 하려면 탱크 프리팹을 열고 계층 구조에서 세 가지 요소..
한 번만 실행해야 하는 초기화 시스템 처리. 1. "EntityScene"에서 "Tank" GameObject를 프로젝트 창의 "Assets/Prefabs" 폴더로 드래그 앤 드롭 합니다. 2. "EntityScene"에서 "Tank" GameObject(현재 Prefab Instance)를 삭제합니다. 3. "Scripts/Authoring" 폴더에 "ConfigAuthoring.cs"라는 새 C# 소스 파일을 만들고 아래 내용을 추가합니다. using Unity.Entities; class ConfigAuthoring : UnityEngine.MonoBehaviour { public UnityEngine.GameObject TankPrefab; public int TankCount; public fl..
parallel job을 소개합니다. 1. "Scripts/Aspects" 폴더에 "CannonBallAspect.cs"라는 이름의 새 C# 소스 파일을 만들고 아래 코드를 작성합니다. using Unity.Entities; using Unity.Mathematics; using Unity.Transforms; readonly partial struct CannonBallAspect : IAspect { // 관점의 엔티티 필드는 엔티티 자체에 대한 액세스를 제공합니다. // 예를 들어 EntityCommandBuffer에 명령을 등록하는 데 필요합니다. public readonly Entity Self; // Aspect에는 다른 Aspect가 포함될 수 있습니다. readonly TransformAs..
다른 Entity들을 참조하여 Prefab을 생성합니다. 1. "Scripts/Authoring" 폴더에 "CannonBallAuthoring.cs"라는 이름의 새 C# 소스 파일을 만들고 아래 코드를 작성합니다. using Unity.Entities; using Unity.Rendering; using Unity.Mathematics; class CannonBallAuthoring : UnityEngine.MonoBehaviour { class CannonBallBaker : Baker { public override void Bake(CannonBallAuthoring authoring) { // 기본적으로 Component는 0으로 초기화됩니다. // 따라서 이 경우 CannonBall의 Speed..
SystemBase 및 Entities.ForEach 병렬 처리를 소개합니다. 1. "Scripts/Authoring" 폴더에 "TankAuthoring.cs"라는 이름의 새 C# 소스 파일을 만들고 다음 코드를 작성합니다. using Unity.Entities; class TankAuthoring : UnityEngine.MonoBehaviour { class TankBaker : Baker { public override void Bake(TankAuthoring authoring) { AddComponent(); } } } // 포탑에서 했던 것처럼 탱크(큐브)를 식별하는 Tag Component를 만듭니다. struct Tank : IComponentData { } 2. "Tank" GameObj..
관리되지 않는 시스템(ISystem), 쿼리, 관용적 foreach의 개념을 소개합니다. "Scripts/Systems" 폴더에 "TurretRotationSystem.cs"라는 새 파일을 만들고 거기에 아래 코드를 작성합니다. using Unity.Burst; using Unity.Entities; using Unity.Mathematics; using Unity.Transforms; // ISystem을 기반으로 하는 관리되지 않는 시스템은 BurstCompile 할 수 있지만 아직 기본값은 아닙니다. // 따라서 [BurstCompile] Attribute를 사용하여 명시적으로 BurstCompile을 선택해야 합니다. // 구조체와 OnCreate/OnDestroy/OnUpdate 함수 모두에 추..
머릿말 Unity Entities 1.0이 나오고 제대로 된 튜토리얼이 없었는데, ECS Samples Repository에 잘 쓰인 튜토리얼이 있어서 가져와서 써봅니다. 하나하나 따라 해볼 수 있도록 필요한 내용만 가져와서 제가 직접 해보고 번역해보거나 직접 설명을 써보겠습니다. Repository: https://github.com/Unity-Technologies/EntityComponentSystemSamples Entities Menual: https://docs.unity3d.com/Packages/com.unity.entities@1.0 Unity Entities Tutorial 이 심플 튜토리얼에서는 프로젝트는 Entities 패키지 사용 및 관련 DOTS 개념들을 가르쳐줍니다. Entit..