목표

  • Script의 개념과 생성 방법을 이해한다.

Component

  • Component는 특정 환경에서 동작하는 구성요소(부품)를 말한다.

  • 예를들어 물리 컴포넌트에는 물체의 질량 정보를 가지고 있는 Rigidbody, 충돌을 감지하는 Box Collider 등이 있다.

  • GameObject에 Rigidbody 컴포넌트를 추가하고, Play를 누르면 중력이 적용된 모습을 확인할 수 있다.

  • Script는 Unity에서 다른 컴포넌트와 마찬가지로 게임 오브젝트에 적용해 사용할 수 있다.

  • 인스펙터 창에서 Add Component를 이용해 컴포넌트를 추가하거나, 적용된 컴포넌트를 확인할 수 있다.

  • Component의 종류는 상단 메뉴에서 확일 할 수 있다.

Script

  • 유니티에서는 Script는 Component와 같은 의미로 사용할 수있다.

  • Script는 사용자가 생성할 수 있으며, 여러 종류가 있다. (현재 C#만 남아있음)

    • 생성 방법은 상단 메뉴의 Assets > Create 창에서 C#을 선택하거나, Project 창에서 오른쪽 버튼을 눌러 생성할 수 있다.

  • 스크립트는 입력, 캐릭터, 환경, 게임의 정보 등을 관리하는 동작을 정의할 수 있다.

예시

  • 다음 예제에서 R,G,B 키를 입력받아 큐브의 색상을 변경하는 예제를 만들어보자.
  • 근데 이 예제를 이해하려면, GetComponent, Input, Data Type 등 이후에 설명되는 지식이 필요하다.
  • 처음 스크립트를 작성하는 경우, Script에 정의한 입력에 따라, GameObject의 색깔이 변하게 할 수 있구나 정도를 이해하고 넘어가면 될 것 같다.

1.스크립트 생성

  • MaterialColorController라는 스크립트를 생성해보았다.

Tip

  • 혹시 Script의 이름을 변경하고 싶으면, Script 파일을 클릭하고 Enter를 누르면 Rename할 수 있다. (혹은 오른쪽 버튼을 누른다.)
  • Script 파일의 이름을 변경한 경우, 반드시 Source Code에서 ClassName도 동일한 명칭으로 변경해줘야 한다.

2. 소스코드

  • 기본적으로 랜더링되는 오브젝트에는 MeshRenderer가 붙어있다.
  • MeshRenderer의 materials에 보면, 현재 적용된 메터리얼을 확인할 수 있다.
  • Color의 맵핑은 Color 클래스를 참조한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 예제에서는 MaterialColorController라는 이름의 Script를 생성하였다.
public class MaterialColorController : MonoBehaviour
{
    private Color selectColor;
    private MeshRenderer meshRenderer;

    // Start는 최초에 1번만 호출되며, Update가 호출되기 전에 호출된다.
    void Start()
    {
        // GetComponent를 사용하여, GameObject에 포함되어 이쓴 MeshRenderer를 가져왔다.
        meshRenderer = this.GetComponent<MeshRenderer>();
    }

    // Update는 매 프레임이 업데이트 되는 시점에 호출된다.
    void Update()
    {    
        // 입력에는 Input를 사용하다.
        // 키의 상태는 GetKey(키가 눌리고 있을 때), GetKeyUp(키가 올라갔을 때), GetKeyDown(키를 눌렀을 때) 등으로 구별된다.
        // 키의 맵핑은 KeyCode를 사용하면 된다.
        if (Input.GetKeyDown(KeyCode.R))
        {
            // 기본적으로 랜더링되는 오브젝트에는 MeshRenderer가 붙어있다.
            // MeshRenderer의 materials에 보면, 현재 적용된 메터리얼을 확인할 수 있다.
            // Color의 맵핑은 Color 클래스를 참조한다.
            meshRenderer.material.color = Color.red;
        }
        if (Input.GetKeyDown(KeyCode.G))
        {
            meshRenderer.material.color = Color.green;
        }
        if (Input.GetKeyDown(KeyCode.B))
        {
            meshRenderer.material.color = Color.blue;
        }
    }
}

3. Add Component

  • 생성한 Cube를 선택하고, Inspector 창에서 Add Componet를 선택한다.

4. 실행해보기

  • Script가 Add된 상태에서 Play를 누른다.
  • 이후 GameScene에서 'R', 'G', 'B' 버튼을 눌러 색상 변경을 확인한다.

+ Recent posts