본문 바로가기

프로그램

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) - 75 오늘의 TIL(Today I Learned):1. BigInteger 사용법BigInteger는 매우 큰 숫자를 다룰 수 있는 데이터 타입으로, System.Numerics 네임스페이스에서 제공된다.BigInteger는 기본적인 산술 연산뿐만 아니라, 덧셈, 뺄셈, 곱셈, 나눗셈을 지원한다. 다만, BigInteger는 기본적으로 float나 double처럼 소수점 계산을 하지 않기 때문에, 대체로 정수 기반 계산에 적합하다.2. 패시브 데미지 계산패시브 데미지를 처리할 때는 값을 누적되지 않도록 관리해야 한다. 주기적으로 갱신되는 데미지 계산에서 패시브 데미지는 한 번만 적용되게 해야 한다.예를 들어, rawTotalDamage를 계산할 때 passiveDamage는 한 번만 적용되도록 해야 하며, 여.. 더보기
TIL(Today I Learned) - 61 오늘의 TIL (Today I Learned)문제: 합성 시스템의 개선문제 정의:게임에서 아이템 합성 시, 보유한 아이템 중 1개는 남겨두고 나머지를 합성에 사용해야 한다. 예를 들어, 5개가 있다면 4개는 합성에 사용되고, 1개는 남아 있어야 한다.해결 과정:PerformBatchFusion 메서드에서 아이템의 StackCount를 확인하고, 남겨야 할 1개를 고려하여 최대 합성 횟수를 계산하였다. 이를 통해 실제 합성 가능한 개수를 정확하게 추출할 수 있었다.기존의 Fuse 메서드는 변경하지 않고 그대로 유지하며, 필요한 조건만 추가하여 사용하였다. 기존에 잘 동작하던 기능을 그대로 유지하는 것이 중요하다는 교훈을 얻었다.문제: 마지막 등급 아이템 처리문제 정의:마지막 등급의 아이템은 합성할 수 없도.. 더보기
TIL(Today I Learned) - 59 오늘의 TIL (Today I Learned)장비 합성 로직 디버깅합성 로직에서 초기 데이터와 UI가 일치하지 않는 문제를 발견.SetEquipmentData에서 초기 데이터가 제대로 전달되지 않으면 이후 모든 로직에 영향을 미친다는 점을 확인.합성 후 기존 장비 스택 감소 및 결과물 추가 로직이 정확히 동작하도록 수정.UI와 데이터 동기화 문제 해결합성 후 UI가 갱신되지 않는 문제를 InitializeUI 호출로 해결.currentEquipment와 resultEquipmentData의 null 체크를 강화하여 데이터 누락 방지.최소 1개 남기기 조건 구현합성 시 최소 1개를 남겨야 하는 조건을 구현.materialCount와 maxMaterials 계산을 조정하여 합성 가능한 재료 수를 제한.사진 .. 더보기
TIL(Today I Learned) - 31 1. EquipText 오류 수정 방법발생 문제: EquipText를 켜고 끌 때 메서드 호출 방식에 오류가 발생.해결 방법: gameObject.SetActive() 메서드를 사용하여 텍스트 오브젝트를 활성화하거나 비활성화함으로써 문제를 해결.기존의 잘못된 메서드 사용을 SetActive(equipped)로 변경하여 문제를 해결.2. Outline 활성화 코드 설명Outline 사용 목적: 장비를 선택하거나 장착할 때 시각적으로 강조 효과를 주기 위함.구현 방법:선택된 장비만 Outline이 켜지도록 하여, 다른 장비의 Outline은 비활성화됨.코드에서 Outline.enabled를 장비 선택 여부에 따라 동적으로 설정함.특히, 초기 장비 선택이 없을 때 모든 Outline이 켜져 있는 문제를 해결... 더보기
TIL(Today I Learned) - 26 오늘 드디어 팀과제를 발표하였다. 많은 조들의 발표를 보면서 코딩에는 정답이 없다는걸 느꼈다. 실시간으로 튜터님들이 피드백을 하면서 느낀점은 저번에도 배운것이지만 정적으로 할당하는것보다 동적으로 할당하는게 훨씬 좋다는것이다. 물론 정적으로 할당하는게 더 좋을때도 있지만, 대부분의 상황에서는 동적이 더 좋다는 점이다. 이로 인해 나도 앞으로 코딩을 할때 처음부터 구상을 동적으로 할당할 수 있게 코드를 짜봐야겠다. 더보기
TIL(Today I Learned) - 6 오늘은 개인 학습 마지막날이였다. 오늘 배운건 딱히 없었지만, 기존 코드들이 충돌났을때 변수를 따로 만들어서 A코드에 발생 안되게 해놓고, B코드에는 발생 되게 해놈으로써 충돌을 막았다. bool 이라는 코드를 잘 써먹은거 같다. private bool hasCollision = false; void OnTriggerExit2D(Collider2D other) {     if (other.CompareTag("ScreenBoundary") && hasEnteredScreen)     {         if (!hasCollision)         {             GameManager.Instance.IncreaseScore();             Destroy(gameObject);    .. 더보기