Responda
Deixe-me começar por responder sua pergunta diretamente:
funciona, posso ignorar o erro?
Você poderia . Você não deveria , porque significa que algo está errado. Você se acostumaria com esse erro, mas ele poderia "ocultar" ou causar outro erro.
Atualmente você tem uma mensagem de erro e ainda funciona corretamente. Por outro lado, ele não funciona e não tem (ou melhor: não reconhece) feedback por que, é muito pior!
Adendo
Para descobrir de onde isso vem, divida tudo isso em várias linhas.
string resourceLocation = "Prefabs/Items/" + someName;
Object prefab = Resources.Load(resourceLocation);
Object instance = Instantiate(prefab);
GameObject someObject = instance as GameObject;
Um erro informa apenas em que linha aconteceu. Se o erro ocorrer neste código, o número da linha informará mais sobre qual parte deu errado aqui. Além disso, aconselho o uso da versão genérica de Resources.Load, que na verdade nos daria um passo a menos para nos preocuparmos:
string resourceLocation = "Prefabs/Items/" + someName;
GameObject prefab = Resources.Load<GameObject>(resourceLocation);
GameObject someObject = Instantiate(prefab);
Descobrir o porquê
- Agora, um pouco da experiência do Unity nos diz que "O objeto que você deseja instanciar é nulo" é causado por
Instantiate().
- Então, isso significa que
prefabé null.
- Então isso significa
Resources.Loadretornos null.
- A documentação
Resources.Load diz " Retorna o ativo em pathse ele puder ser encontrado; caso contrário, retorna nulo " .
- Então isso significa que ele não encontra o caminho especificado (a string que eu chamei
resourceLocation)
Algo está errado com esse caminho; portanto, o primeiro passo óbvio seria ver o que realmente acaba sendo, com o Debug.Log. Como "tudo funciona como pretendido", é provável que exista alguma duplicação em que uma versão funcione e a outra dê esse erro.
Nesse caso, é uma boa ideia usar a versão de 2 parâmetros do Debug.Log Debug.Log(resourceLocation, gameObject);. Agora, se você clicar na mensagem de log no editor do Unity, ele selecionará de GameObjectonde veio.