Unity 기본1 - object에 script 붙이기, c# 기본 자료형

1. object에 script 붙이기

 

Hierarchy에서 create empty하면 Gameobject 생성

 

 

 

 

생성된 gameobject 클릭 후 inspector 창에서 add component - new script로 스크립트 생성하면,

 

클릭한 gameobject에 붙는 script가 자동 생성

 

 

 

혹은 project창에서 create - C# script로 스크립트를 만들 수 있다.

 

 

 

 

생성된 스크립트 파일을, gameobject를 선택한 다음 inspector창에 드래그해서 붙일 수 있다

 

 

 

2. Hello, World!를 출력하는 프로그램

 

오브젝트에 스크립트를 붙이고 나서, 스크립트를 더블클릭하면 비주얼 스튜디오로 연결됨

 

cs확장자는 c#파일을 나타낸다.

 

Start()함수는 스크립트 실행시 처음에 한번 실행되는 함수

 

Update()함수는 특정 시간이 지날때마다 계속해서 자동으로 불려지는 함수

 

 

 

 

Start()함수에 Debug.Log("Hello,World!");라고 써준다.

 

 

 

 

 

ctrl+s로 파일 세이브하면, unity에 자동으로 결과가 반영이 된다

 

상단에 > 버튼으로 실행을 하면 Scene에서 Game으로 자동으로 넘어가고

 

아래 프로젝트 창에서 Console창을 눌러보면, "Hello,World!"라고 찍힌다

 

 

 

 

 

3. C#에서 많이 쓰이는 자료형 5가지

 

변수 - 숫자 문자 등의 값을 저장할 수 있는 공간

 

자료형 - 어떤 종류의 값을 저장할 수 있는 가

 

C#은 파이썬과는 다르게 어떠한 변수를 만들때, 어떠한 자료를 저장할 것인지 지정해줘야한다.

 

int - 정수(10자리, -21억~21억정도)

 

유튜브에서 조회수는 int로 저장했는데 싸이의 강남스타일 조회수가 21억이 넘어가는 순간 오류가 났다고함

 

예) 0, 1, -123, 9076

 

long - 큰 정수(18자리)

 

예) 2898785077654321

 

float - 소수 포함(정밀도가 떨어짐, 느리지는 않음)

 

소수점 포함 6자리 넘는 숫자는 정확하다고 믿기 어렵지만 대부분 게임에서 무리없이 사용 가

 

예) 3.14159

 

bool - 참,거짓

 

예) true, false

 

string - 문자열

 

따옴표로 둘러싸야함

 

예) "abc", "유니티 프로그래밍"

 

 

4. 변수를 선언하고 할당

 

C++ Java에서 했던거랑 똑같네

 

한줄 주석은 //

 

여러줄 주석은 /* */

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloWorld : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //문장의 끝에는 ;으로 끝을 내야함

        int x; //변수 선언, 자동으로 0이 들어감
        int y = 5; //선언하면서 값을 할당

        x = 1; //선언 후 할당

        Debug.Log(x + y);

    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

 

실행하면 아래와 같이 6이 나온다

 

 

 

 

 

참고로 로그 누르면 아래에 자세한 로그가 찍히고

 

파란색 부분 누르면 어디서 출력된건지 에디터로 바로 옮겨줌

 

 

 

 

5. overflow

 

long a = 123456789012345;

long b = 2345678901;로 하고 a*b를 출력하면?

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloWorld : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

        long a = 123456789012345;
        long b = 2345678901;

        Debug.Log(a * b);

    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

 

 

양수와 양수를 곱했는데도 -5450041699955786739라는 음수를 출력함

 

long의 저장 범위를 넘어섰기 때문에, 어디 저장한것이 아니더라도, 출력만해도 이상한 값이 나옴

 

 

 

 

 

6. float형의 소수점 저장과 정밀도

 

소수를 저장할때는 뒤에 f를 붙여야함

 

float d = 12345.56677889f; 이런 식으로

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloWorld : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

        float c = 12345678901234567;
        float d = 12345.56677889f;

        Debug.Log(c + d);

    }

    // Update is called once per frame
    void Update()
    {
        
    }

 

 

실제 출력시에는 1.234568E+16으로 출력하는데, E+16은 알겠지만 $10^{16}$이다

 

 

 

 

 

이와 관련된 사실로 c = 1234567891234567과 d = 12345678900000000에 대하여... 둘이 같은지 비교해보자.

 

==은 같냐 다르냐이고 ToString()은 string으로 바꾸는 거겠지

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloWorld : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

        float c = 12345678901234567;

        float e = 12345678900000000;

        Debug.Log((c == e).ToString());

    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

 

실제로는 수가 서로 다른데 True라고 나온다

 

float가 큰 수를 저장할 수는 있지만, 정밀도가 높지는 않기 때문에 대충 앞자리만 비교한 다음

 

같다고 하는거

 

 

 

 

 

7. bool 자료형

 

옳으면 true, 거짓이면 false

 

근데 unity에 출력하면 True, False라고 출력됨

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloWorld : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

        float c = 12345678901234567;

        float e = 12345678900000000;

        bool f = true;
        bool g = (c == e); // 비교 식을 넣을 수 있다

        Debug.Log(g);

    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

 

 

 

8. string 덧셈

 

두 string 값을 더하면, 그대로 붙여준다

 

참고로 파이썬은 안되는데 c#은 int + string하면 int를 알아서 string으로 인식해서 string 덧셈을 해준다

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HelloWorld : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

        string h = "대혁";
        string i = "이다";

        Debug.Log(h + i); //두 string을 붙여서

    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

 

 

TAGS.

Comments