Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

동구의_C# & Unity_개발일지

2024.01.24 내일배움캠프 23일차 TIL_Unity (입문, 알고리즘) 본문

Unity

2024.01.24 내일배움캠프 23일차 TIL_Unity (입문, 알고리즘)

mongle_0l 2024. 1. 24. 17:45

오늘은 유니티 입문 과정에서 팀 과제가 있는 첫 번째 날이다.

늘 해왔던 대로 서로 협업을 하기 위해 깃허브 연동과 각자 맡을 역할분담을 배정하였고 유니티을 사용해야 되기 때문에 좀 더 긴 회의 시간을 가졌던 것 같다.

 

회의 시간에는 어떤 게임을 선택할지, 선택한 게임에 무엇을 추가할지, 어떤 컨셉를 할지가 주 논의가 되어 회의를 가졌다.

우리 팀은 똥 피하기 게임을 변형하여 아래와 같이 만들고자 결정하였다!

 

프로젝트 명: Don’t Stop It!!

게임 컨셉: 다이어트를 하기 위해 떨어지는 음식에게서 도망가는 컨셉

게임 방식: 캐릭터가 발판을 밟으면서 위로 점프하면서 골인 지점까지 도달하는 방식

 

내가 맡게된 역할!!

오브젝트가 떨어지는 것


알고리즘 코드카타 10일차

자릿수 더하기

문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
using System;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        while(n > 0)
        {
            answer += n % 10;
            n = n / 10;
        }
        return answer;
    }
}


스탠다드반 수업

 

Unity 디버깅

01. 디버깅의 기초

1-1) 디버깅의 개념 및 중요성

  • 버그 식별: 프로그램이 예상대로 동작하지 않을 때, 디버깅은 문제를 식별하는 데 도움을 줍니다. 예를 들어, 예기치 않은 에러 메시지, 무한 루프, 또는 비정상적인 동작을 감지할 수 있습니다.
  • 버그 해결: 디버깅은 버그를 찾아내고 이를 수정하여 소프트웨어의 정상 동작을 복원하는 데 사용됩니다. 이로써 소프트웨어의 품질과 안정성을 향상시킬 수 있습니다.
  • 코드 최적화: 디버깅 과정에서 성능 문제나 비효율적인 코드를 식별하고 개선할 수 있습니다. 이는 소프트웨어의 성능 향상에 도움을 줍니다.

1-2) 버그와 에러 유형 소개

  • 런타임 오류 (Runtime Error): 프로그램이 실행 중에 발생하는 오류로, 런타임 오류는 주로 무효한 연산, 배열 인덱스 오버플로우, 형식 변환 오류 등을 포함합니다.
  • 논리 오류 (Logical Error): 프로그램이 문법적으로 올바르게 동작하지만 의도와 다른 결과를 출력할 때 발생하는 오류입니다. 이러한 오류는 디버깅을 통해 식별하고 수정해야 합니다.
  • 컴파일 에러 (Compile Error): 프로그램 코드가 컴파일 단계에서 에러를 발생시키는 경우를 가리킵니다. 이는 주로 문법 오류나 변수 선언 문제 등을 포함합니다.
  • 예외 (Exception): 예외는 프로그램 실행 중에 예기치 않은 상황이 발생할 때 발생하며, 예외 처리를 통해 처리될 수 있습니다.

02. 비주얼 스튜디오 디버깅 환경

2-1) 유니티 & 비주얼 스튜디오 셋팅

2-2) 디버깅 세션 시작과 설정

2-3) 소스 코드 창과 디버깅 창 사용

  • 디버깅 모드에서만 창에 대한 설정이 가능

 

03. 브레이크포인트 활용

