[UNITY]/TIL: UNITY 79

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

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

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

[UNITY]/TIL: UNITY 2024.11.20

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

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