Unity 26

Behavior Tree - Node Canvas (2)

Node Canvas를 통해 기본적인 동작을 테스트 해보겠습니다. 3D Object2개를 만들고 하나를 다른 쪽으로 움직이도록 해보겠습니다. 화면에 Cube 와 Cylinder를 만들어 줍니다. 그리고 Cube에 스크립트 하나를 붙여줍니다. public class CubeController : MonoBehaviour { public GameObject Target; } 아주 단순하게 GameObject를 변수로 하나 설정해 두는 것입니다. 이것을 Cube에 할당 해 주고 Target에 Cylinder를 할당 해 줍니다. 이제 준비가 끝났고 Node Canvas로 Behavior Tree를 제작해 줍니다. Behaviour Tree Owner를 추가해 줍니다. 약간 다른 스펠링에 주의 하세요. 이제 2가..

Unity Engine 2022.07.02

Behavior Tree - Node Canvas (1)

NodeCanvas | 비주얼 스크립팅 | Unity Asset Store Get the NodeCanvas package from Paradox Notion and speed up your game development process. Find this & other 비주얼 스크립팅 options on the Unity Asset Store. assetstore.unity.com ParadoxNotion 의 NodeCanvas를 기준으로 작성 하였습니다. 기본적인 구성 자체는 유니티의 다른 Behavior Tree 에셋이나 언리얼 엔진 것과 동일 합니다. 다만 특정 에셋기준으로 작업한 내용이기 떄문에 메소드 이름이 약간 씩 다를 수 있습니다. Action 직접적인 행동을 수행 합니다. EndAction..

Unity Engine 2022.06.29

Unity - RaycastCommand, IJobParallelFor

Unity 에서 레이캐스트용 Job 객체가 있습니다. RaycastCommand 라는 객체인데 이것의 성능을 테스트 하기 위해 실험을 해 보았습니다. 0.1도 단위로 Ray를 쏴서 성능 비교를 진행 하였습니다. Update()문에서 일반 Physhics.RaycastNonAlloc 으로 처리된것과 RaycastCommand로 처리한 것을 비교 해 보았습니다. for (int i = 0; i < totalRay; ++i) { float angle = stepSize * i; float rad = angle * Mathf.Deg2Rad; Vector3 direction = new Vector3(Mathf.Sin(rad), 0, Mathf.Cos(rad)); Ray ray = new Ray(this.trans..

Unity Engine 2022.06.21

Custom Inspector - ReorderableList(2)

ScriptableObject 를 활용하여 데이터를 편집할때 인스펙터를 수정하는 방법을 확인 해 보겠습니다. [Serializable] public class CharacterInfo { public string CharacterName; public int CharacterLevel; public float value; } 기본적인 데이터 입니다. 이것이 배열 형태로 ScriptableObject로 처리 됩니다. [CreateAssetMenu(fileName = "CharacterData", menuName = "Scriptable Object/CharacterData")] public class CharacterData : ScriptableObject { [SerializeField] private..

Unity Engine 2022.06.20

Custom Inspector - ReorderableList(1)

유니티를 사용하다보면 인스펙터를 커스텀 해서 사용해야 할 일이 생각보다 많이 있습니다. 보통 배열 형 객체관리를 위해서 다양한 인스펙터를 요구하게 되는 일이 많습니다. [Serializable] public struct CharacterData { public int Level; public string CharacterLevel; public GameObject Prefab; public Texture2D Image; } 이러한 구조체가 있고 이것을 배열로 컨트롤 해야 하는 상황입니다. Serializable 은 선언해 주지 않는다면 구조체가 인스펙터에서 나오지 않습니다. public class DataObject : MonoBehaviour { public CharacterData[] Characte..

Unity Engine 2022.06.15

Unity Job System - 종속성

Unity 에서는 멀티 스레딩을 지원 하기 위해서 Job System을 제공 하고 있습니다. https://docs.unity3d.com/kr/2018.4/Manual/JobSystem.html C# 잡 시스템 - Unity 매뉴얼 Unity C# 잡 시스템(Job System)을 사용해 Unity 엔진과 상호작용하는 간단하고 안전한 멀티스레드 코드를 작성하여 게임 성능을 개선할 수 있습니다. docs.unity3d.com 간단히 단일 스레드보다 멀티 스레드를 사용하는 방식이 성능상 이점이 있기 때문에 사용할 수 있는 환경이라면 사용 하는 것이 성능적으로 이득을 얻을 수 있습니다. 다만 매뉴얼을 살펴보게 되면 스레드간 데이터 이동이 자유롭지는 않습니다. NativeContaienr를 활용하여 데이터를 이..

Unity Engine 2022.05.11