코드네임 :

C# 스크립트 & 실행 본문

프로그래밍/Unity(C#)

C# 스크립트 & 실행

비엔 Vien 2023. 6. 27. 19:18

= 유니티 스크립트 

 

 

스크립트란?

오브젝트를 어떤식으로 제어할건지( 오브젝트가 움직이는 방향을 기술)


 

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에 말풍선이 붙어 있는 것을 주목 !!

▶ 스크립트를 실행시키면 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