스크립트는 게임에서 오브젝트를 움직이게 하는 대본이다.
스크립트에 작성한 움직임을 오브젝트에 적용하려면 게임 오브젝트와 연결해야 한다.
예를 들어 캐릭터 움직이는 스크립트는 캐릭터 몸체 오브젝트와 연결해야 동작한다.
이처럼 게임 오브젝트에 움직이는 스크립트를 적용해야 오브젝트가 제대로 동작한다.
- 스크립트 생성 및 연결해보기
2D로 설정한 후 프로젝트를 생성해준다.
에디터가 실행되면 Project창에서 마우스 오른쪽 버튼을 누른뒤 Create -> C# Script를 선택한다.
작성한 스크립트를 적용할 게임 오브젝트를 추가해준다.
Hierarchy창에서 마우스 오른쪽 버튼을 누른뒤 Create Empty를 선택한다.
여기서 작성한 게임 오브젝트는 속이 빈 상태이므로 어떠한 기능도 없다. 이러한 게임 오브젝트를 빈 오브젝트라고 한다.
작성한 Test 스크립트를 게임오브젝트로 드래그&드롭하면 스크립트가 게임 오브젝트에 연결된다.
적용되었는지는 Inspector창에서 확인할 수 있다.
왜 안돼? 하고 3번이나 드래그하고 나중에 Test가 3개나 떠있는 걸 보고 된다는 걸 깨달았다,,ㅎ
스크립트 파일을 더블클릭하면 스크립트를 작성할 수 있는 Visual Studio가 실행된다.
아래의 코드는 기본으로 작성되어 있다.
(기본코드 생긴게 아두이노 기본코드와 비슷한 느낌이다 (⊙ˍ⊙))
라이브러리
// 데이터를 저장하는 형을 제공
using System.Collections;
using System.Collections.Generic;
//유니티가 동작하는 데 필요한 기능 제공
using UnityEngine;
C#으로 작성한 프로그램은 클래스 단위로 관리된다.
여기서는 클래스 이름 = 스크랩트 이름.
스크립트를 실행하면 Start와 Update 블록 안에 작성한 스크립트 코드가 실행된다.
public class Test : MonoBehaviour
{
// 클래스가 처리할 스크립트 코드 작성
void Start()
{
// Start method : called before the first frame update
}
void Update()
{
// Update method : called once per frame
}
}
- 프레임과 실행 시점
게임 화면은 영화나 애니메이션과 마찬가지로 그림 한 컷을 플립북 방식으로 표시한다.
이 그림 한 컷을 프레임이라고 한다.
1초에 표시되는 매수는 FPS(Frame Per Second) 단위로 센다.
게임은 1초에 60프레임(60 FPS) 속도로 그림을 전환해 애니메이션한다.
단, 1초동안 60프레임으로 설정해도 사용자가 입력한 표시 내용이 바뀌거나 시스템 부하 등이 달라지면, 프레임 간의 시간이 1/60초보다 빠르거나 느릴 수 있다.
실제로 앞의 프레임부터 몇 초 지났는지는 Time.deltaTime 구조로 알 수 있다.
프레임 간의 시간은 Time.deltaTime에 대입된다.
Start 함수는 처음 한번만 실행 --> 게임이 종료될 때까지 Update 함수는 프레임마다 반복해서 실행된다.
Update 함수에서 캐릭터 표시뿐만 아니라 충돌 판정이나 키 조작 등의 처리를 프레임마다 해야한다.
- Hello, World 출력하기
유니티 에디터의 Console창에 Hello, World를 출력하는 스크립트 코드 작성
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
void Start()
{
Debug.Log("Hello, World");
}
void Update()
{
}
}
Console창에서는 오류 또는 경고를 표시하거나 스크립트에서 사용하는 값을 표시할 수 있다.
디버깅을 할 때도 자주 사용한다.
위 코드를 저장한 후 유니티 에디터에서 Scene뷰 위의 실행도구를 클릭하면 스크립트가 실행된다.
지금까지 작업한 내용을 저장하기 위해 Scene을 만든다.
File -> Save as를 선택 후 저장하면 Project창에 씬 아이콘이 나타난다.
출처 : <유니티 교과서 개정 3판> 책
'study > unity' 카테고리의 다른 글
[unity] #6. 운세 룰렛 (2) | 2020.08.12 |
---|---|
[unity] #5. C# 스크립트 기초 - 클래스, 벡터 (0) | 2020.08.09 |
[unity] #4. C# 스크립트 기초 - 배열, 함수 (0) | 2020.08.07 |
[unity] #2. 유니티 기능 알아보기 (2) | 2020.08.04 |
[unity] #1.시작 (0) | 2020.08.03 |