본문 바로가기
유니티

유니티 수업 3일차

by 육지상어 2020. 12. 13.
728x90
반응형

오늘은 원격수업이다. 솔직히 집중은 안되는데 그냥 한다.

Cif 라는 스크립트 하나 만들고
예제 입력
Cif 문을 만들어
소괄호 안에 조건이 true일 경우
중괄호 안에 있는 명령문을 실행하게 됨

//if문(조건문, 분기문)
//소괄호 안에 조건이 true 일 경우
//중괄호 안에 있는 명령문을 실행하게 됨

cSwitch를 만든다.

//Switch-case문
// - if문에 비해 다양한 조건을 처리할 수 있지만
//   조건식을 지정해야해 번거로울 수 있음
//   조건이 많아도 손쉽게 처리 가능

int cal = 5;
int num1 = 5, num2 = 10;
int result;
// Use this for initialization
void Start()
{
    switch (cal) //switch(값을 판단할 변수)
    {
        case (3): //만약 cal의 값이 1이라면
            result = num1 + num2;
            Debug.Log(result);
            break; //case문을 빠져나옴

        case (5):
            result = num1 - num2;
            Debug.Log(result);
            break;

        default: //모든 케이스가 일치하지 않는다면
            Debug.Log("cal 의 값이 1, 2가 아닙니다.");
            break;

이런식으로 만들어지는데, switch, case 값으로 표현된다.
익숙하지 않은 구문이니만큼 이거는 유의하는게 좋다.

모든 케이스가 아닐 경우 디폴트로 출력된다.

다음은 cLoop로, for문이다.
그냥 일반 포문만..for (int b=0; b<5; b++)

다음은 어레이다.

int[] num = new int[5];
//5개 크기를 가진 num이라는 변수를 선언

int[] num1 = new int[] { 10, 3, 4, 0, 5 };
//num1이라는 배열 변수에 10,3,4,0,5 
//라는 값을 넣어줌

    num[0] = 1;
    num[1] = 5;
    num[2] = 4;
    num[3] = 7;
    num[4] = 10;

이론이야 뭐 그럴 수 있긴 한데 선언이 상당히 더럽다.

List number = new List();
//리스트 생성

//리스트 기본형 List<타입> 변수명 = new List<타입>();

// Use this for initialization
void Start()
{
    number.Add(5); //추가
    number.Add(10);
    number.Add(-3);
    //리스트변수명.Add(원하는 값)
    //순차적으로 원하는 값을 추가

    number.Insert(0, 20);
    //0번째 인덱스에 20을 추가
    number.Insert(4, -100);
    //4번째 인덱스에 -100을 추가
    //리스트변수명.Insert(인덱스번호,원하는값)
    //원하는 인덱스 번호에 값을 추가

    number.RemoveAt(0);
    //0번째 인덱스 값을 제거
    number.RemoveAt(2);
    //2번째 인덱스 값을 제거

    Debug.Log(number[0]);
    Debug.Log(number[1]);
    Debug.Log(number[2]);

    Debug.Log(number.Count);
    //인덱스의 갯수

    number.Reverse();

    Debug.Log(number[0]);
    Debug.Log(number[1]);
    Debug.Log(number[2]);

다음은 리스트인데 선언도 선언이지만, 배열이랑 큰 차이가 없다.
다만, 차이점이 있다면

//배열과 리스트
//1. 공통점
// - 배열이나 리스트를 이용해서
// 데이터를 묶음으로 관리하면
// 데이터를 모아 처리할 수 있다.
// - 인덱스 번호를 이용해서
// 편리하게 접근이 가능하다.

    //2. 차이점
    // - 리스트 : 프로그램 실행 도중 인덱스 값을 
    //   편리하게 추가 가능, 기본 제공 메소드를
    //   이용해서 다양하고 편리하게 사용가능

네 리스트는 유니티가 돌고있거나 게임 실행중에
값 추가가 가능합니다.
그러니까 배열은 프로그램 실행중 인덱스 크기를 늘리거나 줄이면 인덱스 안에 있는 값들이 사라지게 되요
리스트는 인덱스 안에 있는 값들을 보존하면서 크기가 늘어납니다.
// - 배열 : 프로그램 실행 도중 인덱스 값의
// 추가가 불가능

    //3. 그럼에도 배열을 사용하는 이유
    // - 배열이 CPU처리속도가 리스트보다 빠르다
    // - 리스트는 순차적으로 인덱스 값에 도달
    // - 배열은 인덱스 번호를 이용해서 
    //   그 위치에 도달

프로그램 실행 도중이라는것을 보아. 유니티가 돌아가는 도중에 리스트 값을 고칠 수 있는게 일단 장점이고, 관련 메소드가 많다는게 장점이다.
그리고 리스트는 크기를 지정 안해줘도 된다.
5 10 -3
0 1 2
인 상태로, number.insert(0,20)을 하게 되면 0번 값에 20이 들어가고 나머지는 밀린다.
20 5 10 -3
0 1 2 3
리버스는 값이 순서가 뒤집어진다.
배열은 값을 추가거나 줄이면 값이 초기화된다.
배열은 순차적이 아니라 배열값에 바로 도달해서 빠른데 리스트는 순차적으로 접근한다.

다음은 함수인데. 메소드라고도 부른다.

//함수 : 특정 용도의 코드를 모아둔 것

void Start()
{
    Hello(); //함수 호출
}
//반환값 함수이름()
void Hello() //void형 Hello라는 함수 정의
{
    Debug.Log("안녕하세요.");
}

그냥 함수 만들어서 호출....
다음은 또다시 함수 만드는것인데, 함수 앞 타잎으로 어떻게 설정하는지에 따라 리턴값이 달라지는것에 대한 설명 예시이다.

void Start()
{
    Debug.Log(One());

    float exp;
    exp = realNum();
    Debug.Log(exp);

    Debug.Log(name1());
}

int One() //반환 자료형이 int 인 one 함수 정의
{
    int num = 5; //지역변수 선언
    return num; //num 반환
}

float realNum()
{
    float num2 = 12.345f;
    return num2;
}

string name1()
{
    string name = "유니티";
    return name;
}

이런식으로 리턴을 생각하고 함수 타잎을 설정한다.

다음은 씨 펑션 3이라는 이름으로 스크립트를 만드는데,
그냥 함수에 아귀먼트가 들어가게끔 작성하는것이다. (인자)

int num = 0;

// Use this for initialization
void Start()
{
    num = Hellow(5, 7);
    Debug.Log(num);
}

int Hellow(int x, int y)
{
    int result;

    result = x + y;

    return result;
}
반응형

'유니티' 카테고리의 다른 글

유니티 7일차  (0) 2021.01.10
유니티 5일차  (0) 2020.12.31
유니티 4일차  (0) 2020.12.20
유니티 2일차  (0) 2020.12.08
유니티 수업 1일차  (0) 2020.11.30

댓글