3-1) 브레이크포인트의 역할 및 설정 방법

  • 브레이크포인트 역할: 브레이크포인트는 코드 실행을 중단시키는 지점을 나타내며, 주요 디버깅 도구 중 하나입니다. 브레이크포인트를 설정하면 프로그램이 해당 지점에서 실행을 멈추고 디버깅 도구를 사용하여 해당 위치의 코드를 검사할 수 있습니다.
  • 브레이크포인트 설정 방법: 브레이크포인트를 설정하려면 코드 에디터에서 중단하려는 라인에 커서를 두고 F9 키를 누르거나, 해당 라인의 왼쪽 마진을 클릭합니다. 브레이크포인트는 코드 라인에 빨간 동그라미로 표시됩니다.

3-2) 조건부 브레이크포인트 사용

  • 조건부 브레이크포인트 역할: 조건부 브레이크포인트는 특정 조건이 충족될 때만 중단되도록 설정할 수 있습니다. 이는 특정 변수의 값이 특정 조건을 만족할 때 브레이크포인트가 동작하게 하는 데 유용합니다.
  • 조건부 브레이크포인트 설정 방법: 브레이크포인트를 설정한 후 마우스 오른쪽 버튼을 클릭하고 "조건"을 선택합니다. 그런 다음 조건식을 입력하여 해당 조건이 충족될 때만 브레이크포인트가 동작하도록 설정할 수 있습니다.

3-3) 데이터 조사와 변수 감시

  • 데이터 조사 역할: 브레이크포인트에서 프로그램을 일시 중지한 후, 디버깅 도구를 사용하여 변수의 값을 검사할 수 있습니다. 이를 통해 변수의 현재 상태를 확인하고 버그 또는 문제를 식별할 수 있습니다.
  • 변수 감시 역할: 디버깅 도구에서는 "로컬" 또는 "워치" 창을 사용하여 현재 스코프 내의 변수를 감시할 수 있습니다. 워치 창을 사용하면 특정 변수를 지속적으로 모니터링하여 값의 변경을 쉽게 파악할 수 있습니다.

04. 스텝 인/아웃

4-1) 코드 실행의 단계적 제어

스텝 인 (Step In), 스텝 아웃 (Step Out), 스텝 오버 (Step Over)는 코드 실행 중에 다음 단계로 어떻게 진행할지를 제어하는 디버깅 도구의 기능입니다.

 

4-2) 스텝 인, 스텝 아웃, 스텝 오버의 차이

  1. 스텝 인 (Step In):
    • 스텝 인은 현재 실행 중인 함수 또는 메소드 내부로 진입합니다. 이것을 사용하면 함수 내부의 코드를 디버깅할 수 있습니다.
    • 스텝 인을 통해 함수 호출 내부로 들어가고, 해당 함수 내의 코드를 한 줄 씩 실행하며 디버깅합니다.
  2. 스텝 아웃 (Step Out):
    • 스텝 아웃은 현재 실행 중인 함수 또는 메소드의 범위를 벗어나 외부로 나갑니다. 이것을 사용하면 함수 호출을 완료한 후에 다음 라인으로 이동할 수 있습니다.
    • 스텝 아웃을 사용하면 함수가 반환된 후의 코드를 디버깅할 수 있습니다.
  3. 스텝 오버 (Step Over):
    • 스텝 오버는 현재 라인의 코드를 실행하고 다음 라인으로 이동합니다. 만약 현재 라인에서 함수 호출이 있는 경우, 해당 함수 호출은 완료됩니다.
    • 스텝 오버를 사용하면 현재 함수 내부의 디버깅을 넘어가고 다음 라인으로 이동하며 코드의 실행 흐름을 따릅니다.

4-3) 호출 스택 확인

  • 스텝 인/아웃을 사용하는 동안 호출 스택을 확인할 수 있습니다. 호출 스택은 현재 실행 중인 함수 호출의 히스토리를 보여주며, 함수가 어떻게 호출되고 있는지를 파악하는 데 도움을 줍니다.
  • 호출 스택은 재귀 호출이나 다중 함수 호출을 디버깅할 때 특히 유용합니다.

05. 비쥬얼 스튜디오 단축키

