본문 바로가기

유니티

TIL(Today I Learned) - 83 TIL (Today I Learned) - 2025년 1월 20일1. 스킬 시스템 리팩토링기존에는 ActiveSkill, PassiveSkill, BuffSkill 등 각 스킬 타입을 별도의 클래스들로 관리했으나, 코드 중복과 유지보수 문제로 인해 BaseSkill 클래스로 통합 리팩토링 진행.공통 로직(쿨다운, 스킬 효과, 강화 등)을 BaseSkill에서 처리하고, 각 스킬의 특화된 로직은 하위 클래스에서 구현하도록 구조 변경.SkillEffect 객체를 활용해 스킬 효과를 일관되게 처리하며, SkillEffectManager로 스킬 발동 로직 관리.코드의 중복이 줄고, 새로운 스킬 타입 추가 시 확장성이 높아짐.2. Inventory 시스템 리팩토링기존에는 스킬, 무기, 장신구 등 아이템별로 별도 .. 더보기
TIL(Today I Learned) - 82 오늘의 TIL (Today I Learned)Unity 프로젝트 디버깅 및 상태 추적오늘은 Unity 프로젝트에서 PlayerStat 클래스의 health 값을 추적하는 방법에 대해 고민하고, 이를 효과적으로 디버깅하고 추적하는 방안을 구현했습니다.문제 상황health 값 초기화 및 변경 이슈health 값이 게임의 첫 프레임에서 잘못된 값으로 초기화되거나, 의도하지 않은 방식으로 변경되는 현상이 있었습니다. 이를 디버깅하기 위해 값의 변경 이력을 추적하고, 변경된 시점과 값을 확인할 수 있는 방법이 필요했습니다.기존 Debug.Log의 한계값이 변경될 때마다 로그를 출력하는 방식은 단순히 현재 상태를 확인할 수 있지만, 변경 이력을 누적해서 확인하거나, 어떤 로직에서 값이 변경되었는지 명확히 추적하기 .. 더보기
TIL(Today I Learned) - 80 오늘의 TIL (Today I Learned):1. 스킬 효과와 데이터 갱신 문제스킬의 효과가 강화되었을 때, SkillEffect 객체가 원본 데이터를 그대로 참조하고 있다는 문제를 발견했습니다.TriggerEffect 메서드에서 최신화된 데이터를 반영하지 못하는 현상이 발생했습니다. 이를 해결하려면, 스킬의 상태를 최신화된 값으로 반영하는 로직이 필요하다는 것을 깨달았습니다.2. 스킬 데이터 갱신 및 객체 상태 관리강화된 SkillEffect 데이터를 반영하려면, BaseSkill 클래스 내에서 SkillEffect 객체를 갱신하는 방식을 수정해야 했습니다.이를 위해 SkillEffect의 속성 값들이 정확히 업데이트되도록 하고, 강화된 값이 TriggerEffect와 GetSkillEffect 메서.. 더보기
TIL(Today I Learned) - 79 📅 오늘의 TIL (Today I Learned)1. 비활성화된 게임 오브젝트와 코루틴 문제Unity에서는 비활성화된 게임 오브젝트(SetActive(false))에 속한 스크립트에서 StartCoroutine을 호출할 수 없다.이 문제를 해결하려면 코루틴을 실행하기 전에 게임 오브젝트를 활성화(SetActive(true))해야 한다.이벤트 구독과 게임 오브젝트 상태 관리의 순서가 중요하며, Awake, OnEnable, OnDisable 등 Unity 라이프사이클 메서드를 적절히 사용해야 한다.2. Unity에서 UI 페이드 효과 구현Image 또는 SpriteRenderer의 Color 속성을 조정하여 페이드 인/아웃 효과를 구현할 수 있다.Lerp를 사용해 알파 값을 부드럽게 감소시키며 시각적인 .. 더보기
TIL(Today I Learned) - 77 Unity 개발 인사이트인벤토리 시스템 최적화인벤토리 슬롯 할당 시 아이템을 새로 생성하는 대신 플레이어 인벤토리에서 직접 가져오도록 개선. 이를 통해 데이터 일관성이 유지되고 다른 시스템과의 연동이 용이해짐.UI 다중 라인 텍스트 조정Unity에서 \n을 사용해 텍스트에 줄바꿈 적용. 텍스트 필드나 UI 요소에 표시되는 문자열의 가독성을 높이는 방법 학습.프레임 속도 제한 문제 해결모바일 빌드에서 30프레임으로 고정되는 문제를 확인하고 Application.targetFrameRate를 사용해 프레임 속도 조정.효과 설명 동적 생성스킬 데이터의 effectDescription을 템플릿으로 활용해 동적 문자열 생성. 플레이스홀더({key})를 실제 값으로 교체하는 로직 구현.숫자가 의도한 대로 표시되지 .. 더보기
TIL(Today I Learned) - 76 1. UIManager를 통한 아이템 강화 레벨 업데이트UIManager를 중간 다리로 활용하여 강화된 아이템의 레벨을 여러 슬롯에 일괄적으로 업데이트하는 방법을 학습함.EquipmentUpgradePopupUI에서 강화 완료 시, UIManager.Instance.UpdateItemEnhancement(currentItem)을 호출하여 UIManager가 모든 슬롯을 순회하며 해당 아이템의 레벨을 업데이트하도록 구현.EquipmentInventorySlot에서는 강화된 레벨을 UI에 표시하도록 메서드(UpdateEnhancedLevel)를 구현.2. 슬롯 간의 아이템 일치 비교각 슬롯에서 아이템을 비교할 때, 아이템의 이름을 기준으로 강화된 아이템을 찾는 방법을 구현.슬롯에 있는 아이템과 강화된 아이템.. 더보기
TIL(Today I Learned) - 75 오늘의 TIL(Today I Learned):1. BigInteger 사용법BigInteger는 매우 큰 숫자를 다룰 수 있는 데이터 타입으로, System.Numerics 네임스페이스에서 제공된다.BigInteger는 기본적인 산술 연산뿐만 아니라, 덧셈, 뺄셈, 곱셈, 나눗셈을 지원한다. 다만, BigInteger는 기본적으로 float나 double처럼 소수점 계산을 하지 않기 때문에, 대체로 정수 기반 계산에 적합하다.2. 패시브 데미지 계산패시브 데미지를 처리할 때는 값을 누적되지 않도록 관리해야 한다. 주기적으로 갱신되는 데미지 계산에서 패시브 데미지는 한 번만 적용되게 해야 한다.예를 들어, rawTotalDamage를 계산할 때 passiveDamage는 한 번만 적용되도록 해야 하며, 여.. 더보기
TIL(Today I Learned) - 74 오늘의 TIL (Today I Learned):C#에서 BigInteger 사용법:BigInteger는 정수 계산에서 매우 큰 값을 다룰 수 있는 데이터 타입입니다. Unity와 같은 게임 엔진에서 BigInteger를 사용하면 매우 큰 수의 처리와 계산이 가능하며, 게임의 경험치나 금액처럼 점차적으로 커지는 수치에 유용하다.BigInteger의 주요 특징은 다른 숫자 타입들과 달리 범위가 제한되지 않아, int나 long보다 훨씬 더 큰 값을 저장하고 계산할 수 있다는 점입니다.마나 회복 기능 구현:마나 회복을 위한 로직은 reduceMana(-50)처럼 음수로 값을 전달하여 마나를 증가시킬 수 있다. 이를 통해 플레이어의 마나를 회복시키는 스킬이나 버프를 구현할 수 있다.ParallaxBackgrou.. 더보기