전체 글(158)
-
아이템셀 동적생성 및 대장간 구조
아이템셀 동적생성개발 초기에는 아이템셀 오브젝트를 빠르게 연결하기 위해서 드래그 앤 드롭방식을 사용했었는데 동적생성하는 방식으로 수정하지 않은걸 발견해서 리소스를 통해서 동적생성하게 만들어줬다. 대장간 잘못된 구조대장간을 만들때 기능별로 스크립트를 분류한다는 생각떄문에 대장간 하나 여는데 프리펩이 2개가 든다.첫번째는 대장간의 아이템강화 버튼과 장비 분해 버튼을 담당하는 기능이고두번째는 해당 위치에 캐릭터 및 인벤토리 를 생성해주는 곳이고 해당 아이템 클릭시 오른쪽에 강화 판넬이 나오게 만들어주는 프리펩이다. 이렇게 2개를 나눴었는데... 나눈이유가 아이템강화랑 장비분해를 하는곳에서 공통된 ui가 있어서 매번 만드는것보다 프리펩으로. 하나 만들어둬서 그거를 사용하면 위치도 동일하게 만들 수 있고 같은 작..
2025.01.20 -
브로셔 작업
오늘 팀브로셔 작업 및 발표자료준비가 거의 끝난거 같다. 발표정리를 하다보니 뭔가 많은걸 한거 같은데 막상 자료정리를 하다보니 쓸게 생각보다 없어서 아쉬웠던거 같다.
2025.01.17 -
아틀라스 최적화 (드로우콜 줄이기)
아틀라스를 이용해서 드로우콜이 줄어든것을 확인해 보겠습니다. 유니티 화면을보면 오른쪽 위에 벌레모양의 버튼이 있는데 그거를 클릭해 들어가면 Frame Debugger창이 나오는데 이게뭐냐면 어떤순서로 화면의 ui가 보여지는지 가르쳐 주는 것이다. 그래서 아틀라스를 사용해서 이미지를 적용한거와 안하거의 차이점을 보여주자면 아틀라스로 이미지 관리를 안했다면 밑에 사진과 같이 이미지가 한장한장 나오는데아틀라스를 사용하면 한번에 이미지가 나오는게 확인이 될것이다. 이렇게 드로우콜을 줄이므로써 성능 최적화에 도움을 줄 수 있다.
2025.01.16 -
AnimationCurve를 활용하여 랜덤 값으로 설정
AnimationCurve를 이용해서 랜덤값을 설정하는 방법public AnimationCurve curveRandom;필드값으로 AnimationCurve 변수를 선언하면 Curve를 그릴 수 있다. 이때 x값을 Random.value를 사용해서 구하면(0~1까지) 그 x값에 해당하는 y값을 반환하면 된다. (위 그래프는 50%확률로 0.25이하의 값이 걸리게 설정한거다.)코드private float CurveWeightedRandom(AnimationCurve curve){ return curve.Evaluate(Random.value);}public void SetDropGold(int maxGold){ dropGold = Mathf.RoundToInt(maxGold * CurveWeig..
2025.01.15 -
인벤토리 개수제한
인벤토리 개수를 각 타입당 60개로 제한하기 위해서 처음에는 생각한방법이 아이템을 획들할때마다 for문을 돌려서 해당 아이템의 타입이 개수가 60개를 넘기면 아이템을 못먹게 만들려고 했는데 이렇게 코드를 작성할려니 너무 for문이 많이 돌거 같아서 찾은 방법이 각 타입당 정수형 변수 하나씩을 만들고, 해당 타입의 아이템이 늘어날떄마다 변수를 하나씩 더해줬다.public int equipmentCount;public int consumptionCount;public int miscCount;private void CountItem(ItemType type){ if (type == ItemType.Consumption) consumptionCount++; else if (type ==..
2025.01.14 -
상점 - 아이템 최대개수 이상 구매시 최대개수에 맞게 안나오는 오류
상점을 만들었을때 구매버튼을 누르면 한개는 최대개수만큼 만들어지는데 남은 개수가 최대개수를 넘어가면 최대개수만큼 나오지 않고 그냥 전체가 나오는 오류가 있었다.코드public void DeleteDuplicates(int id, int itemId) //소비, 기타아이템이 중복검사 { if (CheckItemType(DataManager.Instance.Item.GetItemData(FindItemId(id).itemId).itemType)) { for (int i = 0; i DataManager.Instance.Item.GetItemData(itemId).max) { int itemCount = ..
2025.01.13