대답
질문에 직접 대답하여 시작하겠습니다.
작동하지만 오류를 무시할 수 있습니까?
당신 은 할 수 있습니다. 당신이 해야 뭔가가 잘못 가고 의미하기 때문에,하지. 이 오류에 익숙해 지지만 "숨기거나"다른 오류가 발생할 수 있습니다.
현재 오류 메시지가 있으며 여전히 올바르게 작동합니다. 다른 방법의 주위에, 그것은 하지 피드백 왜 훨씬 더 나쁘다 : 작업하고 있지 않는 (인식되지 않거나 오히려)!
조언
이것이 어디에서 왔는지 알아 내려면이 모든 것을 여러 줄로 나눕니다.
string resourceLocation = "Prefabs/Items/" + someName;
Object prefab = Resources.Load(resourceLocation);
Object instance = Instantiate(prefab);
GameObject someObject = instance as GameObject;
오류는 발생한 라인 만 알려줍니다. 이 코드에서 오류가 발생하면 줄 번호에 어떤 부분이 잘못되었는지 알려줍니다. 또한의 일반 버전을 사용 Resources.Load
하는 것이 좋습니다. 실제로 걱정할 필요가 없습니다.
string resourceLocation = "Prefabs/Items/" + someName;
GameObject prefab = Resources.Load<GameObject>(resourceLocation);
GameObject someObject = Instantiate(prefab);
이유 찾기
- 이제 약간의 Unity 경험에 따르면 "인스턴스화하려는 객체가 null입니다"는
Instantiate()
.
- 그래서, 그 수단
prefab
입니다null
.
- 그래서 그것은
Resources.Load
반환 을 의미 합니다null
.
- 에 대한 문서는
Resources.Load
"말한다 반환의 자산 path
은 발견 할 수있는 경우가 그렇지 않은 경우는 null를 돌려줍니다. "
- 그 수단 그래서 (I라는 문자열 지정된 경로를 찾을 수 없습니다
resourceLocation
)
이 경로에 문제가 있으므로 확실한 첫 번째 단계는 Debug.Log를 사용하여 실제로 무엇이 끝나는 지 확인하는 것입니다. "모든 것이 의도 한대로 작동 함"으로, 한 버전이 작동하는 곳에서 일부 복제가 진행되고 다른 버전에서이 오류가 발생할 가능성이 있습니다.
이 경우 Debug.Log의 2 매개 변수 버전을 사용하는 것이 좋습니다 Debug.Log(resourceLocation, gameObject);
. 이제 Unity 에디터에서 로그 메시지를 클릭 GameObject
하면 출처를 선택합니다 .