오늘은 원격수업이다. 솔직히 집중은 안되는데 그냥 한다.
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
//리스트 생성
//리스트 기본형 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;
}
댓글