728x90
반응형
1. 스크립트의 구성
!!!주의점!!!
새로운 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 예제
- 유니티의 프로젝트에서 C# 스크립트를 생성한다.
- 프로젝트에서 생성된 스크립트를 더블클릭한다. (Project - Asset - script)
- 디버그 콘솔에 Hello World! 가 출력되도록 코딩한다.
- 좌측 하단 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
반응형
'Unity > ▶ Unity Composition' 카테고리의 다른 글
[Unity Composition]#6. Vector (0) | 2022.03.07 |
---|---|
[Unity Composition]#5. 변수와 컴포넌트 (2) | 2022.02.03 |
[Unity Composition]#4. 참조 타입 (0) | 2022.02.02 |
[Unity Composition]#3. 클래스와 오브젝트 (2) | 2022.01.26 |
[Unity Composition]#2. C#과 C언어와 차이점 (0) | 2022.01.26 |