[UNITY] 92

Odin Inspector와 DOTween으로 만든 캐릭터 선택창 예제

오늘은 오딘 인스펙터와 두트윈을 가지고 캐릭터 선택같은 느낌의 예제를 만들어보려고 한다. 최종프로젝트에서 가능하다면 ? 오딘으로 몇가지 만들어보고싶은 툴들이 있어서 연습할 겸 해보자 그냥 활용만 해보는 것이기에 혹시나 따라한다면 좀 더 효율적으로 바꿔주시면 감사하겠습니다... 우선 캐릭터 데이터를 담아줄 오딘의 ? ScriptableObject 클래스를 만들어준다.(뭐라고 해야하지 하여튼 오딘형식의 ?) using Sirenix.OdinInspector;using UnityEngine;[CreateAssetMenu(fileName = "CharacterData", menuName = "Game/CharacterData")]public class CharacterData : ScriptableObject{..

Unity와 C#의 기본 개념 다지기

오늘은 여러가지 개념들을 정리해보는 시간을 가져볼것이다.최근들어 기본기를 다져야겠다는 생각이 들어서인지 이런 글을 자주 쓰게 된다.생각보다 많은걸 깨달았고 많은걸 놓치면서 배워온게 느껴져서인것같다. 첫번째로 객체지향 프로그래밍의 기본 개념들을 정리해보자 클래스: 데이터와 행동(메서드)를 묶는 청사진, 객체를 생성하는 기반 상속: 부모 클래스의 속성과 메서드를 자식 클래스에서 재사용 다형성: 부모 클래스를 참조하여 자식 클래스의 행동을 실행 두번째는 유니티의 컴포넌트 기반 구조의 개념을 살펴보자유니티는 컴포넌트 기반 설계를 채택하였다.GameObject는 빈 컨테이너 이고 컴포넌트를 이용하여 동작을 정의한다. MonoBehaviour: 유니티에서 제공하는 기본 컴포넌트 스크립트, 생명주기 메서드를 제공 세..

[UNITY]/TIL: UNITY 2024.11.22

[Unity] Physics 시스템에 대해 자세히 알아보자

곧 최종프로젝트가 시작된다. 최종프로젝트를 3D로 하자고 했으니 Unity의 Physics 시스템에대해 기본기를 다지는 시간을 가져보려고 한다. 학습 목표는 아래와 같다.(이미 사용중인 부분들도 있지만 복습한다 생각하고 기본부터 공부해보려고 한다. 간단한 부분들은 정의만 하고 넘어가겠다.) 1. Rigidbody와 Collider2. Raycast3. Physics Material4. 간단한 물리 기반 상호작용(끌기, 밀기, 충돌 등)5. 폭발효과 구현해보기 1. Rigidbody와 ColliderRigidbody: 중력, 속도, 회전과 같은 물리적 동작을 처리(이동, 점프 등을 할때 물리연산으로 처리가 가능함) Collider: 충돌을 감지하는 물리적 경계(여러가지 종류가 있음 (Box, Sphere,..

[UNITY]/TIL: UNITY 2024.11.21

[ECS/DOTS] C# JOB System으로 병렬처리에 도전하기

잡소리 없이 바로 시작하자 !! 아래는 현재 OnUpdate의 상태이다. 이 것을 아래와 같이 고쳐보겠다. 내용은 별로 바뀌지 않았다. 어떤부분이 왜 바뀌었는지 알아보자 먼저 C# Job System에서 Job은 struct로 구현해야하는 규칙이 있다.인터페이스는 IJobEntity를 사용한다.(보통은 C# Job System에서 IJob혹은 IJobParallelFor을 사용하는데, ECS에서는 전용 인터페이스로 IJobEntity가 구현되어있기때문에 이것을 사용하면 됨.) 그리고 이전의 [BurstCompile]에서 배웠던 것 처럼 partial키워드를 추가하였다.(여기서도 Source Generator과 공존해야하기 때문) 아래는 좌측은 이전의 OnUpdate 우측은 C# JobSystem적용을 위..

[UNITY]/TIL: Etc 2024.11.20

[Unity] 최적화 방법들을 알아보자

오늘은 많이 사용되는 최적화 방법들을 찾아보고 친해지는 시간을  가져보려고 한다. 추후 프로젝트의 틀이 잡혀갈때쯤이면 최적화에도 점점 시간을 투자하게 될텐데, 그때 이 글을 보면서 기본적인 최적화 방법을 숙지한다면 좋지 않을까 생각한다. 오늘 알아볼것은 LOD, UnityProfiler, 배치 최적화 이렇게 3가지에대해서 간단하게 알아보겠다. LOD(Level of Detail)멀리 있는 오브젝트의 디테일을 줄여 성능을 최적화 하는 기술이다. 적용방법은 간단하다. 원하는 오브젝트에 LOD Group 컴포넌트를 추가해주면 된다.그리고 각 LOD 단계에 사용할 저해상도 모델을 설정하고, 거리 슬라이더를 조정하여 LOD 전환 시점을 설정해주면 된다.(주로 건물, 자연 이런 정적인 오브젝트에 설정해주는 편이다...

[UNITY]/TIL: UNITY 2024.11.20

[ECS/DOTS] BurstCompile를 사용해보자

이전 편에서는 5000개의 캐릭터를 만들고 여러 가지 행동을 시키는 예제를 따라 하고 이해하는 시간을 가졌었다. 이번엔 일을 벌려놨으니 최적화를 해야겠지..? 간단한 버스트 컴파일러를 이용해서 최적화를 해볼 것이다. 방법은 아주 간단하다.  SpawnSystem의 OnUpdate 메서드에 아래와 같이 '[BurstCompile]' 속성을 추가하기만 하면 된다.  ? 장난하세요 ? 이렇게 하면 버스트 컴파일러에 의해 고속 네이티브 코드로 변환된다고 한다. 원래라면 이 BurstCompile를 사용하려면 매우 엄격한 제약을 지켜야 한다. ECS에서는 이런 제약을 지키면서 코딩할 수 있도록 여러 조치가 이루어져 있다. 아까 작성한 코드도 제약을 자연스럽게 충족하고 있기 때문에 BurstCompile을 그대로 ..

[UNITY]/TIL: Etc 2024.11.19

[Unity] 나만의 UI 시스템을 구축해보자

오늘 특강으로 너무 많은게 머리에 들어와서 정리하는데 시간을 많이 사용했다. 매니저들을 게임매니저 혹은 특정 클래스에서 초기화하고 참조하는 방식도 배웠는데 성능상 이점보다 코드의 복잡성이 증가하고 유지보수가 어려워지는 점에서 나는 매력을 느끼지 못했다.(OOP의 장점이 사라짐 이렇게 할거면 DOTS를 사용하는게..) 그래서 가장 매력적이었던 UI시스템을 한번 에셋처럼 틀을 만들어보기로 했다.(TIL겸 앞으로 사용하면서 개선도 하며 이 글을 계속 볼고 수정할 것이다.)우선 제네릭 싱글톤을 만들자. using UnityEngine;public class Singleton : MonoBehaviour where T : MonoBehaviour{ private static T _instance; pu..

[ECS/DOTS] ECS를 이용하여 5000개의 캐릭터를 만들어보자

모든 자료 출처는 유니티 입니다.(해당 내용을 리뷰해보며 학습하는 글입니다.) 이번 ECS로 최적화 하기는 이전 글에서 만들었던 춤추는 인형 3개를 5000개까지 만들어보고 최적화 하는 작업을 하며 ECS에 익숙해져 보는 시간을 가질것이다. 우선 인형의 프리팹을 만들어보자  ECS도 기존 유니티와 동일하게 프리팹을 만들 수 있다. Hierarchy창에서 Sub씬에있는 오브젝트를 프로젝트뷰로 드래그 앤 드롭하면 생성된다. 그리고 이 프리팹을 참조하기 위한 Config 컴포넌트를 만들어볼것이다.  이런 방식으로 프리팹을 지정하고 생성할 개수 혹은 범위도 이 안에서 설정할 수 있도록 할것이다. ConfigAuthoring 스크립트의 내용은 아래와 같다.  Config 컴포넌트를 보면 프리팹을 엔티티 형태의 값..

[UNITY]/TIL: Etc 2024.11.18

3. DOTween 활용하기

이번엔 DOTween을 이용하는 예제와 이 예제들을 활용하여 어떤것을 구현할 수 있을지도 적어보면서DOTween을 배우는 시간을 마무리해보도록 하겠다. 1. Ease 커스텀 곡선 애니메이션AnimationCuve를 사용하여 원하는 움직임을 만들어보자.using DG.Tweening;using UnityEngine;public class CustomEaseExample : MonoBehaviour{ public Transform target; // 움직일 대상 public AnimationCurve customCurve; // 곡선 (에디터에서 설정해줄것) void Start() { target.DOMoveY(5f, 2f) .SetEase(customC..

[UNITY]/TIL: UNITY 2024.11.18

[ECS/DOTS] Unity ECS

유니티에서 제공하는 자료를 보며, 정리한 글입니다.( https://create.unity.com/Best-tips-and-tricks-by-japan) 유니티에서 DOTS를 다루는 방법을 정리해보자 기존의 '표준적인' 유니티에서는 MeshFilter나 MeshRenderer, MonoBehaviour같은 컴포넌트가 사용되었었다. 하지만 ECS에서는 새롭게 추가된 컴포넌트를 이용할 수 있다. 하지만 ECS를 유니티 에디터에서 제어할때는 기존의 구조처럼 사용할 수 있어야 편리할것이다.(기존 GameObject를 다루듯) 그래서 기존의 컴포넌트를 사용해서 똑같이 작업할 수 있도록 구현이 되어있다. 그리고 그걸 보관하는 곳이 바로 subscene이다. subscene의 내용은 실행할 때 혹은 빌드할 때 ECS..

[UNITY]/TIL: Etc 2024.11.17