Inflearn Community Q&A
Instantiate() 활용 예제에서 11:30의 예제 질문이요
Written on
·
234
0
public class ObjectSpawner : MonoBehaviour
{
[SerializeField] private int objectSpawnCount = 30;
// Start is called before the first frame update
[SerializeField] private GameObject[] prefabArray;
[SerializeField] private Transform[] spawnPointArray;
private int currentObjectCount = 0;
private float objectSpawnTime = 0.0f;
void Start()
{
}
// Update is called once per frame
void Update()
{
if(currentObjectCount + 1 > objectSpawnCount)
{
return;
}
objectSpawnTime += Time.deltaTime;
if(objectSpawnTime >= 0.5f)
{
int prefabIndex = Random.Range(0, prefabArray.Length);
int spawnIndex = Random.Range(0, spawnPointArray.Length);
Vector3 position = spawnPointArray[spawnIndex].position;
GameObject clone = Instantiate(prefabArray[prefabIndex], position, Quaternion.identity);
Vector3 moveDirection = (spawnIndex == 0 ? Vector3.right : Vector3.left);
clone.GetComponent<Movement2D>().Setup(moveDirection);
currentObjectCount++;
objectSpawnTime = 0.0f;
}
}
}
를 연습해보았는데 37번째줄 clone.GetComponent<Movement2D>().Setup(moveDirection);의 Setup에 빨간줄이 그어지더니 오류목록에서['Movement2D'에는 'Setup'에 대한 정의가 포함되어 있지 않고, 'Movement2D' 형식의 첫 번째 인수를 허용하는 액세스 가능한 확장 메서드 'Setup'이(가) 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.]라는 메세지가 나오네요 답변부탁드립니다.
Answer 1
0
NullReference 에러는 클래스의 인스턴스(변수)가 비어있을 때 발생합니다.
clone.GetComponent<Movement2D>.. 이 부분에서 뜨기 때문에 게임오브젝트에 Movement2D 컴포넌트가 안들어가 있을 확률이 높습니다.
Movement2D 컴포넌트를 추가하세요






감사합니다. 다시 연습해볼게요