본문 바로가기

TIL(Today I Learned)/오늘 무엇을 배웠을까

TIL(Today I Learned) - 32 오늘은 Unity에서 인벤토리 시스템과 상호작용 로직을 심도 있게 이해하고 분석하는 시간을 가졌다. 특히 인벤토리 관리, 상호작용 시스템, UI 업데이트를 어떻게 효율적으로 구현할지에 대해 배웠다. 구체적으로 다음과 같은 내용을 다뤘다.1. 인벤토리 시스템의 구조와 아이템 관리ItemSlot: 아이템이 담기는 슬롯의 역할과 아이템 스택, 장비 상태, 아이템 추가/제거 방식을 배웠다. 특히, 빈 슬롯 찾기와 스택이 가능한지 확인한 후 아이템을 추가하는 로직을 이해하게 되었다.UI 업데이트: 슬롯의 상태를 기반으로 UI를 업데이트하는 과정에서, Set과 Clear 메서드를 사용해 각 슬롯의 상태를 명확하게 표현하는 점이 인상적이었다.아이템 선택과 버튼 활성화: 선택된 아이템의 유형에 따라 사용/장착/장착 해.. 더보기
TIL(Today I Learned) - 31 1. EquipText 오류 수정 방법발생 문제: EquipText를 켜고 끌 때 메서드 호출 방식에 오류가 발생.해결 방법: gameObject.SetActive() 메서드를 사용하여 텍스트 오브젝트를 활성화하거나 비활성화함으로써 문제를 해결.기존의 잘못된 메서드 사용을 SetActive(equipped)로 변경하여 문제를 해결.2. Outline 활성화 코드 설명Outline 사용 목적: 장비를 선택하거나 장착할 때 시각적으로 강조 효과를 주기 위함.구현 방법:선택된 장비만 Outline이 켜지도록 하여, 다른 장비의 Outline은 비활성화됨.코드에서 Outline.enabled를 장비 선택 여부에 따라 동적으로 설정함.특히, 초기 장비 선택이 없을 때 모든 Outline이 켜져 있는 문제를 해결... 더보기
TIL(Today I Learned) - 30 오늘은 인벤토리와 퀵슬롯 시스템의 초기화 문제를 해결하는 데 집중했다. 특히, 인벤토리 슬롯과 퀵슬롯의 초기 수량이 아이템을 먹기 전까지 남아있는 문제를 해결하고자, UIInventory 스크립트의 Start() 메서드에서 각 슬롯의 아이템 수량을 명시적으로 0으로 설정하고, Clear() 메서드를 호출하여 UI에도 반영되도록 수정했다.이 과정에서 다음과 같은 점을 배웠다:슬롯 초기화 중요성: 슬롯에 초기 아이템 수량이나 상태가 남아 있는 경우, 게임의 UX에 혼란을 줄 수 있음을 깨달았다. 이를 방지하기 위해 명시적으로 초기화가 필요하다.UI 반영: 슬롯의 수량을 0으로 설정한 후 Clear() 메서드를 호출하여 UI에 그 상태를 반영해야 한다는 것을 배웠다. 단순히 변수 값을 변경하는 것만으로는 충분.. 더보기
TIL(Today I Learned) - 29 오늘은 개인 과제를 하면서 모닥불에 있는 콜라이더를 피가 다는것뿐만 아니라, 근처에 있으면 더워져서 추위가 없어지고, 가까이 가면 피가 다는식으로 바꾸었다. 처음에는 자식 오브젝트로 콜라이더 2개를 생성하여, 부모 오브젝트에서 관리하는 스크립트를 짰으나, 구글링을 해본 결과 자식 오브젝트에 있는 콜라이더는 부모가 참조 할 수 없다는 결과가 있다. (정확히는 콜라이더는 참조 할 수 있으나, on trigger 관련 함수에서는 참조가 안된다.) 그래서 데미지를 입는거와 추위를 막아주는거를 스크립트를 나눠 따로따로 붙여줘서 작동이 잘됐다. 더보기
TIL(Today I Learned) - 28 오늘은 인터넷 강의를 들으면서 학습을 하였는데, 깜짝 놀란 패키지가 있어 쓰고자 한다. 바로 AI 네비게이션이라는 패키지다. 일단 간단히 요약하자면, NPC가 이동해야할곳 이동하지말아야할곳은 물론 장애물까지 다 판단해서 알아서 이동을 하는 기능이다. 예전에는 이런 기능이 없어 직접 알고리즘으로 구현했다고 했는데 상상하기도 싫다. 코드를 보면서 큰 틀은 AI 네비게이션이 알려주면서, 세세한 지시는 코드로 작성하여 마무리 하는 느낌이다. 아래는 AI 네비게이션의 주요 기능이다. Navigation Mesh (네비게이션 매쉬)3D 공간을 그리드로 나누어 이동 가능한 지역과 장애물이 있는 지역을 구분하는 매쉬입니다.캐릭터가 이동할 수 있는 영역과 이동할 수 없는 영역을 정의하고, 이를 기반으로 경로를 계산합니다.. 더보기
TIL(Today I Learned) - 27 이번에 강의를 들으면서 2가지가 인상깊었다. HP를 줄이는 UI를 지금까지는 이미지 스케일을 줄이는 방식을 사용하였는데 이제는 이미지의 Fill Amount를 줄였다 늘렸다 하는 방식으로 코딩을 바꿨다. 이로인해 뭔가 진짜 코딩다운 코딩을 하는것처럼 느꼈다. 오히려 코드도 더욱 간편해졌고, 더욱 자연스러워져 앞으로도 이 방식을 애용할거 같다. 또 하나는 UI 이미지를 미리 생성해놓고 자식을 생성했을때 내가 원하는 정렬방식으로 정렬이 되는 기능이 있다는것에 충격을 받았다. 수직정렬, 수평정렬, 수직수평정렬 등 많은 정렬이 있었으며 이걸 진작에 알았으면 좋았을걸하는 마음이 든다. 이런식으로 수직으로 정렬을 맞추면 자식으로 생성을 했을때 아래와 같이 알아서 정렬이 된다. 물론 오브젝트 사이사이 별 간격도 따로.. 더보기
TIL(Today I Learned) - 26 오늘 드디어 팀과제를 발표하였다. 많은 조들의 발표를 보면서 코딩에는 정답이 없다는걸 느꼈다. 실시간으로 튜터님들이 피드백을 하면서 느낀점은 저번에도 배운것이지만 정적으로 할당하는것보다 동적으로 할당하는게 훨씬 좋다는것이다. 물론 정적으로 할당하는게 더 좋을때도 있지만, 대부분의 상황에서는 동적이 더 좋다는 점이다. 이로 인해 나도 앞으로 코딩을 할때 처음부터 구상을 동적으로 할당할 수 있게 코드를 짜봐야겠다. 더보기
TIL(Today I Learned) - 25 오늘은 팀원과 협업 팀워크중에 발생한 일이다. 나는 양방향 참조가 나쁜지 모르고 무분별하게 양방향 참조를 하고 있었다. 따라서 양방향 참조에 대해 공부하여 장단점을 나만의 말로 썼다. 양방향 참조의 단점순환 의존성 (Circular Dependency) 위험: 양방향 참조는 두 클래스나 오브젝트가 서로를 참조할 때 발생합니다. 이로 인해 순환 의존성이 발생할 수 있으며, 이는 디버깅과 테스트가 복잡해지고 메모리 누수 같은 문제가 발생할 수 있습니다. 특히 객체가 서로를 참조하는 상태에서 적절히 해제되지 않으면 메모리 릭이 발생할 수 있습니다.코드 복잡성 증가: 클래스 간의 결합도가 높아집니다. A가 B를, B가 A를 참조하는 경우 두 클래스가 서로 강하게 연결되어 유지보수가 어려워집니다. 이러한 구조에서.. 더보기