728x90
728x90
Switch 문은 if 문과 같이 조건 제어문에 속한다. 하지만 if문과 달리 (이상,이하,초과,미만)과 같은 부등식이 사용될 수 없는 특징을 가지고 있다. 즉, switch 문에서는 비교할 변수가 어떤 값을 가지냐(==)에 따라 실행문을 선택할 수 있는 것이다. (모든 switch 문은 if문으로 바꿀 수 있지만, 모든 if문을 switch문으로 치환할 수는 없음) Switch문은 if 조건문보다 가독성이 좋고, 다수의 변수값을 비교할 때 용이하다는 장점을 가지고 있다. 위의 스크립트를 보면 switch문은 보통 case와 함께 사용되며 switch(intelligence)와 case 1, case 2 실행문을 비교하여 적합하면 print()를 호출하게 된다. 원하는 case 문을 찾을 때 까지 계속 ..
Enumerations는 열거형이란 뜻으로 줄여서 enum이라고 쓴다. enum()함수는 인자들에 암시적(implicit)으로 integer 정수값을 부여하는 형변환 함수인데 최적화 역할을 수행한다. enum Direction {North, East, South, West}은 Direction 방향을 정하는 동서남북 인수들을 가진 배열인데 default로 North는 0, East는 1, South는 2, West는 3의 값을 배정받는다. 만약 enum Direction {North = 1, East, South, West} 이라면, North부터 1, East = 2, South = 3, West = 4의 값을 가진다고 보면 된다. (각각 인자에 원하는 정수값을 배정해줄 수 있다.)
Invoke()함수는 시간 딜레이를 주고 함수를 실행시키는 함수이다. 위 스크립트르 보면 SpawnObject() 메소드를 실행하면 target이라는 GameObject가 생성되는데 해당 함수가 실행되기 전 Start() 메소드내 Invoke()가 먼저 실행되게 된다. Invoke()는 호출string(이름)과 몇 초 후 실행될 것인가 하는 Time Delay라는 2가지 매개변수를 가진다. 즉, 스크립트가 실행되면 2초 후 SpawnObject 메소드가 호출되게 된다. InvokeRepeating() 함수는 Invoke()를 반복해주는 함수이다. InvokeRepeating()은 ("메서드 이름", 시간 딜레이, 반복 시간 단위)라는 3가지 인수를 가지고 있다. 위의 스크립트를 보면, SpawnObjec..
Instantiate()는 유니티 내 게임오브젝트의 Clone(복제물)들을 생성하는 함수이다. 보통은 Prefab을 복제하는데 자주 사용되는데, Prefab은 프로젝트 진행 과정에서 만든 Asset이라고 보면 된다. 위 스크립트에서 "Fire1"은 마우스 좌클릭을 의미한다.(프로젝트 세팅 - Input Manager 참고) 즉, 플레이 모드에서 마우스 좌클릭을 해줄 때 마다 rocketPrefab이 생성되는 것이다. 하지만 플레이모드에서 보면 생성된 프리팹들이 rigidbody 중력값을 받아 생성되자 마자 떨어지게 된다. (하늘 방향으로 쏠 경우) 이런 경우, as Rigidbody를 추가하여 rigidbody 컴포넌트에 AddForce()함수를 적용하면 원하는 방향(하늘을 향해)으로 프리팹이 발사된 후..
유니티에는 크게 2가지 Data Type이 있는데 Value Type과 Reference Type으로 나뉜다. Value는 특정 값을 가지는 반면, Reference는 Value값이 저장된 메모리의 주소를 가진 형태이다. 이 두 가지 타입의 차이는 데이터를 copy할 때 나타나는데, Value타입은 변수를 복사한 후 복사본을 사용해도 원본 변수에 아무 영향을 미치지 못하지만, Reference타입은 복사 시 메모리 주소 전체를 가지여고 때문에 데이터 수정 시 원본에까지 영향을 미친다. Value Type의 경우, pos는 Vector3 데이터 타입이기 때문에 trasform.position 변수에 아무런 영향을 주지 못하고, 결과적으로 transform에도 변화가 없다. 스크립트를 적용 후 유니티에서 플..
Delta의 의미는 두 값의 변화(차이)라고 해석하면 된다. 시간(time) 변수에 대입해 보면 각각의 Update()된 값 또는 FixedUpdate() 값의 변화인데 보통 움직임의 증가/감소분을 smooth하게 만드는 역할을 수행한다. 움직이는 오브젝트가 매 프레임마다 이동이 된다면 부자연스럽게 끊김이 발생하지만 매 초 단위로 움직인다면 자연스러울 것이기 때문이다. 보통 speed, rotate와 같은 물리적 변화와 관련된 변수에 Time.deltatime을 곱하는 식으로 스크립트를 작성해준다.