Então. Eu sei disso sobre as Instâncias, a questão não foi essa. O que aconteceu foi que eu criei uma Variável Global do tipo “NomesUsados” nos Atributos das outras classes e Instanciei esses Atributos nos Métodos “Awake()” dessas classes, justamente para que cada classe tenha uma Instância de “NomesUsados” em sí. Por exemplo:
class ClasseA: MonoBehaviour {
// Atributos
NomesUsados nomesUsados;
// Método que roda o 1º Frame na Unity
void Awake() {
// Instância da Classe **NomesUsados**
nomesUsados = new NomesUsados();
}
}
Outra Classe:
class ClasseB: MonoBehaviour {
// Atributos
NomesUsados nomesUsados;
// Método que roda o 1º Frame na Unity
void Awake() {
// Instância da Classe **NomesUsados**
nomesUsados = new NomesUsados();
}
}
O mesmo para as classes ClasseC, ClasseD, ClasseE… enfim. Cada uma tem uma Instância de “NomesUsados”. Até aí tudo bem.
Também fiz assim na Classe que guarda os Dados, o nome dela é “Jogador”. Essa classe não tem a classe base “MonoBehaviour”, consequentemente não tem “void Awake()”. O que ela tem é o seu Construtor Jogador().
Daí fiz na classe “Jogador” igual às demais classes, declarei “NomesUsados” nos Atributos e Instanciei “NomesUsados” no Construtor, mas não funcionou! Deu o erro “NullReferenceException”.
Então tirei a Instância do “Construtor” e coloquei nos “Atributos”, ficou assim:
class Jogador {
// Atributos
NomesUsados nomesUsados = new NomesUsados();
// Construtor
public Jogador(){}
// Métodos abaixo...
}
}
Funcionou. Mas fiquei com dúvidas, então criei este tópico. As dúvidas:
“Será que Instanciar nos Atributos é uma boa prática?”. “Se sim, será que isso pode gerar algum erro?”, “Se sim, quais?”…
Bom, a resposta que tive é que não é uma má prática. Mas fico com receio de que possa haver algum erro ou erros em algum momento
Daí o @pmlm falou “A tua classe deve ser inicializada num sítio e passada como parâmetro para as restantes classes que dela necessitem. ” e eu fiquei sem entender oq que quis dizer
Mas tá tranquilo. O @edpickler respondeu de forma clara.
Oq vcs dois, @pmlm e @d3z4013, acham sobre essa prática? Já fizeram? Se sim, tiveram algum erro? Se sim, qual ou quais? concordam com o @edpickler ou tem alguma objeção?