unity 썸네일형 리스트형 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) - 71 📘 오늘의 TIL (Today I Learned)스킬 데미지와 기본 공격 데미지 분리PlayerDamageCalculator의 GetTotalDamage 메서드에서 isSkill 매개변수를 추가하여 스킬 데미지와 기본 공격 데미지를 분리하는 방법을 배웠습니다.ResetSkillEffects 메서드를 추가해 스킬 사용 후 스킬 효과를 초기화할 수 있도록 수정했습니다.애니메이션 이벤트를 활용한 스킬 데미지 타이밍 처리스킬 애니메이션 도중 특정 타이밍에 데미지가 들어가도록 애니메이션 이벤트를 설정하는 방법을 학습했습니다.Unity의 Animation 창에서 이벤트를 추가하고, 해당 이벤트가 호출할 메서드를 구현하는 과정을 익혔습니다.스킬 효과 초기화 및 상태 전환스킬 데미지가 기본 공격과 충돌하지 않도록, .. 더보기 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) - 63 오늘의 TIL (Today I Learned):추상화와 상속 구조:클래스 간 상속을 사용할 때, 공통 기능은 **부모 클래스(BaseClass)**에 추상 메서드로 정의하고, 각 하위 클래스에서 구현할 수 있도록 해야 한다. 예를 들어, BaseSkill 클래스에서는 스킬의 공통 로직을 정의하고, ActiveSkill, PassiveSkill, BuffSkill에서는 각각의 스킬에 맞는 구체적인 로직만 추가한다.쿨다운 및 타격 기반 스킬:쿨다운 기반의 스킬과 타격 기반 스킬은 각기 다른 조건에서 활성화된다. 쿨다운은 스킬 사용 후 일정 시간이 지난 후에 다시 활성화되는 방식으로 처리하며, 타격 기반은 특정 횟수의 타격이 이루어졌을 때 스킬이 발동된다.상속받은 클래스에서 로직 중복 방지:부모 클래스에서 이.. 더보기 TIL(Today I Learned) - 61 오늘의 TIL (Today I Learned)문제: 합성 시스템의 개선문제 정의:게임에서 아이템 합성 시, 보유한 아이템 중 1개는 남겨두고 나머지를 합성에 사용해야 한다. 예를 들어, 5개가 있다면 4개는 합성에 사용되고, 1개는 남아 있어야 한다.해결 과정:PerformBatchFusion 메서드에서 아이템의 StackCount를 확인하고, 남겨야 할 1개를 고려하여 최대 합성 횟수를 계산하였다. 이를 통해 실제 합성 가능한 개수를 정확하게 추출할 수 있었다.기존의 Fuse 메서드는 변경하지 않고 그대로 유지하며, 필요한 조건만 추가하여 사용하였다. 기존에 잘 동작하던 기능을 그대로 유지하는 것이 중요하다는 교훈을 얻었다.문제: 마지막 등급 아이템 처리문제 정의:마지막 등급의 아이템은 합성할 수 없도.. 더보기 TIL(Today I Learned) - 56 TIL: 인터페이스와 런타임 데이터의 활용문제 정의 및 해결 과정IEnhanceable 인터페이스를 사용하는 과정에서 인터페이스에 정의되지 않은 StackCount를 접근하려고 시도하여 오류가 발생함.StackCount를 IEnhanceable 인터페이스에 추가하거나, 명시적 캐스팅을 통해 구현 클래스에서 직접 접근하도록 수정함.해결 방법IEnhanceable 인터페이스 수정: StackCount를 포함하여 모든 구현 클래스에서 통일된 접근 방식을 제공.타입 캐스팅 활용: 특정 클래스(Weapon, Accessory)로 캐스팅하여 개별 구현에 접근.주요 학습 내용인터페이스 설계: 인터페이스는 공통된 속성과 동작을 정의하며, 구현 클래스 간의 일관성을 유지함.런타임 데이터와 SO 데이터 구분: 강화 및 융.. 더보기 TIL(Today I Learned) - 55 오늘의 TILWeaponUpgradePopupUI 구현WeaponUpgradePopupUI를 구현하면서 보유 효과를 동적으로 처리하는 방식을 배웠습니다.보유 효과(Passive Effects)는 값이 0일 경우 UI에서 숨기고, 1개, 2개, 또는 3개의 보유 효과가 유동적으로 표시되도록 설정했습니다.SetActive 메서드를 사용해 해당 Row를 조건적으로 표시하는 방법을 적용했습니다.UI 업데이트 로직 개선무기 강화 시 SetWeaponData를 호출해 UI가 실시간으로 갱신되도록 설계했습니다.UpgradeWeapon 메서드에서 무기 강화 성공 여부를 확인하고, 성공 시 보유 효과 및 강화 비용 UI를 갱신했습니다.유연한 UI 컴포넌트 활용possessEffectRow1, possessEffectRo.. 더보기 이전 1 다음