스크립트에서 프리팹을 기반으로 객체 만들기Create an object based on a Prefab from a script

페이지 업데이트 :
페이지 생성 날짜 :

검증 환경

윈도우
  • 윈도우 11
Unity 에디터
  • 2021.3.3f1
입력 시스템 패키지
  • 1.3.0

이 팁의 전제 조건

이 팁에 대한 설명의 전제로 다음 설정이 미리 이루어졌습니다.

스크립트에서 프리팹을 기반으로 객체 만들기Create an object based on a Prefab in a script

이전 팁 에서는 프리팹에서 뷰로 오브젝트를 배치했지만, 이 경우에는 미리 정해진 수의 오브젝트를 배치하고 게임을 실행합니다. 그러나 일부 게임에서는 게임이 실행되는 동안 개체를 동적으로 추가하려고 할 수 있습니다. 이 경우 스크립트의 프리팹에서 추가해야 합니다.

샘플 생성

새 프로젝트를 배포한 후 단추를 배치합니다. 버튼을 클릭할 때마다 프리팹에서 객체를 생성해 봅시다.

프리팹을 만듭니다. 이것은 이전 팁과 동일한 절차입니다.

다음에 단추를 클릭할 때 개체를 추가하는 스크립트를 만듭니다. ButtonEvent 이름을 그대로 둡니다.

using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
  [SerializeField] private GameObject SpritePrefab;

  public void OnClick()
  {
    // Instantiate にプレハブを渡すとそれをもとに新しいオブジェクトを生成する
    var obj = Instantiate(SpritePrefab);

    // 配置位置はランダムに
    obj.transform.localPosition = new Vector3(Random.value * 6 - 3, Random.value * 6 - 3);
  }
}

GameObject 생성할 프리팹을 미리 설정할 수 있도록 필드를 정의합니다.

Instantiate 메서드를 전달하여 해당 개체를 기반으로 새 개체를 만들 GameObject 수 있습니다.

생성된 객체의 위치가 원점이 되고, 아무리 많은 객체가 생성되어도 객체가 겹쳐져 이해하기 어렵기 때문에 생성 후 위치가 랜덤하게 설정됩니다. 위치 조정 값은 샘플이기 때문에 적절합니다.

EventSystem에 스크립트를 첨부합니다.

GameObject 가 설정되어 있으므로 여기에 프리팹을 놓습니다.

단추를 클릭하면 메서드가 호출됩니다 OnClick .

샘플 실행

생성되면 게임을 실행하고 버튼을 클릭합니다. 클릭할 때마다 개체가 생성되어야 합니다.

물론, 프리팹을 기반으로 생성되므로, 프리팹의 값이 변경된다면, 생성된 오브젝트는 그 값에 따라 생성될 것이다.