목표

  • 다른 오브젝트에 있는 컴포넌트를 받아와, 실행해보자.

사전 준비

  • GetComponent - 1에서 제작했던 BehaviorManager를 아래와 같이 변경한다.
  • 외부의 GameObject를 참조하기 위하여, PunchObject를 추가했다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BehaviorManager : MonoBehaviour
{
    public GameObject PunchObject;
    private PunchScale punchScale;

    // Start is called before the first frame update
    void Start()
    {
        if(PunchObject != null)
        {
            punchScale = PunchObject.GetComponent<PunchScale>();
            punchScale.Initialize();
        }
    }

    // Update is called once per frame
    void Update()
    {
        if(punchScale != null)
        {
            punchScale.ScaleUpdate();
        }
    }
}

Component 배치

  • BehaviorManager의 경우 Empty Object를 하나 생성하여, Component를 추가하였다.

  • Empty Object는 GameObject > Create Empty 메뉴에서 생성 가능하다.

  • 이후 Empty Object의 Name을 BehaviorManager로 변경하였다.

  • Empty Object는 좌표 정보만 가지는 Object이다.

  • PunchScale의 경우 Cube 오브젝트에 Component를 추가하였다.

  • Cube 오브젝트의 Name을 PunchScale로 변경하였다.

GameOejct 참조 시키기

  • BehaviorManager의 Inspector를 보면, public으로 선언한 GameObject의 값이 'None (Game Object)' 라고 표시되고 있다.
  • 이는 현재 참조하고 있는 Object가 없다는 뜻이다.

  • Hierarchy창에서 PunchScale을 누른 상태에서, 드래그&드롭을 사용하여 'None (Game Object)' 부분으로 끌어다 놓으면 GameObject를 연결할 수 있다.

  • 혹은 화면에서 강조된 동그라미를 눌러도 참조할 GameObject를 선택할 수 있다.

동작

  • 이렇게 연결 시킨 GameObject는 BehaviorManager Component의 PunchObject에 적용되어 동작한다.

마치며

  • 위와 같은 방법으로 GameObject를 연결 시켜주면, 저장하지 않고 씬을 종료하는 등의 이유로 설정 정보가 날아가는 경우가 허다하다.
  • 이러한 실수를 방지하기 위해서는 GameObject.Find, GameObject.FindWithTag 등을 사용하여, 로직에 의해 오브젝트를 찾아야 한다.

+ Recent posts