일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 난수 값 맞추기 게임
- round()함수
- UnityHub
- C 언어
- ASCII CODE TABLE
- Axes
- 두 값 교체하기
- 소스코드 하이라이팅
- 반사 벡터
- 배열 사용X
- 키입력값 받기
- 두 수 크기 비교 함수
- Unity
- 유니티허브
- 2차원 배열
- 논리 게이트
- 문자 분류
- GetAxis()메서드
- 미리 컴파일된 헤더 사용안함
- C언어
- 기호 상수
- Logic Gates
- 유니티
- time.h
- 프로젝트 목록 제거
- 전처리기 정의
- 극장 예약 프로그램
- AWS Discovery Book
- scanf 오류
- 개인 정리
- Today
- Total
flrto
Unity에서의 클래스(2) 참조값 변경하기 본문
이전글)
2019/05/13 - [Unity/TIL] - Unity에서의 클래스(1) 클래스 정의 및 오브젝트 생성
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.Colle..
gcoding.tistory.com
※ 참조값 변경하기
전글에서 만든 Zoo 클래스에
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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= "냐옹!";
Animal jerry = new Animal();
jerry.name = "제리";
jerry.sound = "찎찎!";
jerry = tom;
jerry.name = "미키";
tom.PlaySound();
jerry.PlaySound();
}
}
|
jerry = tom;
jerry.name = "미키";
라는 코드 2줄을 추가 하였다.
자, 그러면 어떻게 될까?
전 글에서 tom 과 jerry는 Animal 타입으로 만들어 졌고 이것은 참조타입의 변수라고 하였다.
참조 타입의 변수는 오브젝트 그 자체가 아니고 new를 통해 만들어진 Animal을 가리키는 참조값을 저장하는 변수 라고
하였다.
즉 "jerry = tom" 는 tom의 값들(name, sound등)을 jerry로 덮어쓰는 결과가 되는것이 아니라
tom의 참조값을 jerry에 덮어 쓰게 되는것이고
jerry는 tom이 가리키고 있는 Animal 오브젝트를 가리키게 될것이다.
즉, jerry와 tom은 같은 Animal 오브젝트를 가리키게 될것이고 jerry.name을 통해 가리키고 있는 오브젝트에 접근하여
값을 수정하면 tom도 같이 가리키고 있는 Animal 오브젝트의 값을 수정하는 결과가 된다.
그러면 원래 jerry 변수가 가리키고 있던 Animal 오브젝트는 아무도 가리키지 않게 되고 이것은 C#의 가비지 컬렉터가 틈틈히 자동으로 파괴하여 정리한다.
※ 내용 요약
· 참조 타입의 변수는 오브젝트를 가리키는 참조값을 저장한다.
· 따라서 같은 참조 타입의 변수를 = 으로 전달 받으면 가리키는 오브젝트의 멤버 값들을 전달 받는게 아니라
가리키는 참조값을 전달 받아서 같은 오브젝트를 가리키도록 된다.
'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에서의 클래스(1) 클래스 정의 및 오브젝트 생성 (0) | 2019.05.13 |