유니티

유니티 수업 3일차

육지상어 2020. 12. 13. 16:38
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;
}
반응형