일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- skybox
- c#
- InputManager
- 직렬화
- BGM
- 자료구조
- 비선형자료구조
- Generic
- LINQ
- 장애물달리기
- 스택
- soundmanager
- 코루틴
- inputsystem
- 유니티
- 효과음
- 프로그래머스
- unity
- invokec#events
- UI
- 유한상태머신
- script
- 배열
- 스파르타내일배움캠프
- 인터페이스
- FSM
- ObjectPool
- 람다식
- delegate
- 메서드
- Today
- Total
목록분류 전체보기 (65)
Unity 개발일지
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/TJRaf/btsH3mtAssY/Mv9QkYCYwIpMPlMspvq1KK/img.png)
이제 본격적으로 InputManager를 만들어보자. [프로젝트 세팅하기]Window - Package Manager - Unity Registry - Input System 검색 후 Install 먼저 Scene에 빈오브젝트 Player를 만들고, 프리펩을 넣어주었는데 핑크맨등장!랜더파이프라인설정이 달라서 수정하는 작업부터 해주도록 하겠다.Window - Rendering - Render Pipeline Converter - Convert Assets 클릭 - Initialize And Convert 클릭현재 프로젝트가 URP라서 생긴 현상으로, Built-in을 URP로 전환해준다. Player의 Material이 적용되어있는 Material파일을 클릭해보면 Built-In에서 사용하는 Standar..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/nbEG5/btsHZwwASiH/xkIXuMqKhYgsiwEn7NfIWK/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/qeuyU/btsHYFzcOOH/hdLoYmYBfM7iOp5MkPuro0/img.png)
이제 싱글톤은 익숙하다! 싶은 분들을 위해 준비했습니다. 제네릭 싱글톤! 일반적인 싱글톤 패턴은 특정 클래스의 인스턴스가 하나만 존재하도록 보장하고, 어디서든 그 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다. 싱글톤 패턴은 전역 변수와 유사하지만, 싱글톤 인스턴스는 다른 코드에 의해 덮어쓰지 못하도록 보호된다.Generic Singleton !!!제네릭이란 C++ 을 공부했던 사람들은 잘 아는 템플릿과 비슷한 개념이다.제네릭 싱글톤은 일반적인 싱글톤 패턴의 개념을 확장하여 다양한 유형의 객체를 관리할 수 있도록 한다. 즉, 제네릭 싱글톤 클래스를 정의할 때 특정 유형의 객체를 지정하고, 이 클래스를 통해 해당 유형의 유일한 인스턴스를 생성하고 접근할 수 있습니다. 유니티에서 제네릭 싱글톤은 특정 유..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b7MKPH/btsHUOJ3ayq/XqhQIo3MfwYpTiHyII6daK/img.png)
게임을 하다보면 맵이 바뀌지 않아도 특정 구역에 들어갔을 때 BGM이 바뀌는 것을 본 적이 있을것이다.오늘은 특정 지역에 들어갔을 때 BGM이 바뀌는 것을 구현하겠다. [계획]1. 빈 Object에 BoxCollider를 넣은 후 IsTrigger 를 체크하여 진입 시 작용을 할 수 있게 해준다.2. Player의 태그가 붙은 물체와 충돌 했을 때 OnTriggerEnter와 OnTriggerExit으로 BGM을 바꿔준다. [구현] 빈 오브젝트에 BoxCollider의 IsTrigger를 체크해주고Collider 범위를 설정해준다. AudioSource 컴포넌트를 등록한 후AudioClip에 재생할 BGM을 등록한 후Play On Awake와 Loop에 체크를 한다. ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YnGT5/btsHUqCeoBT/mvonE7aJjxPB4YazEK9Cq1/img.png)
오늘은 SoundManager로 간단하게 음악을 재생할 수 있는 스크립트를 작성해보자. [계획]스크립트마다 Sound 관련 변수들을 선언하고 Audio Clip을 등록할 필요 없이 Manager 오브젝트를 만들어 관리한다. How? 1. BGM과 효과음은 동시에 소리가 날 수 있다. 그러므로 SoundManager는 2개의 AudioSource를 등록해주고 각각 BGM과 효과음을 담당한다.2. 생각보다 노래소리와 효과음은 시끄럽다. Slider UI를 만들고, 이를 조정하여 테스트 중에도 소중한 귀를 지켜주자.3. 모든 스크립트들이 SoundManager에 쉽게 접근할 수 있는 방법은? Singleton 패턴! [구현] 우선 빈 오브젝트 SoundManager를 만든 후 AudioSource 2개와 So..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/EVzYJ/btsHRaf9JZv/DgDCzKdRjl0L4hfP4oivE1/img.png)
스크립트는 총 4개로 구성되어있다. [AvoidObstacleObjectPool]장애물들을 관리할 ObjectPool이다.5가지의 장애물을 쏠 것이기 때문에 Key 값을 입력하면 Value 값을 출력하도록 Dictionary를 사용하였다.주석과 같은 이유로 Value값을 List에서 Queue로 바꾸었다. 각 장애물별로 Object를 생성해주기 위해 for문을 사용하였으며, Enqueue로 Queue에 넣어준다. ObjectPool에서 가져오고, 반납하는 함수이다. 특이점이 있다면Queue를 썼기 때문에Duqueue와 Enqueue를 이용했다. [ShootObstacle]장애물을 쏠 Shooter에 등록 할 스크립트이다.게임을 만드는 과정에서 이부분에서 가장 많은 트러블슈팅을 했..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cuSsPG/btsHPP3wsZ2/LxMFTIEPk2lbHzIZ38EUrk/img.png)
팀프로젝트 작업으로 간단한 퍼즐 게임을 만드는데 장애물 달리기를 구현하기로 했다. [게임 개요]장애물을 피해서 목적지 까지 도착하면 되는 간단한 미니게임이다.플레이어는 오른쪽에서 Cube에서 왼쪽 Cube까지 달려가서 오른쪽의 큐브에 상호작용을 하면 게임이 끝난다.장애물은 5개의 지점에서 쏘는데 5가지 종류의 장애물을 쏘고, 한군데에서는 장애물을 쏘지 않는다. [Hierarchy 창 목록]AvoidObstacleGM을 만들어 작업 후 팀원들과 Scene에 합칠 때 사용하기 위해Prefab화 하였다. StartCube와 EndCube는 상호작용을 할 수 있도록 만들었으며 AvoidObstacleBorder는 StartCube에 상호작용 하면 생기는 보이지 않는 벽들을 설정하였고, ObstacleDestro..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bqoLXP/btsHNE2p2FP/22LWXzbvEXWFojiFN1rLc0/img.png)
오늘은 간단하게 Unity에서 스크린샷을 찍어 누끼를 따는데 도움이 되는 코드를 공유하고자 한다. private Texture2D ScreenShot(RenderTexture externalTexture){ Texture2D myTexture2D = new Texture2D(externalTexture.width, externalTexture.height); if (myTexture2D == null) { myTexture2D = new Texture2D(externalTexture.width, externalTexture.height); } //Make RenderTexture type variable RenderTexture tmp = Rende..