Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Diferença entra buscar um objeto pelo FindObjectOfType e passa-lo pelo SerializeField

Tenha uma dúvida entre buscar um objeto pelo FindObjectOfType ou passa-lo pelo SerializeField. Diversas vezes no curso, as vezes buscamos objetos pelo método FindObjectOfType e outras apenas criamos uma variável e serializamos ela e arrastamos o objeto para a caixa no editor da unity. Um exemplo é na classe diretor em passamos a imagem de game over pelo SerializeField mas buscamos o avião pelo FindObjectOfType. Eu não poderia buscar os dois pelo FindObjectOfType ou passar os dois no SerializeField? Há alguma diferença entre os dois modos? E se há, quando saberei quando usar uma ou outra?

1 resposta
solução!

Bom dia Lucas, tudo bom?

Sim, existem diferenças entre esses métodos sim. Se pensarmos em relação a performance o método FindObjectOfType é muito mais lento comparado com a atribuição via SerializeField. Isso porque, o método FindObjectOfType tem que percorrer a cena toda até encontrar o tipo de objeto que queremos, enquanto que o Serialized Já sabe em tempo de compilação qual objeto ele se referência.

Outra diferença é que para atribuirmos objetos via serialização esses objeto já tem de estar criados durante a fase de edição da cena e nem sempre isso é possível. Se quiséssemos por algum motivo buscar elementos do tipo "Obstáculo" seriamos obrigados a buscas isso em Runtime já que esses objetos são criados dinamicamente, nesse caso o FindObjectOfType é o mais indicado.

Outra opção que podemos fazer é usar o FindObjectOfType no lugar do SerializedField para deixar o inspector do componente um pouco mais limpo. Mas nesses casos é bem possível que seu componente esteja com mais de uma responsabilidade e vc possa separar em em 2 ou mais para seguir os princípios de SOLID.