코드네임 :
C# 스크립트 & 실행 본문
= 유니티 스크립트
스크립트란?
오브젝트를 어떤식으로 제어할건지( 오브젝트가 움직이는 방향을 기술)
1) Script 작성하기 :
Project → +(create) → C# Script → 생성된 Script file의 이름을 Test 로 이름 변경
2) Game Object 작성하기 :
Hierarchy → + → Create empty → Game Object 생성됨
(이 옵젝은 "비어있는" 오브젝트로 Game Object라는 이름이 디폴트 값으로 생성된 것, 아무 이름으로 바꿔도 상관없음)
3) Script file 적용하기 :
Test2 (Script file)를 Game Object에 끌어다 놓기 → 게임오브젝트에 테스트2 파일이 적용됨
4) Script file 열기 :
Test2.cs(C# file) 더블 클릭 → VS runs!
If 오류 시 (
)
5) Script 작성 :
ABOUT Script
Test2 스크립트 파일을 열면 다음 코드가 기본으로 담겨 있음!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class *스크립트이름* : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
⭐️ 클래스 이름과 스크립트 파일 이름이 동일해야 함 !! ⭐️
따라서 중간에 파일 이름 또는 클래스 이름을 바꾼다면 둘 다 바꿔줘야 함.⭐️
<둘째 사진> (위 자동으로 작성된 코드에 대하여)
using NameSpace;
using : 네임스페이스를 가리킴
(ex, using UnityEngine; 을 씀으로써 debug 같은 거 사용 시 그거 앞에 Unity~. 안 붙여도 됨)
▶ 1~2번 줄의 System.Collections와 System.Collections. Generic은 데이터를 저장하는 형을 제공함
▶ 3번 줄의 UnityEngine은 유니티가 동작하는 데 필요한 기능을 제공함
public class Test2 : MonoBehaviour {
// 여기에 클래스가 처리할 스크립트 코드를 작성
}
public class : 클래스 이름을 정함
▶ C#으로 작성한 프로그램은 클래스 단위로 관리
▶ 클래스 이름 = 스크립트(파일) 이름 !!!!!⭐️
▶ { ~ } 사이에는 스크립트를 실행했을 때 처리되는 내용 작성 (6줄 ~ 18줄)
void Start()
{
~ // 이곳에 처리할 스크립트 코드 작성
}
void Update()
{
~
}
Start : 스타트 메서드 (void Start() { ~} )
Update : 업뎃 메서드 ( " )
//로 주석 작성가능
프레임과 실행 시점
프레임 : 게임 화면의 그림 한 컷을 프레임이라고 함
FPS(Frame Per Second) : 1초에 표시되는 매수
▷ 게임은 1초에 60프레임(60FPS) 속도
(단, 60FPS로 설정해도 사용자가 입력한 표시 내용이 바뀌거나 시스템 부하 등이 달라지면, 프레임 간의 시간이 1/60초보다 빠르거나 느릴 수 있음 )
Time.deltaTime : 실제로 앞의 프레임부터 몇초 지났는지 알려줌
▶ 스크립트를 실행시키면 Start 메서드는 한 번만 실행되지만 Update 메서드는 프레임마다 반복해서 실행됨
void Start ()
{
// 캐릭터를 표시하는 처리
}
void Update()
{
// 현재 캐릭터를 조금씩 오른쪽으로 옮기는 처리
}
Update 메서드는 캐릭터 표시뿐만 아니라 충돌 판정이나 키 조작 등의 처리를 프레임마다 해야 함
Hello, World 출력하기
Console 창에 다음처럼 입력 :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test2 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
// Hello, World를 Console 창에 '출력'
Debug.Log("Hello, World");
}
// Update is called once per frame
void Update()
{
}
}
Debug.Log() : ()안에 작성한 문자열을 출력
" " : 문자열 취급
으미.. 다른 내용은 씨랑 똑같네..
6) 스크립트 실행 :
(아 그냥 애플 실리콘 버전 2022로 해라.. 맥에서 2020 컴파일 할 때 넘 느려,,,)
(+실리콘 버전으로 하면 걍 실행하면 컴파일 되서 OK)
Unity Editor로 돌아가기 → (야 근데 나는 이거 한번 스크립트 수정할 때마다 다시 Game Object에 Script 파일 끌어다놓은 후에 다음 과정 해야하는디..?(2020에서만) → 실행 도구(▶) → Console 탭 클릭(Layout을 Default로 설정해야 보이는디..) → Hello, World출력!
▶ 게임을 실행하면 Hierarchy 창에 등록된 게임 오브젝트가 활성화되고 게임 오브젝트에 적용한 스크립트가 실행됨
▶ 스크립트가 실행되면 클래스에 있는 Start 메서드는 처음 한 번만 처리함
▶ 그 후 게임이 종료될 때까지 프레임마다 Update 메서드가 반복해서 처리함
7) 씬 저장 :
여기까지 작업한 내용을 저장해야 하므로 씬을 만듦
▶ 도구 바에서 File - Save As를 선택하고 씬 이름을 SampleScene으로 입력한 후 Save를 클릭함
▶ 저장하면 유니티 에디터의 Proiect 창에 씬 아이콘이 나타남
'프로그래밍 > Unity(C#)' 카테고리의 다른 글
Unity랑 다른 VS 연결법 (0) | 2023.07.02 |
---|---|
배열 (0) | 2023.07.02 |
조건제어문 (C와 내용 같음...^^) (0) | 2023.06.30 |
변수 사용하기 (0) | 2023.06.29 |
Unity 기초 (1) | 2023.06.26 |