본문 바로가기

Til

TIL(Today I Learned) - 74 오늘의 TIL (Today I Learned):C#에서 BigInteger 사용법:BigInteger는 정수 계산에서 매우 큰 값을 다룰 수 있는 데이터 타입입니다. Unity와 같은 게임 엔진에서 BigInteger를 사용하면 매우 큰 수의 처리와 계산이 가능하며, 게임의 경험치나 금액처럼 점차적으로 커지는 수치에 유용하다.BigInteger의 주요 특징은 다른 숫자 타입들과 달리 범위가 제한되지 않아, int나 long보다 훨씬 더 큰 값을 저장하고 계산할 수 있다는 점입니다.마나 회복 기능 구현:마나 회복을 위한 로직은 reduceMana(-50)처럼 음수로 값을 전달하여 마나를 증가시킬 수 있다. 이를 통해 플레이어의 마나를 회복시키는 스킬이나 버프를 구현할 수 있다.ParallaxBackgrou.. 더보기
TIL(Today I Learned) - 72 TIL (Today I Learned) - 2025년 1월 2일1. Unity에서 파티클 시스템 이펙트 처리Unity에서 스킬 이펙트가 플레이어 캐릭터나 적에게 적용될 때, 파티클 시스템을 활용하여 효과를 시각적으로 구현하는 방법에 대해 배웠습니다.파티클 시스템을 생성할 때, 이펙트가 적의 위치에 정확하게 생성되도록 Instantiate를 사용하고, 그 후 해당 이펙트를 적의 부모로 설정하여 적과 함께 이동하도록 처리했습니다.이펙트가 적에게 생성될 때 파티클 렌더링의 Sorting Layer를 조정하여, 파티클 이펙트가 다른 오브젝트를 가리지 않도록 Order in Layer 값을 변경하는 방법을 익혔습니다.2. 스킬 이펙트와 데미지 적용의 타이밍 맞추기스킬 이펙트와 데미지 적용의 타이밍을 맞추는 방법에.. 더보기
TIL(Today I Learned) - 70 오늘의 TILUnity에서 ActiveSkill의 OnPlayer 타입 처리 개선문제: OnPlayer 타입의 액티브 스킬이 적에게 데미지를 적용하지 않는 문제가 발생.원인: PlayerSkillHandler에서 OnPlayer 타입 스킬이 발동될 때, 적 탐지는 했지만 데미지 전달 로직이 누락되어 있음.해결: HandleSkillUsed 메서드에서 OnPlayer 타입 스킬이 발동되면, Physics2D.OverlapCircleAll로 탐지된 적들에게 데미지를 적용하도록 수정.코루틴에서 비활성화된 오브젝트 문제문제: 적이 죽을 때 Coroutine couldn't be started because the the game object 'Enemy' is inactive! 오류 발생.원인: 코루틴 실행 중.. 더보기
TIL(Today I Learned) - 68 오늘의 TIL오브젝트 풀링과 초기화 문제 해결오브젝트 풀링 시스템에서 객체를 재사용할 때 초기화가 필요하다면 OnEnable을 활용해야 한다는 것을 배웠습니다.Awake나 Start는 객체가 처음 생성될 때만 호출되므로, 풀링된 객체가 다시 활성화될 때 초기화하려면 OnEnable에서 필요한 작업을 처리해야 합니다.캐싱된 객체와 싱글톤 활용PlayerObjManager.Instance와 같은 싱글톤을 활용하면 플레이어와 같은 특정 객체를 효율적으로 참조할 수 있다는 것을 배웠습니다.오브젝트 풀링된 적(enemy)에서 플레이어 데이터를 매번 GetComponent로 가져오는 대신, 싱글톤을 활용하여 OnEnable 시점에 초기화할 수 있습니다.코드 최적화와 가독성OnTriggerEnter2D와 OnTrig.. 더보기
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) - 62 오늘의 TIL (Today I Learned)1. 리팩토링 및 스킬 시스템 개선기존의 스킬 시스템을 객체지향적 구조로 리팩토링했습니다.스킬의 기본 클래스인 BaseSkill을 설계하고, 이를 상속받는 ActiveSkill, BuffSkill, PassiveSkill로 나누어 구체화했습니다.각 스킬 클래스에서 GetSkillEffect를 통해 스킬 효과 객체를 생성하고, 이를 SkillEffectManager에 전달하여 이펙트 및 효과를 처리하도록 개선했습니다.2. 스킬 클래스별 기능 세분화ActiveSkill: 즉시 발동하는 스킬로, 마나 소모 및 쿨다운이 존재합니다.BuffSkill: 일정 시간 동안 버프 효과를 적용하는 스킬입니다.PassiveSkill: 전투 중 조건에 따라 자동 발동되며, 쿨다운이.. 더보기
TIL(Today I Learned) - 60 오늘의 TIL1. 강화 상태와 UI 데이터 일치 문제 해결문제: 강화된 상태가 유지되지 않고, 화살표로 이동할 때 새로운 데이터가 로드되는 현상이 발생.원인: UI가 슬롯의 강화된 데이터를 참조하지 않고, DataManager에서 새로운 데이터를 가져오는 방식으로 구현되어 있었음.해결: 슬롯에서 넘겨받은 데이터를 기준으로 탐색하도록 수정하고, currentItem을 중심으로 데이터와 UI를 동기화.2. 수정된 접근 방식기존 방식: DataManager에서 데이터를 새로 가져와 사용 -> 강화 상태가 유지되지 않음.새로운 방식: 인벤토리의 리스트를 참조하여 currentItem을 기반으로 탐색. 슬롯의 데이터를 유지하면서 화살표 이동 가능.3. 주요 변경점SelectPreviousItem과 SelectNe.. 더보기
TIL(Today I Learned) - 59 오늘의 TIL (Today I Learned)장비 합성 로직 디버깅합성 로직에서 초기 데이터와 UI가 일치하지 않는 문제를 발견.SetEquipmentData에서 초기 데이터가 제대로 전달되지 않으면 이후 모든 로직에 영향을 미친다는 점을 확인.합성 후 기존 장비 스택 감소 및 결과물 추가 로직이 정확히 동작하도록 수정.UI와 데이터 동기화 문제 해결합성 후 UI가 갱신되지 않는 문제를 InitializeUI 호출로 해결.currentEquipment와 resultEquipmentData의 null 체크를 강화하여 데이터 누락 방지.최소 1개 남기기 조건 구현합성 시 최소 1개를 남겨야 하는 조건을 구현.materialCount와 maxMaterials 계산을 조정하여 합성 가능한 재료 수를 제한.사진 .. 더보기