[UNITY] 92

[DOTS 공부 로드맵]

Unity DOTS 공부 로드맵 1. ECS의 기본 구조와 워크플로우 이해 심화 Entity, Component, System의 역할과 구조 학습 IComponentData, IBufferElementData의 차이 이해 System의 종류 (ISystem, IJobEntity)와 사용법 학습 2. Job System과 Burst Compiler 심화 Job System IJob과 IJobParallelFor의 차이 및 병렬 처리 학습 ECS와 Job System의 결합 활용 Burst Compiler SIMD(Vector 연산) 활용법 및 연산 최적화 3. EntityQuery와 Archetype 관리 ..

[UNITY]/TIL: Etc 2024.11.16

DOTS를 배워보자 : 기초부터 차근차근

오늘부터는DOTS를 배워보려고 한다.무거운 기능들을 지금의 개발환경에서 원하는 부분만 따로 적용할 수 있다는 사실에 배워보고싶어서오늘부터 시작해보려고 한다. 1.ECS 의 기본 이해ECS는 DOTS의 핵심이며, 게임 객체를 관리하는 새로운방식이다.기존 GameObject와 MonoBehaviour의 방식과달리 데이터와 행동  을 완전히 분리해서 관리한다.기본적으로 Entity, Component, System이어떻게 서로연결되는지 이해하는것이 필요하다.Entity : 단순히 식별자 역할만하는 객체이다. 데이터나 기능도 없고 컴포넌트를 모아주는 역할을 한다. Component : 데이터만 보유하는 구조체 이다. 속도, 위치 등의 데이터만 해당한다. 동작(메서드) xSystem : 컴포넌트를조작하는로직이다...

[UNITY]/TIL: Etc 2024.11.15

2. DOTween 을 배워보자

