일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- UnityHub
- 논리 게이트
- 반사 벡터
- 소스코드 하이라이팅
- 난수 값 맞추기 게임
- 유니티
- scanf 오류
- Axes
- 키입력값 받기
- 프로젝트 목록 제거
- ASCII CODE TABLE
- 두 수 크기 비교 함수
- round()함수
- Logic Gates
- 문자 분류
- 기호 상수
- GetAxis()메서드
- time.h
- 유니티허브
- Unity
- 전처리기 정의
- 배열 사용X
- 개인 정리
- AWS Discovery Book
- 미리 컴파일된 헤더 사용안함
- C언어
- C 언어
- 극장 예약 프로그램
- 2차원 배열
- 두 값 교체하기
- Today
- Total
flrto
Unity에서의 클래스(1) 클래스 정의 및 오브젝트 생성 본문
Unity는 C#을 바탕으로 코딩을 한다.
Unity에서의 클래스 예제는 다음과 같다.
가령 Animal 클래스를 만든다고 하면
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//Animal.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Animal {
public string name;
public string sound;
public void PlaySound()
{
Debug.Log(name + " : " + sound);
}
}
|
다음과 같이 Animal 클래스를 만들었다.
현재 Animal 클래스는 이름(name)과 소리(sound)를 가지고 있고
PlaySound()라는 기능을 가지고 있다.
자, 이제 클래스라는 틀을 만들었으니 실제로 사용하려면 클래스를 이용해 인스턴스 즉 오브젝트를 만들어야한다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
//Zoo.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Zoo : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Animal tom = new Animal();
tom.name = "톰";
tom.sound = "냐옹!";
tom.PlaySound();
}
// Update is called once per frame
void Update()
{
}
}
|
일단 위의 Animal 클래스에서 딱히 생성자에 대한 정의를 하지 않았기에 기본 생성자가 암시적으로 생성된다.
자, Animal 클래스 타입의 tom 을 생성하고 new 연산자를 통해 생성한 Animal 오브젝트를 Animal 타입의 변수인
tom 에 할당 하였다.
즉, tom은 방금 생성한 Animal 오브젝트를 가리키게 된다.
Animal 클래스에서 접근 제한자를 public 으로 해놓았기에 점(.) 연산자로 변수와 메서드에 접근 가능하다.
※ 여기서 간단하게 접근 지정자 복습
public |
클래스 외부에서 멤버에 접근 가능 |
private |
클래스 내부에서만 멤버에 접근 가능 |
protected |
클래스 내부와 파생 클래스에서만 접근 가능 |
★ 클래스로 만든 변수는 참조(reference)타입이다.
int, string 등의 '원시적인 타입'의 변수들은 new 키워드를 사용하지 않고 변수에 곧바로 값을 할당한다.
int year = 1993;
string birthday = "당신이 태어난 연도";
하지만 클래스로 만든 변수는
Animal tom = new Animal();
와 같이 Animal 오브젝트를 생성하고 tom에 할당하였다.
★ 참조 타입 변수는 그 자체로 실체화된 오브젝트가 아니다.
따라서 new를 사용해 오브젝트를 개별적으로 생성해야 한다.
따라서 예제의 Animal 타입의 변수 tom은 생성된 Animal 오브젝트 그 자체가 아니다.
1)tom은 생성된 Animal 오브젝트를 '가리키는 참조값을 저장하는 변수'이다.
2)tom에 할당된 값은 new로 생성된 Animal 오브젝트가 아니라 생성된 Animal 오브젝트로 향하는 참조값이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
//Zoo.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Zoo : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Animal tom = new Animal();
Animal jerry = new Animal();
tom.name = "톰";
tom.sound = "냐옹!";
jerry.name = "제리";
jerry.sound = "찍찍";
tom.PlaySound();
jerry.PlaySound();
}
// Update is called once per frame
void Update()
{
}
}
|
Animal 클래스를 이용해 또 다른 jerry 오브젝트를 만들었다.
Unity Editor 에서 Create Empty로 GameObject를 만들고 Zoo.cs 스크립트 파일을 드래그 해서 GameObject에 넣는다.
그 뒤 Unity Editor에서 실행결과는 다음과 같다.
tom과 jerry는 자신만의 값이 할당된 name과 sound를 가지고 있다.
※ 내용 요약
· 클래스는 오브젝트를 생성하는 틀이다.
· new를 사용하여 클래스로부터 오브젝트를 생성한다.
· 한 클래스로 여러 오브젝트를 만들 수 있다.
· 클래스로 만든 변수는 참조(reference)타입이다.
'Unity > TIL' 카테고리의 다른 글
Unity에서의 키입력으로 오브젝트를 이동시키는 방법 (0) | 2019.05.17 |
---|---|
GetComponent<>(); 의 제네릭(Generic) 기법 (0) | 2019.05.17 |
Unity에서 gameObject 와 GameObject의 차이 (0) | 2019.05.17 |
Unity에서 사용 할 변수타입들 (0) | 2019.05.13 |
Unity에서의 클래스(2) 참조값 변경하기 (0) | 2019.05.13 |