유니티에서 스크립트를 만들면 아래와 같이 기본 스크립트가 형성된다.
예시 1) 변수
기본 스크립트 안에 예제로 몇가지를 입력해보았다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
// 30를 Console창에 출력한다.
int age;
age = 30;
Debug.Log(age);
}
// Update is called once per frame
void Update()
{
}
}
void Start() 안에 적은 것들은 한 번만 실행되고, void Update()안에 적은 것들은 반복적으로 실행된다.
int는 정수값을 나타내는 데이터형 이름이다.
age는 변수명이다. int 데이터를 담는 변수를 선언하는 것으로, age라는 이름을 지어줬다고 생각하면 된다.
변수를 데이터에 담기 위해서는 가장 먼저 변수를 생성하는 단계인 '선언'이 필요하다.
그래서 age라는 이름으로 정수값을 취급하는 변수명을 선언해준 것이다.
선언된 변수는 자유자재로 사용할 수 있고 언제든 값을 넣거나 변경할 수 있다.
변수에 값을 할당할 수 있는데 age = 30 는 age에 30을 할당한 것이라고 보면 된다.
변수는 int, void같은 키워드는 사용할 수 없고, 숫자로 시작할 수 없다.
특수문자는 사용할 수 없으나 언너바 _ 는 사용 가능하다.
(그리고 보통 한 단어이면 소문자로 시작하지만 여러단어조합으로 된 변수는 맨 앞단어만 대문자로 쓴다. 함수나 클래스 이름은 대문자로 시작한다. 필수는 아니나 보통 그렇게 사용한다.)
참고로 "=" 는 수학에서처럼 같다는 표현이 아니라 대입연산자라고 해서 (값을 넣는 변수) = (넣고 싶은 값) 이다.
즉, int 라는 데이터형에 age라고 변수명을 붙였고,
age에 30을 대입했다. (할당했다.)
따라서 age를 출력하라고 Debug.Log로 명령하자 콘솔창에 30이 출력된 것이다.
참고로 Debug.Log(age); 같은 함수는 age를 선언하고 아랫줄에 써주어야 한다. 그렇지 않으면 인식을 못해서 오류가 난다. \
추가로
int age;
age = 30;
이부분은
int age = 30;
으로 표현할 수 있는데, 이걸 변수의 초기화라고 한다.
변수 선언과 할당을 한 번에 한 것으로 이렇게 한번에 하는 것도 같은 결과로 나온다.
예시2) 함수
Start()처럼 뒤에 괄호가 붙는 것을 함수라고 한다. 함수 뒤에는 항상 괄호가 있어야 한다.
아래와 같은 예시를 하나 들어보겠다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class study : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int add = Addition(3);
print(add);
}
// Update is called once per frame
void Update()
{
}
int Addition(int x)
{
return x + 2;
}
}
int 뒤에 Addition() 를 써서 Addition이라는 함수 이름을 정해주었다
함수 이름 앞에 자료형인 정수 int를 적어서 반환값이 정수로 나오게 한다.
입력받는 값을 정수로 하기 위해 매개변수를 int x 로 선언해준다.
결괏값을 반환하는 키워드인 return 을 이용하여 매개변수 x에 2를 더해 결과르 반환하도록 작성한다.
마지막으로 Start() 에 add 변수 선언 후 Addition() 함수에 반환값 3을 할당해준다.
그런다음 print() 함수로 변수 값을 출력하면 아래와 같은 결과가 나온다.
함수 기능에 따라 매개변수나 반환값이 없을 수도 있다.
여러가지 매개변수를 선언하는 것도 가능하다.
아래와 같이 인수 2개를 이용하면
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class study : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
print(Addition(2,3));
}
// Update is called once per frame
void Update()
{
}
int Addition(int x, int y)
{
return x + y;
}
}
이렇게 결과가 나온다.
그리고 인수 없이 반환값만 있게 하려면
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class study : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
print(Addition());
}
// Update is called once per frame
void Update()
{
}
int Addition()
{
int x = 2;
int y = 3;
return x + y;
}
}
이렇게 작성하면 인수가 비어있는 상태로 결과값이 똑같이 5가 나온다.
출력함수가 없으면 반환값이 없고 매개변수만 있는 상태가 된다.
둘다 없는 경우도 있는데 그건 기본 스크립트인 Strat() Update() 같은 경우라고 생각하면 된다.
참고자료
데이터형 : https://greenchoco.tistory.com/96
연산자 : https://greenchoco.tistory.com/111
'유니티 C# > C#' 카테고리의 다른 글
C#기초 - 숫자, 문자열 사칙연산하기 (0) | 2023.04.09 |
---|---|
C#기초 - 문자열형 string 이란? (0) | 2023.04.09 |
C#기초 - 자주 사용하는 데이터형(자료형) 종류 (int, float, string, char, bool, double) (0) | 2023.04.08 |
C#기초 - Debug.Log("Console 창에 출력하는 문자열"); (0) | 2023.04.08 |
C#기초 - 인스턴스란? (예약어 new를 통한 인스턴스화) (0) | 2023.03.22 |
댓글