1. DOTween의 경로 애니메이션(Path Animation)곡선으로 이동하거나 내가 원하는 경로를 지정해두고 해당 경로를 움직이게 할 수 있다.using DG.Tweening;using UnityEngine;public class PathMovement : MonoBehaviour{ public Vector3[] pathPoints; // 경로를 그려줄 점들을 정의합니다. private void Start() { // 지정된 경로를 따라 3초 동안 움직임 transform.DOPath(pathPoints, 3f, PathType.CatmullRom) .SetEase(Ease.Linear) .SetLoo..

[UNITY]/TIL: UNITY 2024.11.15

1. DOTween 이랑 씨름하기

이번 개인과제때 TODween을 써보려고 설치해뒀는데 안써본거 써볼바엔 차라리 코드로 구현하는게 더 빠를것같아서 전부 코드로 때려박았다. 이런 나쁜행동을 하지 못하게 나를 두트윈씨랑 씨름하게 만들어야겠다. 자주 쓰이는 예제들을 보면서 익숙해지고 어디에 사용할지 생각하는 시간을 가져봐야겠다. 자세한 설명은 코드블럭의 주석에 하겠다. 1. UI애니메이션public class UIButtonEffect : MonoBehaviour{ public void OnButtonClicked() { // 버튼 클릭 시 크기 살짝 커졌다가 원래 크기로 돌아오는 애니메이션 (뽀잉 하는 느낌) transform.DOScale(1.2f, 0.2f).SetEase(Ease.OutQuad) ..

[UNITY]/TIL: UNITY 2024.11.14

[Unity]의존성 주입과 SO의 콜라보

매일 하나씩 배워간다는건 시작하기는 힘들지만 시작만 한다면 아주 두근거리는 일이다. 앞으로 내가 할 행동에 이 배운것들의 1%라도 첨가된다면, 배웠던 좋은것들이 모여서 100%가 되지 않을까..?마치 진흙탕.. 의존성 주입이란 ?필요한 의존성을 외부에서 주입해주는 방식으로객체가 직접적으로 다른 클래스와 연결되지 않고 필요한 객체가 교체가능하게 된다. 의존성 주입의 핵심 개념1. 결합도 감소 : 위에 말했듯 해당 내용으로 인해 코드가 모듈화되어 결합도가 감소한다. 이로인해 유지보수성이 높아진다. 2. 유연성 증가 : 의존성 객체를 쉽게 교체가 가능하여 코드 재사용성이 용이하다. 3. 테스트 용이 : 객체의 의존성을 임시(모킹)로 주입할 수 있어 테스트가 쉬워진다. 그래서 어떻게 쓰면 되지 ?나는 유니티를 ..

[UNITY]/TIL: UNITY 2024.11.12

[Unity] ScriptableObject를 다양하게 사용해보자

스크립터블 오브젝트는 매우 다양하게 사용할 수 있다. 심지어 매우 효율적이다. 하지만 어떻게 사용해야할지 감이 잘 잡히지 않는다. 그래서 다양한 활용성을 예제들로 한번 정리하고 한번씩 보려고 한다. 1. 게임 데이터 관리[CreateAssetMenu(fileName = "PlayerStats", menuName = "ScriptableObjects/PlayerStats")]public class PlayerStats : ScriptableObject{ public int maxHealth = 100; public int attackPower = 20;}// 플레이어 클래스에서 PlayerStats 사용public class Player : MonoBehaviour{ public Playe..

[UNITY]/TIL: UNITY 2024.11.11

인터페이스"님" 과 상속"님" 에 대해서

인터페이스씨와 상속씨는 나랑 별로 친하지 않은것같다. 다들 좋다는데 왜 나랑 안친한지 모르겠다 그래서 친해져보려고 두분에 대해서 알아보기로 했다 항상 그렇게 하듯 예제를 통해서 앞으로 이런 개발과정이 있을 때 인터페이스씨 혹은 상속씨가 생각이라도 나도록 게임개발에 쓰일만한 예제들을 찾아서 작성해봐야겠다. 인터페이스(님)인터페이스는 공통된 기능을 구현할때 사용하면 좋다.강의에서 사용했던 것 처럼 상호작용, 공격, 데미지 처리 이런곳에 좋은 인터페이스(님) 이다.이렇게 적고나니 조금은 친한거같기도 하다. 친해질 기회가 별로 없었나보다. 첫번째 인터페이스 예제는 상호작용이다.// IInteractable 인터페이스를 구현해주고// 상호작용을 원하는 녀석들에게 달아주자// 여긴 없지만 인터렉트뿐이 아니라 프롬프..

[UNITY]/TIL: UNITY 2024.11.08

재미있는 퍼즐 로직 만들기

오늘 팀프로젝트가 끝이 났다.여러가지 재밌는 로직을 만들었는데, 게임에 다양함을 위해 급하게 만들었지만 생각보다 재미있었던8버튼 로직의 코드를 다시 보고 코드리뷰를 하며 복습하는 시간을 가져보겠다. 이 로직은 8개의 버튼이 있고, 각 버튼은 켜고 끌 수 있는 버튼이다.버튼을 조작하면 양옆의 버튼도 함께 조작된다는 규칙이 있어서, 모두 켜거나 끄기 위해서는 약간의 생각이 필요하다. 모두 켠다면 클리어, 모두 끈다면 게임오버로 가정하고 코드를 정리하여 보여주도록 하겠다. 원래는 주석을 달았었는데 이제는 코드를 보며 읽는것이 크게 어려움이 없어져서 (나를 위한것이기에...)코드 예제들을 모두 보여주고 정리를 하는 방식으로 설명하겠다. using UnityEngine;public class ButtonContr..

[UNITY]/TIL: UNITY 2024.11.07

[Unity] JSON유틸리티를 이용한 저장 및 불러오기 시스템

오늘은 팀프로젝트에서 만든 저장 및 불러오기 시스템을 설명하며,나중에 또 좋은 틀로 사용할 수 있을것 같아서 작성하게 되었다. 3가지 슬롯을 만들고 저장 및 불러오기 그리고 저장 된 파일이 없을면 새로운 시작 을 표기하고 싶었고 저장된 슬롯의 파일을 지우는 기능도 만들고싶었다.(욕심이 그득) 우선 코드를 보여주고 설명을 하겠다. public class SaveSlotUI : MonoBehaviour{ public Button[] slotButtons; public TextMeshProUGUI[] slotTexts; public SaveLoadManager saveLoadManager; public TMP_InputField nameInputField; public GameObj..

[UNITY]/TIL: UNITY 2024.11.06

[Unity] JSON 유틸리티 이해하기

오늘은 어제 특강때 공부했던 JSON 유틸리티를 이해해보는 시간을 가져봐야할것같다.. 실제로 예제를 통해 데이터를 저장 및 불러오기를 해볼거다. 우선 데이터 구조를 만들어보자 1. 데이터 구조 만들기[System.Serializable]public class PlayerData{ public string playerName; public int level;}[System.Serializable]을 작성하여 클래스가  JSON 형태로 변환될 수 있게 만들어줍니다.그리고, 클래스에 저장하고자 하는 모든 변수를 정의해줍니다. 2. 데이터 저장 및 불러오기using System.IO; // 네임스페이스 추가using UnityEngine;public class SaveLoadManager : Mono..

[UNITY]/TIL: UNITY 2024.11.05