ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 24년 4월 26일 TIL
    공부 기록 2024. 4. 26. 21:41

    벌써 26일이라니 .. 흐덜

     

    오늘 깨달은 지식

    enum : 숫자에 의미를 부여 하는 것이다. 튜터님이 저번에 알려준 적이 있는데 역시 한 번 경험을 얻어야 알게 되는 것 같다. 이미 enum 으로 돼 있는 것도 있다. 컬러값이 그 경우다. RED,GREEN 등이 숫자가 담겨 있는 것이다. 담겨 있다고 하는 게 맞나? 아무튼 이 enum을 사용 하게 되면 0, 1 이런 값이 아닌 문자 RED 이런 식으로 표현 할 수 있어서 가독성에 매우 좋은 기능이다. 

     

    사용법 public enum 이름 { 숫자에 의미를 부여할 단어명, 2, 3,4 } 

     

    , 기준으로 0~ 부터 숫자가 오르게 된다. enum 첫 번째에 weapon 적었으면 weapon은 0 이 되게 되는 것이다. 

     

    ==============

    LINQ : 린큐 

    int totalAtk = 0;

    for(int i = 0; i<inventory.Count; i++)

    {

    totalAtk += inventory[i].Atk;

    }

     

    이러한 코드를 매우 간략하게 표현 할 수 있는 게 린큐다. 

     

    inventory.Select(item ⇒ item,Atk).Sum();

    이와 같이 인벤토리에서 셀렉을 해오는데 아이템 리스트에서 Atk를 가져와 Sum 을 하게 하는 것이다. 

    주의 할 점은 메모리사용량이 커 남용을 하면 안 된다고 한다. 튜터님이 남용 하는 거 극혐 한다고 한다. 히이익

     

    ==============

    삼항연산자에 대해서

    삼항연산자는 경우에 따라서 매우 유용하게 쓸 수 있다. 가독성을 올리는 데 좋다는 것이다. 

    오늘과 같은 경우에 장착 여부에 따라 추가 공격력 표시를 보이게 하는 거였다. 

     

    삼항연산자를 통해 장비가 장착이 돼있다면 한 변수에 공격력을 합산 하게 하고 아니면 0값을 주게 했다.

     

    ex) nt bounusAtk = inventory.Select(item⇒item.IsEquipped ? itemAtk : 0 ).Sum();

    내가 혼자 작성 한다라면 몇 줄을 사용 해서 작성 할 것 같은데 이렇게 한 줄로써 매우 간단하고 가독성 좋게 작성 할 수 있다. 

     

    ==============

    Thread.Sleep(1111) : 몇 미리 스레드 동안 멈추게 할 수 있다.

     

    ==============

    코드를 치다가 그 코드 줄 위치를 바꿀 수 있다. : 알트 + 방향키

     

    ==============

    ToString - ( " 00 " ) 이렇게 작성을 하면 숫자가 1글자여도 2글자로 출력을 하게 할 수 있다. 

    나는 이걸 몰라서 문자열로 01... 이렇게 만들고 등등등 .... 하여간 몸이 고생한다.

     

    =============

    파라미터 사용법에 대해서 

    파라미터를 사용함에 있어서 더 간편 하게 코드를 작성 할 수 있는 방법이 있다. 파라미터에 미리 값을 주면 그 함수를 실행 할 때 생략을 할 수 있다. 

    ex ) void Sum(int a, int b = 10) {}   -> Sum(10)

    이렇게 하면 파라미터를 채워줄 때 하나만 채워줘도 b는 자동으로 10으로 채워지게 된다. 생략을 할 수 있다는 거다.

    잘 기억 하고 있자. 매우 유용하고 날 편하게 만들어 주는 생략법인 것 같다. 이번에 깨달았다.

    주의 할 점은 앞 뒤 모든 것을 생략 할 수 없다. 앞이나 뒤 중 하나만 생략 하는 것이 좋다고 한다. 

    만약 앞과 뒤 둘 다 생략 하면 찾기가 어렵다고 한다. 뭐가 두 번째고 뭐가 첫 번째인지, 사실 감만 오고 잘 모르겠는데 공학적인 지식 인 것 같다. 오늘은 여기서 런친다.

     

    =============

    생성자에 대해서 

    생성자란 클래스가 생성 될 때 호출 되는 함수, 바로 실행 되는 거다. 

    사용 법은 함수를 클래스명과 같이 하면 된다. 

    유니티에서는 보통 사용 하지 않는데, 이번 과제에서 게임이 실행 됐을 때, 아이템이나 플레이어가 생성 됐을 때 적절한 함수가 실행 되게끔 하기 위해 사용 됐다. 

     

    ex) 게임이 실행 되면 무슨 함수를 불러오고 어떠한 객체를 생성한다. (게임매니저에서)

    아이템을 생성 할 때 파라미터에 정보들을 입력 하고 생성 하면 생성자를 통해 아이템의 값들이 초기화 된다. 

    플레이어도 마찬가지 

     

    헷갈려서 열심히 개념을 잡았는데 유니티에서는 못 쓰게 한단다. 

    생성자의 용도는 기본세팅! 아무튼 생성자를 통해 게임이 시작 되자마자 인벤토리나 플레이어를 생성 해주니 다음부터 코드를 매우 깔금하게 보이게 할 수 있었다. player.level 이나 inventory.item 등 누가 봐도 플레이어의 레벨 가방의 아이템 보이게 작성 할 수 있었다. 매우 가독성이 좋아 보였다. 가독성 좋게 만들라는 게 뭔지 튜터님 코드를 보면서 확 깨달았다..

     

    튜터님의 코드작성 훔쳐보고 깨달은 것 

    튜터님은 코드를 작성 할 때 메서드를 만들고 나서 메서드를 실행 하게 하는 게 아니라 메서드나 클래스형 이름을 사용 하고 후에 컨트롤 + . 을 통해 클래스나 메서드를 만들었다. 왜 그런가 하니 아주 간편한 사기적이라고 해야하나 아무튼 기능이 있었다. 그 것은 각 유형에 맞춰서 자동으로 위치까지 형태를 만들어 줬다. 

    클래스 위치에 이름을 선언 하면 자동으로 클래스 생성. 메서드 형식이면 자동으로 알맞은 위치에 메서드 형식 생성해준다.

    이런 개사기 스킬이 있었다니. 앞으로 변수명 떠올리기에 더 신중을 가해야겠군.

     

    =============

    반복문과 if 조건문을 사용 할 때의 TIP 

    보통 반복문과 if를 같이 사용 하는데 이 때 경우에 따라서 else를 안 적고도 else 효과를 하게 할 수 있다. 어떻게 보면 당연한 건데 난 떠올리지 못 했었다.  예를 들어 

    while (true)

    {

      if (true?)    {};

      else(이거 해라);

    }

    이럴 경우에 어차피 if가 거짓이면 실행 되지 않고 다음 코드가 실행 될 것이니 굳이 else를 써서 코드를 낭비 하는 게 아니라 실행 할 내용만 적어주면 된다. 그렇게 코드를 또 간단하게 보이게 할 수 있었다. 물론 잘 생각 해서 생략을 해야 할 것이다. 이것을 보고 또 한 번의 깨달음을 얻게 된 기분 이었다. 이런 식으로도 코드를 줄일 수 있다라는 기분?.. 다음에 비슷한 경우가 있으면 내가 찾아서 줄일 수 있을 것 같다. 

     

    =============

    함수에 조건이 여러 개 있을 경우 그 함수 하나로 조건을 여러개 사용 할 수 있다.

    과제를 하면서 선택 하라는 기능을 정말 많이 구현 했었는데 그 때 트라이파스로 사용 했고 그 파스가 트루면 값을 가져오고 그 값에 맞게 알맞는 if 조건을 실행 하게 하는 코드 들이였는데 나는 한 15줄씩 사용 해서 구현 했던 걸 튜터님은 한 4줄인가 5줄로 하더라. 보기에도 정말 깔끔하고 덕분에 또 깨달음을 얻었다... 

    난 트라이파스, 그 값을 가져 오는 거 전부 따로따로 했는데 튜터님은 그걸 다 한 줄로 합쳤다. if 조건문에 형식이라고 해야하나 공식이라고 해야하나 아무튼 그걸 응용 한 것이다. 

     

    ============

    if 조건문에 값이 생기는 거나 더해지는 건 조건문 밖에 선언이 돼있을 경우에 그건 실제로 적용이 된다. 

    if ( a++ < b ) 이럴 경우에 a가 선언이 돼있다면 멤버변수? 필드변수였나? 아무튼 a에 값도 추가가 된다는 것이다. 

    이걸 활용 해서 한 줄로 작성을 했었다. 

    int.TryParse(Console.ReadLine()out, int b)) 이렇게 코드를 작성 해서 int b 라는 변수를 선언까지 해서 함수가 실행 될 때마다 파라미터에 값이 선언 되면서 작동이 되고 이 뒤에 && 연산자를 통해서 min,max까지 설정 해서 한 줄로 끝냈다. 

    그리고 reture을 줘서 int 값까지 반환 할 수 있게, 

    이렇게 하면 조건문에서 bool 형 조건에서도 사용 할 수 있고, int 관계 연산자에서도 한 가지 메서드로 사용 할 수 있게 되는 것이다. 잘 이해 해서 완전 잘 이용 하도록 하자. 이 개념을 

     

    ==============

    앞으론 이제 안 쓸 것 같지만 d꿀팁 .. cw + Tab 하면 콘솔.라인 바로 나온다. 다른 것도 되는데 단축키를 알아야겠지?

     

    오늘 하루

    클래스에 대한 깊은 깨달음을 얻을 수 있는 날이었다. ... 하 .. 내가 개념을 못 잡고 있던 게 클래스 안에서 클래스를 계속 만들고 있어서였군 .., 어쩑.., 그동안 머릿속에서 혼동 되던 게 정리가 되니까 다 쉬워졌다 그냥. 사실 쉬운 게 맞았던 거 아닐까...

    오늘 튜터님의 해설강의가 정말 많은 도움이 됐던 것 같다. 설명도 잘 하시고 말도 빨라서 답답함 없이 쑥쑥. 아따 고사람 정말 똑부러진 튜터님이였다. 역시 내가 선택 한 전설의 튜터몬답군 나만 알고 싶었지만, 튜터님이 열심히 강의 찍으셨는데 많이 안 보는 것 같아 속상해 하는 것 같아서 잡담방에 보라고 채팅을 올렸다 ... 괜히 나대는 애로 찍힌 건 아닐까 싶네 . 근데 진짜 젛은 영상인 걸 어떡해

    근데 보통 해설강의라고 하면 안 보지 않나? 나조차 처음엔 안 보려고 했는데, 이건 특강이라고 해야지.

     

    그리고 공부는 9시 넘어가면 무조건 그만 하고 멈춰야겠다. 계속 9시 넘어서도 하니까 공부 할 때 대충 하는 것 같다. 

    좀 늦게 자면 되지 이런 식으로. 무조건 9시 되면 끝내고 자고 일찍 일어나서 하든가 아무튼 9시 넘어가면 다 정지. 그게 더 공부도 잘 되고 건강도 지키는 거다.

    '공부 기록' 카테고리의 다른 글

    24년 4월 28일 TIL  (1) 2024.04.28
    24년 4월 27일  (0) 2024.04.27
    2024년 4월 25일 TIL  (1) 2024.04.25
    2024년 4월 24일 TIL  (0) 2024.04.24
    2024년 4월 23일 스파르타캠프 TIL  (0) 2024.04.23
Designed by Tistory.