5-1) 자주 사용되는 단축키

  1. Alt + 위쪽 화살표: 현재 행을 위로 이동
  2. Alt + 아래쪽 화살표: 현재 행을 아래로 이동
  3. Ctrl + 왼쪽 화살표: 현재 커서를 현재 단어의 왼쪽 끝으로 이동
  4. Ctrl + 오른쪽 화살표: 현재 커서를 현재 단어의 오른쪽 끝으로 이동
  5. Ctrl + 위쪽 화살표: 현재 커서를 현재 문단의 맨 위로 이동
  6. Ctrl + 아래쪽 화살표: 현재 커서를 현재 문단의 맨 아래로 이동
  7. Ctrl + Tab: 열린 파일/탭 간 이동.
  8. Ctrl + 세미콜론 (Ctrl + ;): 솔류선 탐색기로 이동
  9. Ctrl + 쉼표 (Ctrl + ,):
    • 이 단축키를 사용하면 현재 파일 또는 코드에서 특정 항목을 검색할 수 있는 'Navigate To' 기능을 실행할 수 있습니다.
    • 주로 코드베이스 내에서 클래스, 변수, 메소드, 속성 또는 파일 등을 빠르게 찾고 이동하는 데 사용됩니다.
    • 검색창이 열리면 검색어를 입력하고 검색 결과에서 원하는 항목을 선택하여 해당 항목으로 이동할 수 있습니다.
  10. Shift + F12: 모든 참조 찾기

5-2) 디버깅용 단축키

  1. F5: 디버깅 시작 (디버그 모드로 프로젝트 실행).
  2. F9: 브레이크포인트 설정 및 해제.
  3. F10: 다음 라인으로 이동 (스텝 오버).
  4. F11: 함수 내부로 들어가기 (스텝 인).
  5. Shift + F11: 함수 호출 완료 및 다음 라인으로 이동 (스텝 아웃).
  6. F12: 현재 메소드 또는 함수의 정의로 이동.

06. 자주 발생하는 오류

NullReferenceException 오류:

  • 오류 상황: 게임 오브젝트에서 스크립트에 연결된 변수가 null인 상태에서 변수 또는 해당 변수에 연결된 메서드에 액세스하는 상황
# 디버깅 예제
using UnityEngine;

public class NullReferenceExample : MonoBehaviour
{
    private GameObject targetObject;

    void Start()
    {
        // 아래 줄에서 NullReferenceException 발생
        targetObject.SetActive(true);
    }
}

IndexOutOfRangeException 오류:

  • 오류 상황: 배열 또는 리스트에서 유효하지 않은 인덱스에 액세스하는 상황
# 디버깅 예제
using UnityEngine;

public class IndexOutOfBoundsExample : MonoBehaviour
{
    private int[] numbers = { 1, 2, 3 };

    void Start()
    {
        // 아래 줄에서 IndexOutOfRangeException 발생
        int value = numbers[3];
    }
}

MissingComponentException:

  • 게임 오브젝트에서 필요한 컴포넌트가 누락된 상태에서 해당 컴포넌트에 액세스하려고 할 때 발생합니다.

Syntax Error:

  • 문법 오류는 스크립트 파일에서 유효하지 않은 코드가 포함되어 있을 때 발생합니다.
  • 디버깅 방법: 스크립트 파일을 열어 오류 메시지를 확인하고, 해당 줄 및 주변 코드를 검토하여 문법 오류를 수정합니다.

Physics 관련 오류:

  • 충돌, 물리 시뮬레이션 또는 Rigidbody 관련 문제로 발생하는 오류입니다.
  • 디버깅 방법: Collider 및 Rigidbody 설정을 검토하고, 충돌 감지 코드를 확인하여 오류를 수정합니다.

팀 과제 프로젝트

 

깃 허브 데스크탑 연동

유니티에 사용될 무료 에셋

플레이어 캐릭터 에셋 == https://assetstore.unity.com/packages/2d/characters/pixel-adventure-1-155360 - 확정

 

떨어지는 오브젝트 == https://assetstore.unity.com/packages/2d/characters/bolt-2d-jellyfarm-assets-pack-188722 - 확정