재미있는 실감미디어

꿈꾸는대로 만들어집니다.

유니티기초[유니티 기초] 18_게임오브젝트제어하기2 - 참조 타입, 변수로 컴포넌트 사용하기

김혜영
2020-04-08
조회수 2148

유튜브 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페이지 분량에 해당합니다. ^^ 이 과정은 제가 공부하면서 정리하고, 첨삭했습니다. 도움이 되셨기를^^


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


1 0

매일 한알의 마늘처럼 하나의 미션 수행!

동굴뛰쳐나가지 않고 매일 하나의 마늘을 먹기!!!

게임이나 VR, AR 에 유니티가 언리얼과 같이 많이 사용된다고 듣긴 했지만 나와는 관계없는 프로그램 같았습니다. 그러다가 우연한 계기로 게임 디자인을 하면서 유니티에 관심이 생겼습니다. 


자바스크립트가 유니티와 연동된다고 하니, 유니티가 매력있게 다가왔습니다. 유니티까지 활용한다면 작업 영역의 확장 뿐만 아니라 재미있는 콘텐츠를 제작할수 있겠다는 가능성이 보였습니다.


내가 기획하고, 디자인하고, 개발까지 하여 하나의 게임 앱을 만들수가 있다니! 얼마나 달콤한 유혹인지 모릅니다. 물론 수 많은 산을 넘고 에러를 넘고, 오류를 넘어야 하는 것은 각오를 해야 합니다. 그럼에도 불구하고 무척 매력적 입니다. 인고의 시간을 지나면 나는 상상력을 구현할수 있는 하나의 툴을, 도구를 장착할수 있는 것입니다. 아!이!언!맨! 처럼 말이지요!!!


카카오프로젝트 100은 게으른 저를 동기부여해 줍니다. 당장 통장에 계좌가 찍히는 일은 열심히 하게 되지만, 새로운것을 공부할 때는 의지가 참 약해지고 용두사미가 됩니다. 그런 의미에서 카카오프로젝트 100은 100일동안 의지를 불태울수 있는 작은 동기가 됩니다. 카카오프로젝트 시즌1에서는 자바스크립트 기초를 정리했습니다. 

시즌 2에서는 새로운 공부를 도전합니다. 바로 유!니!티!


여러분 생각은 어떤가요?

top