본문 바로가기

Unity/▶ Unity Composition

[Unity Composition]#1. C# Script 생성

728x90
반응형

1. 스크립트의 구성

프로젝트를 생성한 후 Asset-Create-C# 스크립트 생성

!!!주의점!!!

 

새로운 C# 스크립트를 생성하면 파일명에 맞춰 스크립트의 클래스명이 자동으로 결정된다. 이때 스크립트 내의 클래스 이름은 처음정한 파일명을 따라가는데, 나중에 스크립트 명을 변경하면 변경한 파일명에 맞춰 기존 코드의 클래스가 변하지 않는다.

 

따라서 새 스크립트를 생성하면 파일명을 즉시 변경하는 것이 좋으며, 스크립트의 파일명을 바꿀 시에 선언된 클래스명도 함께 바꿔야한다.

 

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

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

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

 

using 경로이름
using 키워드를 이용하여 사용할 라이브러리의 경로를 지정하면 해당 라이브러리에 들어있는 코드를 가져와서 사용할 수 있다. 이때의 경로를 네임스페이스라고 한다.

C#은 여러 라이브러리를 네임스페이스로 제공하며, 이를 가져와서 사용하기 위해 using키워드를 사용한다.
Start()
Start()메서드는 대표적인 이벤트 메서드로써 코드가 실행되는 시작점을 제공한다.

게임이 시작될 때 자동으로 한번 실행되므로 게임 시작과 함께 실행되어야 할 코드를 해당 함수 안에 넣는다.

2. 스크립트 생성: Debug.Log 예제

  1. 유니티의 프로젝트에서  C# 스크립트를 생성한다.
  2. 프로젝트에서 생성된 스크립트를 더블클릭한다. (Project - Asset - script)
  3. 디버그 콘솔에 Hello World! 가 출력되도록 코딩한다.
  4. 좌측 하단 Console에 디버그 메시지가 출력된 것을 확인할 수 있다.

스크립트 생성

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

public class HelloCode : MonoBehaviour{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Hello World!");
    }
}

Using

- using에 네임스페이스를 지정하면 해당 네임 스페이스에 들어 있는 코드를 현재 스크립트에 불러온다.

- 해당 네임스페이스를 통해 유니티가 제공하는 여러 기능을 활용할 수 있다. 

 

캐릭터 생성

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

public class HelloCode : MonoBehaviour{
    // Start is called before the first frame update
    void Start()
    {
    	//캐릭터 생성
        string characterName = "Tom";
        char bloodtype = 'B';
        int age = 17;
        float height = 173.5f;
        bool isFemale = false;

        //생성한 변수를 콘솔에 추가
        Debug.Log("캐릭터 이름: "+characterName);
        Debug.Log("혈액형: "+bloodtype);
        Debug.Log("나이: "+age);
        Debug.Log("키: "+height);
        Debug.Log("여성인가?: "+isFemale);
    }
}

Tip!!

  • C언어와는 다르게 Unity의 콘솔창에 출력하기 위해서는 Debug.Log() 함수를 사용한다. 이때 자동으로 엔터가 출력된다.

  • C언어는 printf("%d", 정수형 변수);와 같이 변수와 서식지 정자를 구분하는 반면, C#을 사용하는 Unity는 문장을 ""에 입력하고 '+'기호를 통해 변수를 출력한다. 

  • 서식지 정자의 사용은 C언어와 동일하지만,  float 형식을 초기화할 때에는 숫자의 뒤에 f를 적어줘야 한다.

거리계산 함수 생성하기

using System;

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

public class HelloCode : MonoBehaviour{
    // Start is called before the first frame update
    void Start()
    {
        float Distance  = GetDistance(2,2,5,6);
        // debug.Log("캐릭터 이름: "+characterName);
        Debug.Log("(2,2)에서 (5,6)까지의 거리: "+Distance);
    }
    float GetDistance(float x1,float y1, float x2,float y2){
        float col = x2 - x1;
        float row = y2 - y1;

        float distance  = Mathf.Sqrt((col*col)+(row*row));

        return distance;
    }
}

Tip!!

Debug.Log()가 오류나는 경우, 상단의 using System.Diagnostics; 를 삭제하면 된다.

C# 문법

1. 제어문: if문

using System;

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

public class HelloCode : MonoBehaviour{
    // Start is called before the first frame update
    void Start()
    {
        int attitude = 100;
        if(attitude > 70) Debug.Log("Good Ending!");
        else if(attitude > 70) Debug.Log("Bad Ending..");
    }
}
C언어와 같은 로직을 사용한다. 따라서 아주 간단한 출력예제만 하고 넘어가도록 한다.

2. 반목문: for문

using System;

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

public class HelloCode : MonoBehaviour{
    // Start is called before the first frame update
    void Start()
    {
        int num = 10;
        for(int i=1;i<=num;i++) Debug.Log(i+"번 째 출력입니다.");
    }
}

3. 배열

using System;

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

public class HelloCode : MonoBehaviour{
    // Start is called before the first frame update
    void Start()
    {
        int [] num = new int[5];
        for(int i=0;i<5;i++){
	        num[i] = (i+1);
        	Debug.Log("배열의 값 출력"+num[i]);
       	}
        
    }
}

Tip!!

C언어와 달리 C#은 배열을 선언하는 방법이 다르다.

C언어는 중괄호로 초기화를 할 수 있지만, 아직 C#은 초기화를 반복문을 통해 하는 방법밖에 모르겠다.

//C
int num[5] = {1,2,3,4,5};
//C#
int [] num = new int[5];

코드 설명

int[] num;

int[]처럼 타입 뒤에 []를 붙여 해당 타입에 대한 배열 변수를 선언한다. 배열의 인덱스의 개수를 정하지 않은 상태이다.

int[] num = new int[5];

new키워드는 어떠한 타입의 오브젝트를 새로 생성한다는 의미이다.

여기서는 new를 이용해 5개의 인덱스를 가진 int형 배열을 생성하여 num의 변수에 할당했다.

728x90
반응형
댓글