본문 바로가기

TIL(Today I Learned)/오늘 무엇을 배웠을까

TIL(Today I Learned) - 40 QuitGame 메서드 개선:Application.Quit()은 Unity 에디터에서 작동하지 않기 때문에, UnityEditor.EditorApplication.isPlaying = false;를 추가하여 에디터 모드에서도 종료 테스트가 가능하도록 구현했습니다.이로써 QuitGame 메서드가 빌드 환경과 Unity 에디터 환경 모두에서 일관되게 작동하도록 했습니다.씬 전환 시 GameManager 초기화:OnSceneLoaded를 통해 씬이 로드될 때 InitializeGame을 호출하여 InGameScene에서 필요한 설정이 자동으로 초기화되도록 했습니다.GameManager가 초기화 과정에서 필요한 오브젝트들을 동적으로 생성하여 관리하도록 설계하여 코드의 유연성과 유지보수성을 높였습니다.슬라이더로 .. 더보기
TIL(Today I Learned) - 39 게임에서 HP 슬라이더와 캐릭터 스탯 연동: HP 슬라이더를 캐릭터의 HP와 연동하려면, HealthSystem에서 체력 변경 이벤트를 발생시키고, UI에서 이를 구독하도록 해야 합니다. 이때, HP 슬라이더는 HealthSystem에서 제공하는 OnHealthChanged 이벤트를 구독하여 체력이 변경될 때마다 슬라이더 값을 업데이트하도록 합니다. 이를 통해, 슬라이더가 실시간으로 체력을 반영하도록 구현할 수 있습니다.몬스터 소환 시 체력과 크기 증가: 몬스터 소환 시마다 체력과 크기를 증가시키기 위해, 소환된 몬스터의 HealthSystem을 초기화할 때 체력과 크기를 조정합니다. monsterOriginalScale을 사용하여 크기를 증가시키고, currentHealthMultiplier를 통해 체.. 더보기
TIL(Today I Learned) - 38 🔍 작업 내용 요약AutoClickController 및 TimeControlController에 대한 기능 구현:자동 클릭 및 시간 조절 버튼을 통해 플레이어 행동을 제어하는 기능을 구현했습니다.버튼 클릭 시 애니메이션 효과 적용 및 구매 여부에 따른 버튼 활성화/비활성화 로직을 추가했습니다.애니메이션 속도 조정:Mathf.PingPong을 사용한 애니메이션 속도를 조절하여 버튼이 4배 느리게 커졌다 작아졌다 하도록 조정했습니다.Mathf.PingPong(Time.time / 4, 0.2f) + 0.9f를 통해, Time.time을 나누어 애니메이션 효과의 속도를 느리게 했습니다.GameManager와의 참조 연결 문제 해결:동적 생성된 Player 객체의 컴포넌트를 참조하기 위해 GameManage.. 더보기
TIL(Today I Learned) - 37 Unity UI 버튼 클릭을 통한 게임 속도 제어:Time.timeScale을 활용하여 게임 속도를 조절하는 기능을 구현했습니다.버튼 클릭 시 속도가 x1, x2, x4 순서로 변경되며, 이를 순환하도록 설정했습니다.TextMeshPro를 사용하여 UI 텍스트 업데이트:버튼 클릭 시 속도 변경 사항을 TextMeshPro 텍스트를 통해 사용자에게 표시했습니다.TextMeshProUGUI 컴포넌트를 통해 "X1", "X2", "X4" 형식으로 텍스트가 업데이트되도록 구현했습니다.Animator 제거:게임 속도 조절에는 애니메이션이 불필요하다는 점을 확인하고 Animator 관련 코드와 트리거 설정을 제거하여 단순화했습니다.애니메이션 효과 대신 속도 변경과 텍스트 업데이트만으로도 필요한 피드백을 제공할 수 .. 더보기
TIL(Today I Learned) - 36 1. UI 이벤트 구독 문제 해결UIManager에서 각 UI 패널(Title, InGame, GameOver, Pause, InGameDescriptionPanel) 관리 및 이벤트 구독 문제를 다루었다.GameManager에서 발생하는 다양한 이벤트(OnTitleScreen, OnGameStart, OnGameOver, 등)에 맞춰 UIManager가 올바르게 구독하고 UI를 업데이트하도록 조정.특히, InGameDescriptionPanel이 게임 시작 시에 자동으로 표시되며, 사용자 입력 후 게임이 진행되도록 처리.2. 게임 상태 관리 개선GameManager에서 게임 중단 및 재개 시 Time.timeScale을 조정하여 게임의 모든 요소가 올바르게 일시 정지 또는 재개되도록 구현.ToggleP.. 더보기
TIL(Today I Learned) - 35 1. Singleton과 DontDestroyOnLoad 사용법Singleton 패턴을 사용하여 UIManager와 GameManager 등 여러 매니저를 관리하고, 특정 씬에서만 한 번 초기화되도록 설정.DontDestroyOnLoad는 루트 오브젝트(부모가 없는 오브젝트)에만 적용 가능하다는 점을 확인. 이를 위해 싱글톤 인스턴스 생성 시 항상 루트로 설정되도록 transform.SetParent(null)을 사용.특정 씬마다 다른 매니저 인스턴스가 필요할 경우, DontDestroyOnLoad를 사용하지 않고 씬 전환 시 새 인스턴스를 생성하는 구조를 활용.2. UIManager에서 동적 UI 초기화UIManager에서 UIRoot 프리팹을 배열로 관리하여 여러 UI를 동적으로 불러오도록 설정.Sc.. 더보기
TIL(Today I Learned) - 34 Unity에서 플레이어 무적 상태와 장애물 충돌 처리1. Physics.IgnoreLayerCollision을 활용한 간단한 무적 처리주요 발견: 무적 상태를 수동으로 확인하며 충돌을 처리하는 대신, Physics.IgnoreLayerCollision을 사용해 레이어 기반 충돌 무시를 설정하는 것이 더 효율적입니다. 이를 통해 플레이어와 장애물 간의 충돌을 무적 상태일 때 비활성화할 수 있습니다.장점: 조건문을 통한 충돌 처리 코드보다 간단하고, Unity의 물리 엔진을 활용해 성능에도 이점이 있습니다.2. 이벤트 기반의 체력 관리 시스템주요 발견: OnHealthChanged, OnLifeChanged, OnPlayerDeath 같은 Action 이벤트를 PlayerHealth 클래스에서 사용하면 체력.. 더보기
TIL(Today I Learned) - 33 싱글턴 패턴의 사용 여부: 프로젝트 구조에서 싱글턴 패턴을 언제 사용하고, 언제 직접 참조를 할지 결정하는 것이 중요합니다. 필요하지 않은 경우 싱글턴 패턴 대신 직접 참조나 인스펙터 설정을 통해 성능 최적화를 할 수 있습니다.자식 오브젝트의 컴포넌트 참조: 부모 스크립트에서 자식 오브젝트의 컴포넌트를 GetComponentInChildren이나 Transform.Find를 통해 동적으로 가져오는 방식을 익혔습니다. 이를 통해 인스펙터에서 수동 설정 없이 자식 컴포넌트를 활용할 수 있습니다.콜라이더 크기 조절: 특정 상황(예: 슬라이딩)에서 자식 콜라이더의 높이만 줄이는 방법을 통해 플레이어의 다양한 상태를 구현하는 방법을 이해했습니다.충돌 및 점수 관리 로직: 장애물 회피나 충돌 시 점수 및 체력 관리.. 더보기