유튜브 18 - https://youtu.be/2PzSMQeS2dw
* 오늘의 배울 내용
지난시간에 이어 계속합니다. ^^ 이번 강의는 17강과 연결되는 강의입니다.

변수에 할당된 참조값은 오브젝트를 가리키며, 아무도 카리키지 않는 오브젝트는 C#의 가비지 컬렉터가 틈틈히 자동으로 파괴하여 정리하게 됩니다. 참조타입이란 변수에 실체가 아니라 실체로 향하는 참조가 할당되고, 변수에 접근하면 참조를 통해 실체에 접근하며, 이러한 변수를 참조 타입이라고 합니다.
C#에서 클래스 타입의 변수는 참조 타입으로 동작합니다. 참조 타입은 한 사람을 여러개의 별명으로 부르는 것과 같이 오브젝트는 하나이지만 여러개의 참조 변수가 동시에 가리킬 수 있습니다. float, int, string 등의 C# 내장 변수는 참조로 동작하지 않으며, 이런 타입을 값 Value 타입이라고 합니다. 참조 타입 변수는 값(실체)으로 향하는 참조를 저장하고, 값 타입의 변수는 해당 변수 공간에 값 자체를 저장합니다. 쉽게 생각하면 값 타입의 변수는 값 자체를 저장하는 것, 참조 타입은 그 경로(오브젝트)를 가리키는 것이라고 생각하면 될 듯 합니다.

사례를 통하여 다시 한번 살펴봅니다. num2는 num1 을 참조합니다. 코드를 보고 이해가 되지 않는다면, 이 부분은 영상을 통해 좀 더 자세히 보시기 바랍니다. 이 코드를 통하여 참조 타입의 의미를 명확하게 이해할 수 있기를 바랍니다.

이번에는 변수로 컴포넌트를 사용하는 방법을 살펴보겠습니다. 지난 시간에 살짝 맛을 보았습니다. 3D Object - Cube 를 생성합니다.

Cube 오브젝트에 Rigidbody를 추가합니다.

Jumper 라는 이름으로 C# Script 를 생성합니다.

Jumper 스크립트는 다음의 내용으로 수정합니다. AddForce( ) 값을 변경항여 각 항목이 무엇을 의미하는지 확인합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Jumper : MonoBehaviour
{
public Rigidbody myRigidbody;
void Start()
{
myRigidbody.AddForce(0, 500, 0);
}
}

Cube 오브젝트에 Jumper 스크립트를 어태치하여 컴포넌트로 등록합니다. 플레이를 해보면 에러가 납니다. myRigidbody를 설정하지 않았기 때문에 참조 오류가 납니다.

Jumper 스크립트 컴포넌트를 보면 myRigidbody 항목이 있습니다. 이것을 큐브로 설정해 줍니다. Jumper 스크립트의 start() 메서드가 실행되면서 myRigidbody.AddForce(0, 500, 0); 가 실행되고, MyRigidbody에 연결된 Cube 게임 오브젝트의 리지드바디 컴포넌트를 통하여 AddForce( ) 메서드가 실행되는 것입니다. 이렇게 스크립트를 통하여 오브젝트를 제어할 수 있게 됩니다.

자, 오늘 배운 내용을 정리해 봅니다. 이제 이 정리 내용이 좀 이해되지 않나요? ^^ 프로그래밍 공부는 한번에 이해되지 않아도 그냥 계속하는 것이 중요하다고 생각합니다. 제 경험이기도 하고, 다른 분들의 경험이기도 합니다. 그냥… 하는 거지요. 뚝심있게.. 될 때까지^^ 그러다가 해결되는, 이해되는 희열을 맛보게 됩니다. 꿀같이 단 성취의 기쁨이지요^^ 그리고, 또 어려움이 찾아옵니다. 그런 패턴이 반복되는 듯 합니다. 그냥 쭈욱 공부하는 것! 그것이 왕도입니다. ^^
- 클래스는 묘사하려는 사물(오브젝트)을 정의하는 틀입니다.
- 클래스를 통해 대상에 관한 변수와 메서드를 정의합니다.
- new 연산자로 클래스로부터 오브젝트를 생성할 수 있습니다.
- 접근 제한자를 사용해 클래스의 멤버를 선택적으로 외부에 공개할 수 있습니다.
- C# 기본 내장 변수는 값 타입입니다.
- 값 타입의 변수는 변수가 값 자체를 저장합니다.
- 클래스 타입의 변수는 참조 타입니다.
- 참조 타입의 변수는 오브젝트로 향하는 참조를 저장합니다.
- 참조 타입에서는 여러 개의 변수가 하나의 오브젝트를 가리키는 것이 가능합니다.
- 컴포넌트는 클래스로 만들어져 있습니다.
- 씬에 있는 게임 오브젝트가 컴포넌트의 참조를 변수에 할당하면 코드 상에서 변수로 해당 게임 오브젝트와 컴포넌트를 사용할 수있습니다.

