70. Unity 최종 프로젝트 5주차(2)

이규성·2024년 2월 6일
0

TIL

목록 보기
77/106

02/06

📌알고리즘 코드 카타 (Algorithm Code Kata)

문자열 내 마음대로 정렬하기

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

입출력 예

stringsnreturn
["sun", "bed", "car"]1["car", "bed", "sun"]
["abce", "abcd", "cdx"]2["abcd", "abce", "cdx"]
using System.Collections.Generic;
using System.Linq;
using System;

public class Solution
{
    public string[] solution(string[] strings, int n)
    {
        List<string> list = new List<string>();
        Array.Sort(strings);

        IEnumerable<string> query = from word in strings
                                    orderby word.Substring(n, 1)
                                    select word;
        foreach (string str in query)
        {
            list.Add(str);
        }

        string[] answer = new string[list.Count];

        for (int i = 0; i < list.Count; i++)
        {
            answer[i] = list[i];
        }

        return answer;
    }
}

https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/concepts/linq/sorting-data

📌팀 프로젝트 진행

목표

Android build 최적화
Ios 빌드 알아보기

금일 구현 설계

방어구 시스템

금일 구현한 사항

  1. 방어구 시스템 1차 구현
public class ArmorSlot : UIItemSlot
{
    enum Images
    {
        Icon,
    }

    public ItemParts part;

    public override void Initialize()
    {
        Bind<Image>(typeof(Images));
        Get<Image>((int)Images.Icon).gameObject.SetActive(false);
        Get<Image>((int)Images.Icon).raycastTarget = false;    
    }

    private void Awake()
    {
        Initialize();
        Managers.Game.Player.ToolSystem.OnEquip += EquipArmor;
        Managers.Game.Player.ToolSystem.OnUnEquip += UnEquipArmor;
    }

    public void EquipArmor(QuickSlot quickSlot)
    { 
        Set(quickSlot.itemSlot);
    }

    public void UnEquipArmor(QuickSlot quickSlot)
    {
        Clear();
    }

    public override void Set(ItemSlot itemSlot)
    {
        Get<Image>((int)Images.Icon).sprite = itemSlot.itemData.iconSprite;
        Get<Image>((int)Images.Icon).gameObject.SetActive(true);
    }

    public override void Clear()
    {
        Get<Image>((int)Images.Icon).gameObject.SetActive(false);
    }
}





방어구의 종류 Head, Body에 따라서 장착되는 곳이 달라지는 것을 enum ItemParts를 이용하여 구분지어 볼 예정이다.
ToolSystem의 UnEquip 메서드 내부에 때우기 코드가 작성되어 있어서 수정할 예정이다.

금일 이슈

금일 커밋한 사항

방어구를 1차 구현하였습니다.
EquipItemData를 이용하여 SO를 만들어서 사용합니다.
ArmorSlot 클래스에서 ToolSystem의 OnEquip, OnUnEquip 이벤트에 메서드를 구독하여 동작합니다.
ToolItemData 클래스에 있던 내구도 변수를 방어구에도 사용하기 위해 EquipItemData로 옮겼습니다.
내구도 변수와 관련된 코드들을 수정하였습니다.

🤸🏻‍♀️Feedback

0개의 댓글