Unity/Unity 학습정리(19)
-
Unity - FSM(Finite State Machine)(2)
이번에는 실제로 FSM을 이용해서 내가 원하는 동작을 State에 동작시키는 과정이다. State의 변화를 주어야하는 방법을 생각하고 해당 State에서 무엇을 해야하는지를 잘 고민하는게 중요한 것 같다. 애니메이션 적용먼저 애니메이션을 적용하기 위해선 유니티 에디터에서 애니메이션 연결을 해야한다. 그리고 애니메이션간 이동을 가능하게하는 Transition에서 Parameter를 두어 제어를 해야하는데, 이것 또한 StateMachine에서 동작 시킬 수 있다. 위 사진에는 Idle, Run, Attack 세 가지 상태에 따라서 해당 애니메이션을 제어하는 방식으로 사용했다. 추가적으로 한 상태에서도 두 개의 애니메이션을 쓸 수 도 있고 그것은 입맛에 따라 수정하면 될 것 같다.public cla..
2024.06.18 -
Unity - FSM(Finite State Machine)(1)
FSM 유한상태머신이다. 유한한 여러 상태가 존재하는데 여러 상태중 한 개의 상태만 가질 수 있고 상황 혹은 유저의 인풋 여러 요인으로 상태가 변화하는 것을 관리해주는 디자인 패턴이다. 구조적으로 잘 구성되어있고 애니메이션도 상태에 따라서 넣어 줄 수 있으며, 상당히 복잡한 행동을 하는 객체가 아니면 매우 유용하다. FSM 구조FSM은 디자인 패턴이기 때문에 구조 자체는 여러 구조로 나타낼 수 있다. 가장 간단한 구조가 Switch문을 이용해 구현하는 것이다.public enum State{ Idle, Run, Walk}switch(State){ case(Idle): Debug.Log("가만히 있다"); case(Run): Debug.Log("달린다"); case(Walk): Deb..
2024.06.17 -
Unity - 슬라이더바로 사운드 조절하기
게임에서 사운드 조절을 할 때 UI를 이용해서 조절한다. 보통은 슬라이더를 이용해서 0~100사이의 값을 조절하거나, 직접 값을 넣어 사운드를 조절하기도 한다. 토글기능을 통해서 아예 듣고싶지 않은 사운드를 끄거나 킬 수도 있는데 이번에 팀플레이 과제를하면서 사운드관련 작업을 해봤다. 목차AudioMixer슬라이더바 스크립트결과 AudioMixer 유니티에서 제공하는 AudioMixer는 우리가 늘 사용하던 오디오라고 생각하면 된다. 예를들어 마스터 볼륨이 있고, 그 밑으로 효과음, 배경음악, 대화소리 등 다양한 오디오가 존재하는데 그것을 AudioMixer로 관리할 수 있다. Group을 만들어서 사운드 종류별로 개발자가 원하는데로 조절이 가능하다는 것이다.BGM 그룹을 따로 만들었고 환경설정에서 ..
2024.06.05 -
Unity - Scriptable Object
이번에는 Scriptable Object에 대해서 공부했다. Scriptable Object란 많은 오브젝트에 들어가는 데이터를 한번에 관리할 수 있는 것이다. 예를들어 아이템에는 아이템 이름, 아이템 설명, 아이템 타입, 공격력, 방어력 등등 많은 데이터들이 들어간다. 그럼 아이템들을 제작할때마다 스크립트에 해당 필드들을 붙히는것은 비효율적이고 메모리 관점으로도 좋지 않다. Scriptable Object를 이용하면 해당 데이터들을 손쉽게 관리할 수 있다. Scriptable Object변경되지 않는 데이터들을 만들어놓고 사용하면 Prefab에서 Instantiate를 통해 꺼내서 사용할때 Scriptable Object를 참조하면 된다. 해당 방식이 아닌 필드에 작성해놓은 방식이라면 Instanti..
2024.05.27 -
Unity - Object Pool
게임을 진행하면서 많은 오브젝트들을 생성하고 파괴하는 과정을 거친다. 특히 반복적으로 이 행동을 해야하는 경우가 있는데 발사체를 쏠때 발사체를 여러개 생성하고 또 범위 밖으로 나가면 생성되어있던것을 파괴해야하는 경우가 있다. 오브젝트를 만들때 Instantiate(), 파괴할때 Destroy()를 자주 사용하는데 이 메서드들은 비용을 굉장히 많이 먹는 작업이다. 메모리를 새로 할당하고 초기화하는 과정 및 파괴 후 가비지 컬렉션같은 과정들을 거친다. 위 과정을 더 효율적으로 만들어주는것이 Object Pool이다. 과거버전 유니티에서는 오브젝트 풀을 공식적으로 지원하지 않아, 개발자가 직접 코드로 구현하여 사용했다고 한다. 지금은 공식적으로 지원하고 있고 직접 만든 오브젝트 풀과 유니티의 오브젝트 풀 ..
2024.05.23 -
Unity - 싱글톤 패턴
주로 사용하는 싱글톤 패턴을 제너릭을 이용해서 구현해보는 시간을 가졌다. 매번 매니저오브젝트와 스크립트를 구현하면서 싱글톤을 사용했는데 사용할 때마다 스크립트에 싱글톤을 구현해주는 방식으로 했다. 그러다보니 여러 싱글톤 객체가 생기기 시작했을때 똑같은 코드가 반복되는 현상도 발생했다. 제너릭으로 구현하게되면 싱글톤을 만드는 것도 간단하고 코드가 반복되지 않는 장점이 있다. 목차제너릭 싱글톤 클래스 생성싱글톤 객체 생성싱글톤 패턴의 장점과 단점마무리 제너릭 싱글톤 클래스 먼저 제너릭에 대해서 알아야 하는데, 제너릭은 동일한 기능을 수행하지만 다른 데이터를 받아서 처리할 때 유용하다. 매번 다른 데이터값에 대한 처리를 하기위해서 여러 메서드나 클래스를 작성하는것은 매우 비효율적이기 때문에 제너릭 타입을..
2024.05.21