오늘 까지 정리한 내용은 레트로님의 책 213페이지 분량에 해당합니다. ^^ 이 과정은 제가 공부하면서 정리하고, 첨삭했습니다. 도움이 되셨기를^^

그럼 다음 시간에 만나요^^

유튜브 18 - https://youtu.be/2PzSMQeS2dw
* 오늘의 배울 내용
지난시간에 이어 계속합니다. ^^ 이번 강의는 17강과 연결되는 강의입니다.
변수에 할당된 참조값은 오브젝트를 가리키며, 아무도 카리키지 않는 오브젝트는 C#의 가비지 컬렉터가 틈틈히 자동으로 파괴하여 정리하게 됩니다. 참조타입이란 변수에 실체가 아니라 실체로 향하는 참조가 할당되고, 변수에 접근하면 참조를 통해 실체에 접근하며, 이러한 변수를 참조 타입이라고 합니다.
C#에서 클래스 타입의 변수는 참조 타입으로 동작합니다. 참조 타입은 한 사람을 여러개의 별명으로 부르는 것과 같이 오브젝트는 하나이지만 여러개의 참조 변수가 동시에 가리킬 수 있습니다. float, int, string 등의 C# 내장 변수는 참조로 동작하지 않으며, 이런 타입을 값 Value 타입이라고 합니다. 참조 타입 변수는 값(실체)으로 향하는 참조를 저장하고, 값 타입의 변수는 해당 변수 공간에 값 자체를 저장합니다. 쉽게 생각하면 값 타입의 변수는 값 자체를 저장하는 것, 참조 타입은 그 경로(오브젝트)를 가리키는 것이라고 생각하면 될 듯 합니다.
사례를 통하여 다시 한번 살펴봅니다. num2는 num1 을 참조합니다. 코드를 보고 이해가 되지 않는다면, 이 부분은 영상을 통해 좀 더 자세히 보시기 바랍니다. 이 코드를 통하여 참조 타입의 의미를 명확하게 이해할 수 있기를 바랍니다.
이번에는 변수로 컴포넌트를 사용하는 방법을 살펴보겠습니다. 지난 시간에 살짝 맛을 보았습니다. 3D Object - Cube 를 생성합니다.
Cube 오브젝트에 Rigidbody를 추가합니다.
Jumper 라는 이름으로 C# Script 를 생성합니다.
Jumper 스크립트는 다음의 내용으로 수정합니다. AddForce( ) 값을 변경항여 각 항목이 무엇을 의미하는지 확인합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Jumper : MonoBehaviour
{
public Rigidbody myRigidbody;
void Start()
{
myRigidbody.AddForce(0, 500, 0);
}
}
Cube 오브젝트에 Jumper 스크립트를 어태치하여 컴포넌트로 등록합니다. 플레이를 해보면 에러가 납니다. myRigidbody를 설정하지 않았기 때문에 참조 오류가 납니다.
Jumper 스크립트 컴포넌트를 보면 myRigidbody 항목이 있습니다. 이것을 큐브로 설정해 줍니다. Jumper 스크립트의 start() 메서드가 실행되면서 myRigidbody.AddForce(0, 500, 0); 가 실행되고, MyRigidbody에 연결된 Cube 게임 오브젝트의 리지드바디 컴포넌트를 통하여 AddForce( ) 메서드가 실행되는 것입니다. 이렇게 스크립트를 통하여 오브젝트를 제어할 수 있게 됩니다.
자, 오늘 배운 내용을 정리해 봅니다. 이제 이 정리 내용이 좀 이해되지 않나요? ^^ 프로그래밍 공부는 한번에 이해되지 않아도 그냥 계속하는 것이 중요하다고 생각합니다. 제 경험이기도 하고, 다른 분들의 경험이기도 합니다. 그냥… 하는 거지요. 뚝심있게.. 될 때까지^^ 그러다가 해결되는, 이해되는 희열을 맛보게 됩니다. 꿀같이 단 성취의 기쁨이지요^^ 그리고, 또 어려움이 찾아옵니다. 그런 패턴이 반복되는 듯 합니다. 그냥 쭈욱 공부하는 것! 그것이 왕도입니다. ^^
오늘 까지 정리한 내용은 레트로님의 책 213페이지 분량에 해당합니다. ^^ 이 과정은 제가 공부하면서 정리하고, 첨삭했습니다. 도움이 되셨기를^^
그럼 다음 시간에 만나요^^