본문 바로가기

C#

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) - 67 오늘의 TILRegenManager 최적화:EnemyMover를 미리 캐싱하여 GetComponent 호출을 줄이고 성능을 개선했습니다.오브젝트 풀링을 활용하여 적 오브젝트와 관련 컴포넌트를 재사용하는 구조를 완성했습니다.적 배치 방식 변경:RegenManager 위치를 기준으로 X축 방향으로 일정 간격을 두고 적을 배치하도록 구현했습니다.spawnDistance를 활용해 배치 간격을 Unity Editor에서 쉽게 조정 가능하게 했습니다.컴포넌트 캐싱 활용:적 오브젝트의 주요 컴포넌트(EnemyMover)를 한 번만 초기화하고 이후 재사용하여 불필요한 작업을 제거했습니다.List 형태로 데이터를 관리해 코드 가독성과 유지보수성을 높였습니다.오늘의 작업으로 적 생성과 이동 로직이 더욱 효율적으로 개선되었.. 더보기
TIL(Today I Learned) - 66 오늘은 Unity에서 **SkillEffectManager**와 BaseSkill 클래스 간의 상호작용을 분석하고, 오브젝트 이름이 한글로 표시되는 문제를 디버깅했습니다. 주요 학습 내용은 다음과 같습니다:Prefab 이름과 생성된 오브젝트 이름:Unity에서 Instantiate로 생성된 오브젝트의 기본 이름은 프리팹 이름을 따릅니다.SkillDataSO의 effectPrefab 이름은 영어로 설정되어 있었으나, 다른 로직에서 이름이 한글로 변경될 가능성이 높았습니다.BaseSkill 클래스와 SkillEffect의 역할:BaseSkill의 GetSkillEffect는 SkillDataSO 데이터를 기반으로 SkillEffect 구조체를 생성하며, 이 구조체는 SkillEffectManager.Trig.. 더보기
TIL(Today I Learned) - 65 오늘의 TIL (Today I Learned)액티브 스킬의 발동 조건 문제 해결액티브 스킬의 발동 조건을 히트 기반으로 변경하면서, 쿨타임 값이 0으로 고정되는 문제가 발생.IsReadyToActivate와 RemainingCooldown의 로직을 수정하여 쿨타임 기반과 히트 기반 조건을 명확히 분리함.히트 기반 스킬은 currentHits를 기준으로 처리하고, UI에도 올바르게 반영되도록 수정.ResetCondition 함수 수정스킬 타입에 따라 쿨타임(cooldownTimer)과 히트 횟수(currentHits) 초기화를 각각 처리하도록 개선.히트 기반 스킬에서는 currentHits를 0으로 초기화하여 조건이 다시 충족되도록 설정.SkillEquipSlot의 UI 로직 개선쿨타임 기반 스킬은 남은 .. 더보기
TIL(Today I Learned) - 64 오늘의 TIL (Today I Learned)인벤토리에 없는 스킬 표시 문제 해결:처음에는 인벤토리에 없는 스킬이 UI에 표시되지 않던 문제를 해결하려고 했다. 이 문제는 기본적으로 인벤토리에 없는 스킬은 아이콘이 보이지 않거나, UI에 표시되지 않는 상황이었음.이 문제를 해결하기 위해 **SkillInventorySlot**에서 인벤토리에 없는 스킬도 UI에 표시되게 하기 위한 로직을 추가했다.**SkillInventorySlot**에서 소유한 스킬과 소유하지 않은 스킬을 구분하여 UI에서 보여줄 수 있도록 했다. 소유하지 않은 스킬은 아이콘을 어둡게 처리하고, "No Inventory" 텍스트를 활성화해 사용자가 해당 스킬을 소유하지 않음을 인식할 수 있도록 했다.이때 아이콘의 알파값을 0으로 조정하.. 더보기