Unity DOTS35 Unity DOTS(ECS)에선 꼭 Enter Play Mode Options를 활성화하자 Project Setting - Editor - Enter Player Mode Options 라는 옵션이 존재한다. 이 옵션을 활성화하고 유니티 재생을 누르면 매우 빠르게 로드된다. 다만, 수정한 내용을 리로드 하지 않기 때문에 수정한 내용이 적용이 안된다는 문제점을 가지고 있다. 대부분의 프로젝트는 게임 객체 기반이고 게임 객체 기반 프로젝트는 상태에 대해 수많은 정적 변수를 사용하는 경향이 있기 때문에 Unity의 빠른 진입 플레이 모드는 기본값이 아닙니다. 그리고 기본적으로 그렇게 하면 플레이 모드에 들어가기 전에 모든 정적 상태를 재설정하기 위해 도메인을 다시 로드해야 합니다. 의도적으로 DOTS에서 수행하는 모든 작업은 이 패턴을 피합니다.(리로드를 안해도 된다는 말) 다중 세계, 세계 싱글톤.. Unity DOTS/TIP 2022. 8. 9. Unity DOTS(ECS)에서 따라다니는 카메라 만들기 Player(Entity)를 따라다니는 Camera(GameObject)을 만들려고 Camera를 ConvertToEntity로 변환시키면 카메라 랜더링이 없다는 검정화면을 보게 된다. Camera Rendering이 Entity 로 전환되면 먹통이 되어서 생기는 문제다. 즉, 카메라는 항상 GameObject로 존재해야 한다. 그러므로 MonoBehaviour 에서 Player(Entity)의 위치 정보를 읽어서 카메라가 따라다니게 만들어야 한다. MonoBehaviour 에서 Player(Entity)를 읽어오는 방법은 여러가지가 있다. 그 중 GetSingletonEntity로 읽어오는 방법에 대해 다루겠다. using Unity.Entities; using Unity.Mathematics; usi.. Unity DOTS/TIP 2022. 8. 9. UNITY DOTS - State Machine(상태 머신) 만들기 #6 색상 변경 오늘 알아볼 내용 Guard의 상태(순찰, 대기, 추격)에 따라 Material이 변경되는 방법에 대해 다룹니다. Component 1. GuardAuthoring.cs 수정 색상이 변경되어야 할때 추가할 IsInTransitionTag를 GuardAuthoring.cs에 추가합니다. public struct IsInTransitionTag : IComponentData { } 2. MaterialSingletonAuthoring.cs 작성 MaterialSingletonAuthoring.cs 파일을 만들고 아래의 코드를 작성합니다. using Unity.Entities; using Unity.Mathematics; using UnityEngine; class StateTransitionMaterials.. Unity DOTS/따라하며 배우기 2022. 8. 8. UNITY DOTS - State Machine(상태 머신) 만들기 #5 Guard 추격 오늘 알아볼 내용 Guard의 탐색 범위에 Player가 존재하면 추격상태로 변경하고 탐색범위 밖으로 도망가면 Idle 상태로 변경하는 것에 대해 다룹니다. 범위를 탐색하기 1. Authoring Guard의 탐색범위를 저장할 ComponentData가 필요하다. GuardAuthoring.cs 에 아래의 코드를 추가한다. public struct VisionCone : IComponentData { public float AngleRadians; public float ViewDistanceSq; } 위에서 만든 ComponentData를 GuardAuthoring class의 전역변수로 추가한다. // 탐색 범위와 거리 public float VisionAngleDegrees = 45.0f; publ.. Unity DOTS/따라하며 배우기 2022. 8. 7. UNITY DOTS - State Machine(상태 머신) 만들기 #4 Guard 순찰 오늘 알아볼 내용 Guard가 목적지에 도착하면 Idle 상태가 되고 CoolTime 동안 대기를 한 뒤에 다음 목적지로 이동하는 순찰을 구현할 예정입니다. Idle 상태 만들기 1. ComponentData 추가 Idle 상태가 되면 Guard에게 얼마동안 휴식을 취했는지 저장하는 IdleTimer Data를 추가합니다. GuardAuthoring.cs에 아래의 코드를 추가합니다. public struct IdleTimer : IComponentData { public float Value; } 2. GuardAIUtility Idle 상태가 되면 IdleTimer를 Guard에 추가하는 기능을 만듭니다. 아래의 코드를 GuardAIUtility.cs에 추가합니다. /// /// Idle 상태로 변경 .. Unity DOTS/따라하며 배우기 2022. 8. 7. UNITY DOTS - State Machine(상태 머신) 만들기 #3 Guard 이동 오늘 알아볼 내용 두 개의 Waypoints를 설치합니다. Guard가 Entity로 전환될 때 Waypoint 1개를 목적지로 설정하고 해당 목적지로 이동하는 것에 대해 다룹니다. GuardAIUtility Guard 의 여러 행동들을 설정할 때 사용할 예정인 GuardAIUtility.cs 파일 생성하고 아래의 코드를 작성합니다. public class GuardAIUtility { public const float kStopDistanceSq = 0.4f; } #코드 설명 목적지에 도달했다고 판단하는 거리입니다. 목적지와 Guard의 현재위치의 거리가 kStopDistanceSq보다 작아지면 도착했다고 판단합니다. Data Waypoints 와 현재 이동해야 하는 위치를 저장해야 합니다. 아래의 코.. Unity DOTS/따라하며 배우기 2022. 8. 6. UNITY DOTS - State Machine(상태 머신) 만들기 #2 Player 오늘 알아볼 내용 WSAD로 Player를 이동시키는 기능을 구현한다. (오늘은 매우 심플하다!) 사용자 입력에 따라 방향값 받아오기 ASDW 또는 상하좌우 방향키 입력에 따라 Player가 이동해야 하는 방향값(x,y)을 설정하는 기능을 구현할 예정이다. 아래 코드를 작성한다. using Unity.Entities; using Unity.Jobs; using Unity.Mathematics; using UnityEngine; struct UserInputData : IComponentData { public float2 Move; } public partial class GetherInputSystem : SystemBase { protected override void OnUpdate() { var .. Unity DOTS/따라하며 배우기 2022. 8. 5. 이전 1 2 3 4 5 다음 💲 추천 글