일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 유니티
- delegate
- skybox
- 코루틴
- ObjectPool
- c#
- 직렬화
- FSM
- script
- 프로그래머스
- inputsystem
- InputManager
- UI
- 인터페이스
- BGM
- 장애물달리기
- invokec#events
- 효과음
- unity
- 자료구조
- 스택
- Generic
- soundmanager
- 메서드
- 비선형자료구조
- 유한상태머신
- 람다식
- 스파르타내일배움캠프
- 배열
- LINQ
- Today
- Total
목록unity (38)
Unity 개발일지
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/clZBpy/btsICQM0ItS/Zp3JfPTm6xZAKY6rDx0yTk/img.png)
[확인문제] 1. 메모리 최적화 방법에 대해 알고 있는 것이 있나요? - a. POT(Power of Two) 텍스쳐에 대해 설명해주세요. - b. 아틀라스에 대해 설명해주세요. - c. 오브젝트 풀에 대해 설명해주세요.더보기 POT(Power of Two) 텍스쳐POT 텍스처는 가로와 세로의 길이가 2의 제곱수(예: 128x128, 256x256)로 이루어진 텍스처를 의미한다.이러한 텍스처는 GPU에서 메모리를 효율적으로 사용하고 빠르게 처리할 수 있다.또한 Mipmap을 생성할 때도 유리합니다. * Mipmap : 3차원 그래픽스의 텍스처 매핑 분야에서, 밉맵(mipmap)은 렌더링 속도를 향상시키기 위한 목적으로 기본 텍스처와 이를 연속적으로 미리 축소시킨 텍스처들로 이루어진 비트맵 이미지의 집합이..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/H0d16/btsIBIhIWZm/EeT9GoUoRyPuinfkFjX1e1/img.png)
[확인문제] 1. InvokeRepeating을 통해 반복 실행 중인 메서드는 오브젝트를 비활성화하면 멈출까요?더보기InvokeRepeating은 MonoBehaviour와 연관되어 있기 때문에 오브젝트가 비활성화 되더라도 계속 실행된다.(오브젝트 비활성화는 MonoBehaviour 자체의 기능을 막지 못하기 때문!) 오브젝트 비활성화를 통해 InvokeRepeating 메서드를 멈추고 싶다면 CancelInvoke()를 직접 호출하거나,OnDisable() 콜백 함수를 사용하여 오브젝트 비활성화 시점에 InvokeRepeating을 중단하도록 코드를 작성한다. 2. Coroutine을 통해 반복 실행 중인 메서드는 오브젝트를 비활성화하면 멈출까요?더보기Coroutine은 MonoBehaviour와 연관..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cgyVgw/btsIzxBS37R/cWXHv6TEpKkQyokqtKjsh0/img.png)
[확인문제] 1. Time.timeScale을 0으로 하면 Update와 FixedUpdate는 모두 호출이 되지 않을까요? 그 이유는 무엇일까요?더보기Update와 FixedUpdate 모두 호출되지 않는다.Time.timeScale은 게임의 시간 흐름을 제어하며, 0으로 설정하면 일반적인 프레임 업데이트가 멈춘다.따라서, Time.timeScale을 0으로 사용하면 게임을 일시정지하거나 특정 이펙트를 구현하는 데 유용할 수 있으나 게임 오브젝트의 로직을 제어하는데 사용해서는 안된다. 로직 제어에는 Start, Awake, OnEnable, OnDisable과 같은 MonoBehaviour 생명주기 메서드를 사용해야한다.2. Update의 호출주기에 영향을 주는 것은 무엇일까요?더보기프레임 레이트Upd..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dWnw9D/btsIkDoGyKA/jCop6zpXcv016YANkkMRNk/img.png)
[확인문제] 1. 위 코드의 출력 결과는 무엇인가요? 그 이유는 무엇인가요?더보기7과 35가 출력된다.첫번째 MathOperation은 Add메서드로 설정되어 3과 4를 더한 결과인 7을 출력두번째 MathOperation은 Multiply메서드로 설정되어 7과 5를 곱한 결과인 35를 출력 2. 위 코드의 Main함수를 아래처럼 바꿔도 같은 방식으로 동작할까요? 그 이유는 무엇인가요?더보기같은 방식으로 동작한다.Func는 C#에서 재공하는 내장 델리게이트 타입 중 하나로 매개변수를 받아 결과를 반환하는 메서드를 나타낸다.Func는 두개의 ins 매개변수를 받아 int 결과를 반환한다.둘 다 동일한 시그니처(매개변수와 반환타입)을 가지므로 동일하게 작동한다. 3. 델리게이트를 사용하여 메서드를 매개변수로..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Oijnk/btsIg31ftWD/l8ULa4WsWoKw7HDgJpxeT1/img.png)
[Generic 이란?]타입 매개변수를 사용하여 클래스, 구조체, 인터페이스, 메서드 등을 정의할 수 있게 하는 기능으로, Generic을 사용하면 데이터 타입에 의존하지 않는 재사용가능한 코드를 작성할 수 있다. 이는 코드의 타입 안전성을 높이고, 성능을 향상시키며, 코드 중복을 줄이는 데 도움을 준다.쉽게 말하면, 제네릭은 다양한 데이터 타입에 하나의 함수나 클래스를 정의할 수 있도록 하는 프로그래밍의 기법이다. 'T'라는 타입 매개변수를 받아들이며, 이 타입은 클래스가 인스턴스화될 때 구체적으로 결정된다. 매개변수로 받은 타입 'T'를 이용하여 데이터를 출력한다.더보기[Generic을 어떻게 활용해야하나?]1. 여러 데이터 형식에 의해 동일한 로직을 적용해야할 때2. 제네릭 컬랙션을 활용할 때 게임..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cfMrcK/btsIfEs1vkD/8e7qPLeU7NPk7ycFKeo6r0/img.png)
[Delegate란?]C# 언어에서 사용되는 일종의 형식(type)으로, 메서드 참조를 저장하고 실행할 수 있는 기능을 제공한다. 델리게이트는 함수 포인터와 유사하지만, 더 안전하고 유연한 방식으로 메서드를 가리킬 수 있다. 델리게이트는 주로 콜백(callback) 메서드를 정의하거나, 이벤트 기반 프로그래밍을 구현할 때 사용됩니다. 콜백 메서드를 정의하고 메서드를 대신 호출.메서드를 매개변수로 전달가능하다. SetGold라는 함수를 delegate로 선언을 해주고,event 등록을 함으로써 매개변수처럼 사용을 할 수 있게된다. SetGoldEvent라는 함수는 매개변수로 넘어온 함수(event등록을 한 SetGold형식의 변수) 를 체인으로 구독, 구독한 함수를 매개변수로 사용할 수 있다. 그렇다면 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/pB9Sr/btsIdePv7Aj/G8p4rrMERZ3GcO1247OVD1/img.png)
[동적 생성이란?]동적 생성이란 게임 실행 중에 코드를 통해 오브젝트를 생성하는 것을 말한다.동적생성은 미리 정의된 프리팹을 인스턴스화 하거나, 코드로 직접 오브젝트를 만드는 방식으로 이루어질 수 있다.Scene전환을 해도 되지만 전환 시 신경써줘야하는 부분들도 많기 때문에 동적 생성을 선호하기도 한다. [동적 생성의 장점] - 씬이 가벼워져서 씬 로딩이 빠름 - 씬이 변화가 없어서 Git 충돌이 거의 없음 - Prefab단위로 작업을 진행해 분업이 편리 - 추후 대부분의 리소스 및 UI를 Adressable로 보내 빌드 용량을 낮추기 용이함 - 와이어 프레임상 변경이 일어날 경우 간단하게 바꿀 수 있음(유지보수 용이) [동적 생성의 단점] - 동적생성을 하는 코드를 추가 작성해야 해서 코드가 복잡해짐 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/buJjKU/btsIblalmmm/ukddNDKbPsepUa9fxIJWB1/img.png)
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 스크립트에..