반응형 분류 전체보기552 Unity - FSM(Finite State Machine)을 사용해서 몬스터 AI를 만들어보자 FSM이란?FSM은 프로그램에서 객체의 행동을 여러 상태(State)로 나누고 현재 상태에 따라 객체의 행동을 다르게 설정하는 설계 패턴이다. 예시 : Idle → 플레이어 발견 → Chase → 공격 범위 안 → Attack FSM 핵심 구성 요소1. 상태(State) - 객체의 행동 단위, 각 상태는 독립적인 로직을 가짐2. 전이(Transition) - 특정 조건이 만족되면 상태 변경 발생3. 상태 머신(StateMachine) - 현재 상태 추적 및 전이 관리4. State Owner(상태 주체) - FSM을 실행하는 객체사장(State Owner) vs 직원(State) vs 회사(StateMachine)01 사장(State Owner) FSM을 사용하는 주체 ex) 적 AI상태를 바꾸고 .. 2025. 5. 9. GitHub - Slack에 GitHub 커밋 알림 연동하는 방법 (Feat. subscribe 명령어) Slack에서 GitHub commit 알림을 받자! 보통 협업할때 커밋했다고 카톡으로 내용을 주고 받는데 Slack에서 Github 연동을해서 커밋,PR,이슈등 내용을 자동으로 실시간 알림을 받을 수 있다.하는 방법01 GitHub 앱 추가02 Connect GitHub account 누르고 로그인 후 밑에 Entercode 입력연동되었으면 아래와 같이 성공되었다는 메시지를 보내준다.03 그러면 요렇게 사용할 수 있는 기능들을 메시지로 보내준다.04 Suscribe 명령어로 알림 설정하기 /github subscribe [owner/repo]아래 그림과 같이 잘 설정되었으면 이렇게 메시지가 온다.이제부터 커밋, PR생성 및 머지 등등 알림으로 받을 수 있다. 2025. 5. 9. Unity - Strategy Pattern(전략 패턴)을 사용해 씬에 따라 플레이어의 조작 방식을 달라지게 만들어보자 메인씬, 다른씬들 이렇게 게임이 구조로 되어있었는데 다른씬으로 갈 경우 플레이어의 행동을 다르게 씬들에 맞춰 바꾸고 싶었다. 그래서 찾아 보던 중 state패턴 이라는 것을 알게되었고 이를 사용해 구현하면 된다는 것을 알게되었다.Strategy Patten이란?객체의 행동을 캡슐화해서 런타임에 동적으로 변경할 수 있게 하는 패턴이다. 즉 플레이어의 행동을 코드 한 덩어리로 묶고 언제든지 원하는 행동으로 바꿀 수 있다.구현해보자IPlayerInputStrategy // 플레이어 행동을 위한 전략 인터페이스DefaultMoveStrategy, MiniGameStrategy // 각각의 씬에 맞는 전략 구현 클래스PlayerController // 실제 입력을 처리할 때 현재 전략을 사용GameManager .. 2025. 5. 7. Unity - MissingReferenceException 에러 해결 방법(+) Dontdestroyonload) Dontdestroyonload를 GameManager엠나 붙여도 안없어지길래 다른 매니저들도 있지만 GameManager에만 중복 방지 코드를 적었다. 그랬더니 계속 DialogueManager가 MissingReferenceException이라는 에러가 계속 떴다.GameObject: Manager├── GameManager (MonoBehaviour)├── DialogueManager (MonoBehaviour)├── UIManager (MonoBehaviour)위와 같은 구조로 매니저를 관리했었다.private void Awake(){ if (Instance != this && Instance != null) { Destroy(gameObject); return.. 2025. 5. 2. Unity - 상속 구조에서 호출 누락 조심! 아래와 같은 상속 구조의 코드가 있다고 가정해보자public class BaseController : MonoBehaviour{ protected virtual void Awake() { _rd = GetComponent(); // 컴포넌트 초기화 }}public class NPCController : BaseController{ protected override void Awake() { NPCManager.Instance.RegisterNPC(this); }}계속 NPCController에서 _rd가 없다는 null exception에러가 떴다. 뭐가 문제였을까?자식 클래스는 부모의 모든 기능을 물려받는다. 그러나 부모 메서드를 재정의하면 자식.. 2025. 5. 1. Unity - 코루틴 중복 사용 막는법 타이핑하는 효과를 넣었는데 코루틴이 두번 실행되게 되면서 글자가 두개씩 나오는 문제가 발생하였다. 사용했던 타이핑 코드private IEnumerator TypingText(TextMeshProUGUI messageText, string message){ messageText.text = ""; for (int i = 0; i ShowDialogue()메서드에서 대화를 시작하면서 코루틴을 실행하였다.public void ShowDialogue(TextMeshProUGUI messageText, string message){ StartCoroutine(TypingText(messageText, message));} 여기서 문제가 발생했다! 코루틴이 중복 실행된 것이다.NPC와 여러번 대화.. 2025. 5. 1. 이전 1 ··· 3 4 5 6 7 8 9 ··· 92 다음 반응형