본문 바로가기

스파르타

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) - 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) - 32 오늘은 Unity에서 인벤토리 시스템과 상호작용 로직을 심도 있게 이해하고 분석하는 시간을 가졌다. 특히 인벤토리 관리, 상호작용 시스템, UI 업데이트를 어떻게 효율적으로 구현할지에 대해 배웠다. 구체적으로 다음과 같은 내용을 다뤘다.1. 인벤토리 시스템의 구조와 아이템 관리ItemSlot: 아이템이 담기는 슬롯의 역할과 아이템 스택, 장비 상태, 아이템 추가/제거 방식을 배웠다. 특히, 빈 슬롯 찾기와 스택이 가능한지 확인한 후 아이템을 추가하는 로직을 이해하게 되었다.UI 업데이트: 슬롯의 상태를 기반으로 UI를 업데이트하는 과정에서, Set과 Clear 메서드를 사용해 각 슬롯의 상태를 명확하게 표현하는 점이 인상적이었다.아이템 선택과 버튼 활성화: 선택된 아이템의 유형에 따라 사용/장착/장착 해.. 더보기
TIL(Today I Learned) - 30 오늘은 인벤토리와 퀵슬롯 시스템의 초기화 문제를 해결하는 데 집중했다. 특히, 인벤토리 슬롯과 퀵슬롯의 초기 수량이 아이템을 먹기 전까지 남아있는 문제를 해결하고자, UIInventory 스크립트의 Start() 메서드에서 각 슬롯의 아이템 수량을 명시적으로 0으로 설정하고, Clear() 메서드를 호출하여 UI에도 반영되도록 수정했다.이 과정에서 다음과 같은 점을 배웠다:슬롯 초기화 중요성: 슬롯에 초기 아이템 수량이나 상태가 남아 있는 경우, 게임의 UX에 혼란을 줄 수 있음을 깨달았다. 이를 방지하기 위해 명시적으로 초기화가 필요하다.UI 반영: 슬롯의 수량을 0으로 설정한 후 Clear() 메서드를 호출하여 UI에 그 상태를 반영해야 한다는 것을 배웠다. 단순히 변수 값을 변경하는 것만으로는 충분.. 더보기
TIL(Today I Learned) - 26 오늘 드디어 팀과제를 발표하였다. 많은 조들의 발표를 보면서 코딩에는 정답이 없다는걸 느꼈다. 실시간으로 튜터님들이 피드백을 하면서 느낀점은 저번에도 배운것이지만 정적으로 할당하는것보다 동적으로 할당하는게 훨씬 좋다는것이다. 물론 정적으로 할당하는게 더 좋을때도 있지만, 대부분의 상황에서는 동적이 더 좋다는 점이다. 이로 인해 나도 앞으로 코딩을 할때 처음부터 구상을 동적으로 할당할 수 있게 코드를 짜봐야겠다. 더보기