스크립트에서 프리팹을 기반으로 객체 만들기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
.
샘플 실행
생성되면 게임을 실행하고 버튼을 클릭합니다. 클릭할 때마다 개체가 생성되어야 합니다.
물론, 프리팹을 기반으로 생성되므로, 프리팹의 값이 변경된다면, 생성된 오브젝트는 그 값에 따라 생성될 것이다.