일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- inputsystem
- UI
- skybox
- 장애물달리기
- 스파르타내일배움캠프
- 인터페이스
- invokec#events
- script
- 자료구조
- FSM
- 스택
- 유한상태머신
- BGM
- 프로그래머스
- 람다식
- 효과음
- 코루틴
- 메서드
- InputManager
- ObjectPool
- 배열
- 비선형자료구조
- soundmanager
- 유니티
- LINQ
- Generic
- unity
- 직렬화
- c#
- delegate
- Today
- Total
목록스파르타내일배움캠프 (60)
Unity 개발일지
객체지향에 대해 잘 알고있는지 간단한 문제를 풀어보자.[실전문제]1. 위 코드에서 삼각형 Triangle 클래스를 새로 작성한다고 했을 때, AreaCalculator의 코드를 수정하지 않고, AreaCalculator가 삼각형의 넓이를 계산하도록 만들 수 있을까요?더보기IShape 라는 인터페이스를 정의하여 각 도형 클래스가 해당 인터페이스를 상속하게 하였고, AreaCalculatorExtensions 확장 메서드를 사용하여 AreaCalculator를 수정하지 않고, 삼각형 넓이를 계산할 수 있도록 CalculateTriangleArea 메서드를 작성하였다. 확장 메서드는 특정 클래스의 인스턴스 메서드처럼 호출된다.확장 메서드는 첫 번째 매개변수로 지정된 클래스의 인스턴스를 메서드 호출 대상 객체로..
어느정도 C#과 유니티에 익숙해진 것 같다.배운 문법을 잘 사용하는 것도 좋지만, 정확하게 알고 사용해보자. [연습문제] 1. 위 예제 코드에서 Car는 무엇을 나타내나요? car1과 car2는 무엇을 나타내나요?더보기Car는 클래스를 나타내고, car1과 car2는 Car의 인스턴스, 즉 객체를 뜻한다. 2. 위 코드에서 Car 클래스에 정의된 메서드를 호출할 때 car1과 car2를 사용해야 하는 이유는 무엇일까요?더보기car1과 car2는 Car 클래스의 인스턴스로, 인스턴스 메서드는 객체를 통해서만 호출할 수 있기 때문이다. 3. 위 코드에 어떤 메서드를 추가하고 아래와 같이 사용했습니다. SomeMethod에는 static 한정자가 붙어있을까요? 그 이유는 무엇인가요?더보기SomeMethod에..
[Generic 이란?]타입 매개변수를 사용하여 클래스, 구조체, 인터페이스, 메서드 등을 정의할 수 있게 하는 기능으로, Generic을 사용하면 데이터 타입에 의존하지 않는 재사용가능한 코드를 작성할 수 있다. 이는 코드의 타입 안전성을 높이고, 성능을 향상시키며, 코드 중복을 줄이는 데 도움을 준다.쉽게 말하면, 제네릭은 다양한 데이터 타입에 하나의 함수나 클래스를 정의할 수 있도록 하는 프로그래밍의 기법이다. 'T'라는 타입 매개변수를 받아들이며, 이 타입은 클래스가 인스턴스화될 때 구체적으로 결정된다. 매개변수로 받은 타입 'T'를 이용하여 데이터를 출력한다.더보기[Generic을 어떻게 활용해야하나?]1. 여러 데이터 형식에 의해 동일한 로직을 적용해야할 때2. 제네릭 컬랙션을 활용할 때 게임..
[Delegate란?]C# 언어에서 사용되는 일종의 형식(type)으로, 메서드 참조를 저장하고 실행할 수 있는 기능을 제공한다. 델리게이트는 함수 포인터와 유사하지만, 더 안전하고 유연한 방식으로 메서드를 가리킬 수 있다. 델리게이트는 주로 콜백(callback) 메서드를 정의하거나, 이벤트 기반 프로그래밍을 구현할 때 사용됩니다. 콜백 메서드를 정의하고 메서드를 대신 호출.메서드를 매개변수로 전달가능하다. SetGold라는 함수를 delegate로 선언을 해주고,event 등록을 함으로써 매개변수처럼 사용을 할 수 있게된다. SetGoldEvent라는 함수는 매개변수로 넘어온 함수(event등록을 한 SetGold형식의 변수) 를 체인으로 구독, 구독한 함수를 매개변수로 사용할 수 있다. 그렇다면 ..
[동적 생성이란?]동적 생성이란 게임 실행 중에 코드를 통해 오브젝트를 생성하는 것을 말한다.동적생성은 미리 정의된 프리팹을 인스턴스화 하거나, 코드로 직접 오브젝트를 만드는 방식으로 이루어질 수 있다.Scene전환을 해도 되지만 전환 시 신경써줘야하는 부분들도 많기 때문에 동적 생성을 선호하기도 한다. [동적 생성의 장점] - 씬이 가벼워져서 씬 로딩이 빠름 - 씬이 변화가 없어서 Git 충돌이 거의 없음 - Prefab단위로 작업을 진행해 분업이 편리 - 추후 대부분의 리소스 및 UI를 Adressable로 보내 빌드 용량을 낮추기 용이함 - 와이어 프레임상 변경이 일어날 경우 간단하게 바꿀 수 있음(유지보수 용이) [동적 생성의 단점] - 동적생성을 하는 코드를 추가 작성해야 해서 코드가 복잡해짐 ..
Animator 창에서 Bool값으로 변수들을 선언 후 Create Sub-State Machine을 만들어주고 Ground라고 이름을 붙여준다. 그러면 Animator 상단에 Base Layer 와 Ground 로 레이어가 나뉘게 되는데 조건을 만족하면Base Layer에서 Ground로 이동한다는 뜻이다. Animation을 만들어줘야한다면 만들어서 넣어주고, 이미 만들어진 Animation이 있다면 드래그드랍으로 등록해주자. Tsansition을 등록해주고 각각의 bool값 설정화 Has ExitTime을 해제해주는 등의 작업을 한다. Player가 직접 움직이는게 아니라 붙어있는 Model이 움직여야하므로 Animator를 모델쪽으로 움직여준다.Animator위치를 바꿔줬으니Player 스크립트에..
Scriptable 폴더를 만들고, 를 작성해주자.PlayerSO안에는 각 상태별 Data도 적어주었다.스크립트 저장 후 PlayerSO를 생성해준 뒤 값은 스크립트에서 정한 값 그대로 두었다.Player가 PlayerSO 데이터를 받아올 수 있도록 Player 스크립트를 수정해주었다.PlayerSO를 드래그드롭해서 넣어주자. 이제 PlayerGroundState에 들어갈 State들을 본격적으로 작성해보자!@일단, 스크립트이다.앞으로 상태들이 PlayerStateMachine을 거쳐갈텐데 상태들이 받아갈 수 있는 값들을 선언해주었다.StateMachine을 추상클래스로 만들고, 이를 상속했는데 딱히 바꿀 내용은 없기 때문에 그대로 가져간다.StateMachine이 계속 작동할 수 있도록 Player ..
InputManager의 다양한 구현방법 중 Invoke C# Events를 소개하고자 한다.Send Messages를 이용한 구현은 다음 포스팅을 참고하자. [Unity] New InputManager로 플레이어 이동 구현하기유니티로 플레이어의 이동을 구현하는 방법은 다양하다.오늘은 그중에서도 New InputManager로 구현을 해보았다. New InputManager란 무엇인가?우선 기존의 InputManager (구 InputManager)로 플레이어의 이동amor-games.tistory.com 이번 프로젝트에서는 Finite State Machine (유한 상태 머신) 기법으로 플레이어의 움직임을 구현핬다. [Finite State Machine]finite는 한정된이라는 뜻으로 infi..