일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인터페이스
- 직렬화
- FSM
- 장애물달리기
- 메서드
- 스파르타내일배움캠프
- BGM
- delegate
- c#
- skybox
- ObjectPool
- 프로그래머스
- UI
- 코루틴
- 람다식
- LINQ
- 비선형자료구조
- 자료구조
- script
- inputsystem
- invokec#events
- 유니티
- 배열
- 스택
- unity
- soundmanager
- Generic
- 효과음
- InputManager
- 유한상태머신
- Today
- Total
목록Unity 개발 (35)
Unity 개발일지
[SkyBox]게임 세계의 배경을 둘러싸는 환경 매핑 기술입니다. 큐브 맵(Cube Map)과 구체형 스카이박스(Sphere Map) 등이 있으며, 주로 다음과 같은 특징을 가집니다. - 스카이박스는 6개의 택스처로 구성된 큐브 맵 또는 하나의 구체로 텍스처가 매핑된 구체형 스카이박스로 구성됩니다. - Unity에서는 씬의 배경으로 사용되며, 게임 환경을 확장 시키는데 활용됩니다. - 주로 하늘, 구름, 산 등의 자연적인 배경을 표현하는데 사용됩니다. - 미리 만들어진 스카이박스를 사용하거나 직접 만들어서 Unity에 적용할 수 있습니다. - 게임 중에 스카이박스를 동적으로 변경하여 낮과 밤 등의 시간대나 특정 이벤트에 맞게 배경을 변화시킬 수 있습니다. - 성능에 영향을 미치므로 최적화에 주의해야합니다..
[RayCast 란?]눈에 보이지 않는 광선(Ray)에 맞은 물체가 무엇인지 여부를 판단한 뒤 여러 가지 후처리를 하는 방식.Ray, RaycastHit, MaxDistance, LayerMask 등의 옵션을 가지고 있다. 카메라(출발점) 에서 Ray를 쏜 후 Collider에 부딪히면 RayCastHit으로 검출된 객체의 정보를 알 수 있다.Collider(충돌)을 검출해야하므로 Physics를 이용한다. [한번 쏴보자] Laycast를 관리해줄 Manager를 하나 만들어주었고,RaycastSceneManager 스크립트를 만들어 붙여주었다. 아래 스크립트설명에 작성하겠지만Ray는 Square에서 쏠 것이므로 SquareTransform은 Square로 해주었다. Square 2D오브젝트를 만들어..
[충돌에 필요한 것] [COLLIDER] 1. Edit Collider: 오브젝트의 충돌 범위를 조절할 수 있다. 2. Material: Physics Material 적용 옵션 (Physics Material 2D)충돌 재질에 따라 마찰(Friction), 탄성(Bounciness)을 적용할 수 있는 Material을 적용할 수 있다. 3. Is Trigger활성화시키면 충돌은 감지하지만 물리계산은하지 않음(트리거) 4. Used By Effector한쪽방향은 통과, 한쪽방향은 충돌하도록 설정할 수 있다.(Playform Effector 2D 컴포넌트로 발판 만들기) 5. Used By Composite부모자식 관계의 Collider 컴포넌트가 있는 오브젝트가 겹쳐있을 때 겹쳐있는 부분의 Collid..
[코루틴이란?]코루틴을 사용하면 작업을 다수의 프레임에 분산할 수 있습니다. Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드입니다. 대부분의 경우 메서드를 호출하면 실행을 완료한 뒤 호출한 메서드에 제어와 선택적 반환 값을 반환합니다. 즉, 메서드 내에서 발생한 모든 행동은 단일 프레임 업데이트 내에서 발생해야 합니다.코루틴은 스레드가 아니라는 점을 명심해야합니다. 코루틴의 동기 작업은 여전히 메인 스레드에서 실행됩니다.(유니티는 단일스레드이다.) [그래서 코루틴을 사용하면?]코드 내에서 구문 실행 도중에 처리를 대기시키거나, 순차처리에 함수를 병렬로 동시에 처리하도록 구현할 수 있다.예를 들면 캐릭터가 중독되어 체력이 ..
유니티화면에서 등록해줄 GameObject인 prefab을 선언합니다.List를 이용해 pool을 생성합니다.poolSize는 300으로 설정했습니다. for문을 이용하여 poolSize만큼 prefab을 Initiate하고, 비활성화한 후 pool에 등록합니다. GameObject를 반환하는 Get함수를 만들어주었습니다.foreach문을 이용 List pool에접근해서 변수 Gameobject obj에 할당하고,obj가 Hierachy창에 없으면 obj를 활성화하고, obj를 반환(출력)합니다. Release함수는 Gameobject obj를 변수로 받으며 obj를 비활성화해줍니다. Get함수화 Set함수를 이용하여 풀에서 가져다쓰고 반납하기를 하면 됩니다.[foreach문]foreach 문은 C#에..
이번 글에서는 디자인 패턴의 종류 중 하나인 싱글톤 패턴에 대해 알아보자. 싱글톤 패턴이란?특정 클래스의 인스턴스가 애플리케이션 내에서 하나만 존재하도록 보장하는 패턴으로,어디에서나 접근가능한 객체를 생성해서 편하게 접근하기 위해 사용한다.(심판처럼 게임의 흐름을 관리하는 객체라고 생각하면 쉽다!) 싱글톤 패턴을 사용하게되면 객체의 인스턴스는 오직 1개만 생성되게 되는데이를 구현하는 방법은 여러가지가 있지만,객체를 미리 생성해두고 가져오는 가장 단순하고 안전한 방법으로 예시를 작성해보겠다. 먼저 정적필드로 QuestManager를 new QuestManager로 인스턴스를 생성한다. QuestManager 인스턴스가 없다면 FindObjectType 메서드를 이용하여 찾아 instance에 넣어준다...
오늘은 캐릭터 스텟 시스템을 만들어보자 [AttackSO.cs] ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. ScriptableObject의 주요 사용 사례 중 하나는 값의 사본이 생성되는 것을 방지하여 프로젝트의 메모리 사용을 줄이는 고, 연결된 MonoBehaviour 스크립트에 변경되지 않는 데이터를 저장하는 프리펩이 있는 프로젝트의 경우 유용하다. 원거리공격을 따로 빼서 만들어준경우 AttackSO를 만들어주었다면 Project창에서 AttckSO를 만들 수 있다. AttackSO 스크립트에 넣은 값들을 조정할 수 있다. AttackSO를 연결해줘야하니 Controller에 Event등록을 해주자! Scr..
UI로 원하는 캐릭터 선택창을 만들자.Image와 Button UI로 간단하게 만들었다. OpenCharacterUIBtn 스크립트에는 말그대로 창이 열리고 닫히는 기능만 작성했다.SelectCharacterBtn 오브젝트와 SelectBtn 오브젝트에 각각 컴포넌트로 등록하고 OnClick을 설정하였다. SelecCharacterBtn도 간단히 Player의 자식 오브젝트에 SpriteRenderer를 넣어 구분하고SetActive를 이용해 켜고 꺼주었다. 이 과정에서 한가지 문제가 발생한다.바로 Animator가 처음 생성한 플레이어에만 적용되고 나머지 플레이어에는 적용되지 않는것! 그래서 PlayerAnimationConvert라는 스크립트를 만들어 Player1과 Player2의 컴포넌트로..