[RESOLVIDO] Quando usar e para que serve o "NEW" ?
5 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Quando usar e para que serve o "NEW" ?
Eu sei que é uma pergunta talvez ("boba") kks ,mas tenho essa dúvida e não acho uma resposta correta ...uso sem saber exatamente quando se aplica ,tipo (new vector3 ...new transform...) ...
Um exemplo ,se eu uso uma variável : public Transform[] sla;
ai depois uso algo do tipo :
sla = new transform[transform.childcount];
O new serve (nesse caso) pra quê ?
Um exemplo ,se eu uso uma variável : public Transform[] sla;
ai depois uso algo do tipo :
sla = new transform[transform.childcount];
O new serve (nesse caso) pra quê ?
Edw223- Membro
- PONTOS : 2918
REPUTAÇÃO : 9
Idade : 27
Áreas de atuação : Programação em C#(C-Sharp)
Respeito as regras :
Re: [RESOLVIDO] Quando usar e para que serve o "NEW" ?
Nos meus conhecimentos "NEW", cria um nova instancia daquela variável, ou seja, uma variavel novinha pronto para ser usada.
Ex:
Em "List<>" Vc precisa colocar "new List<>()" Para não dar "Null reference exception"
quando dentro de um metodo vc declara uma variavel por exmplo uma int, quando vc n quer definir um valor de inicio como "int i = 10" vc coloca "int i = new Int()".
Ex:
Em "List<>" Vc precisa colocar "new List<>()" Para não dar "Null reference exception"
quando dentro de um metodo vc declara uma variavel por exmplo uma int, quando vc n quer definir um valor de inicio como "int i = 10" vc coloca "int i = new Int()".
Nesse caso eu imagino q vc estará dando um tamanho inicial a array "sla" dizendo q o tamanho dela vai ser a quantidade (no momento em que ela foi chamada) dos filhos do objeto.Edw223 escreveu:sla = new transform[transform.childcount];
BRGC- ProgramadorMaster
- PONTOS : 3055
REPUTAÇÃO : 59
Idade : 20
Áreas de atuação : C#, C++, C, Flutter
Respeito as regras :
Re: [RESOLVIDO] Quando usar e para que serve o "NEW" ?
Só p complementar, new é mais raro de se utilizar na Unity, Mas no .NET geralmente se usa com bastante frequência, algumas vezes é até obrigatório.
- Código:
//Pelo q eu sei a Unity meio q "faz" essa parte de não colocar o new
//não dar erro no console, soq nesse caso fictício o programa não compilaria
// Na Unity ->
bolinho deChocolate;
/*
Console------
Bolinho tem um sabor que lembra a minha infância.
*/
// Fora do jeito da Unity ->
bolinho deChocolate;
/*
Console------
Bolinho tem gosto de terra
*/
// Fora ->
bolinho deChocolate = new bolinho();
/*
Console------
Bolinho tem um sabor que lembra a minha infância.
*/
// Isso eh só um exemplinho ,0,
Re: [RESOLVIDO] Quando usar e para que serve o "NEW" ?
"new" é um operador que como ja foi dito antes cria uma variavel:
- Código:
//Caso tente criar o vector3 sem o "new" ele retorna "null reference exception" pois você só criou um "espaço" para um vector3 ficar
Vector3 Teste;
Teste.x = 0;
Teste.y = 8;
Teste.z = -1;
//Agora quando você usa o "new" você bota um vector3 novinho dentro do "espaço" que você criou
Vector3 Teste = new Vector3(0, 8, -1);
Re: [RESOLVIDO] Quando usar e para que serve o "NEW" ?
O operador "new" serve para você alocar um espaço na memória, normalmente para uma class.
Veja bem, quando você instancia uma nova classe, você sempre vai utilizar o operador "new" para chamar o construtor daquela classe e consequentemente alocar um espaço na memória para aquela instância, exemplo:
Daí quando você quiser criar instâncias(objetos) a partir dessa classe, você usa o operador "new":
Pessoa p1 = new Pessoa();
*A parte em negrito cria a instância dessa classe na memória, chamando o método construtor da classe, que nesse caso, é um construtor default(não foi definido, logo, o compilador cria um método construtor padrão pra vc.)
Agora temos como acessar as propriedades desse objeto, graças à instanciação:
Recomendo que dê uma lida no meu blog que ensina com mais detalhes sobre o conceito de classes e objetos de acordo com a POO: http://compilemosfacil.blogspot.com/2017/11/programacao-orientada-objetos-classes-e.html
E a documentação do C# sobre o operador 'new' e métodos construtores:
https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords/new-operator
https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/constructors
Mas em questão à Unity em específico, um dos pontos que eu gosto bastante nela é a facilidade de aprendizado, e isso se implica na abstração da orientação a objetos e conceitos de classeXobjeto que ela poderia ter já que usa o C# como linguagem.
Eu considero POO um assunto um pouco mais complexo a ser abordado com iniciantes e os desenvolvedores de games iniciantes que já terão de aprender a interface da Unity ainda teriam que lidar com o aprendizado de tal paradigma, e isso iria dificultar ainda mais as coisas, por isso, na Unity, todo esses conceitos de instanciar classes (como vimos acima) e POO foram abstraídos, e ao invés disso utilizamos funções da Unity para criação de objetos como o Instantiate, e para acesso de propriedades de objetos usamos o GetComponent, portanto, toda essa ideia de instancias e POO são minimamente abordadas/necessárias na programação com Unity.
Por isso, raramente usamos o "new" por lá, acho que realmente só quando queremos usar um Vector ou Quaternion, de resto, quase nunca.
Por esse motivo acho importante não aprender a programar apenas pela API da Unity, recomendo que tenha conhecimento por fora, com C# puro e outras bibliotecas da linguagem (como WindowsForms e LINQ) para você não ficar limitado apenas ao estilo de programação da engine; ser um programador mais completo e preparado, que entende diversos conceitos da linguagem fora do mundinho da Unity.
Veja bem, quando você instancia uma nova classe, você sempre vai utilizar o operador "new" para chamar o construtor daquela classe e consequentemente alocar um espaço na memória para aquela instância, exemplo:
- Código:
public class Pessoa{
public string nome;
public int idade;
public bool estaFeliz;
}
Daí quando você quiser criar instâncias(objetos) a partir dessa classe, você usa o operador "new":
Pessoa p1 = new Pessoa();
*A parte em negrito cria a instância dessa classe na memória, chamando o método construtor da classe, que nesse caso, é um construtor default(não foi definido, logo, o compilador cria um método construtor padrão pra vc.)
Agora temos como acessar as propriedades desse objeto, graças à instanciação:
- Código:
p1.nome = "Fulano";
p1.idade = 30;
p1.estaFeliz = false;
Recomendo que dê uma lida no meu blog que ensina com mais detalhes sobre o conceito de classes e objetos de acordo com a POO: http://compilemosfacil.blogspot.com/2017/11/programacao-orientada-objetos-classes-e.html
E a documentação do C# sobre o operador 'new' e métodos construtores:
https://docs.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords/new-operator
https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/constructors
Mas em questão à Unity em específico, um dos pontos que eu gosto bastante nela é a facilidade de aprendizado, e isso se implica na abstração da orientação a objetos e conceitos de classeXobjeto que ela poderia ter já que usa o C# como linguagem.
Eu considero POO um assunto um pouco mais complexo a ser abordado com iniciantes e os desenvolvedores de games iniciantes que já terão de aprender a interface da Unity ainda teriam que lidar com o aprendizado de tal paradigma, e isso iria dificultar ainda mais as coisas, por isso, na Unity, todo esses conceitos de instanciar classes (como vimos acima) e POO foram abstraídos, e ao invés disso utilizamos funções da Unity para criação de objetos como o Instantiate, e para acesso de propriedades de objetos usamos o GetComponent, portanto, toda essa ideia de instancias e POO são minimamente abordadas/necessárias na programação com Unity.
Por isso, raramente usamos o "new" por lá, acho que realmente só quando queremos usar um Vector ou Quaternion, de resto, quase nunca.
Por esse motivo acho importante não aprender a programar apenas pela API da Unity, recomendo que tenha conhecimento por fora, com C# puro e outras bibliotecas da linguagem (como WindowsForms e LINQ) para você não ficar limitado apenas ao estilo de programação da engine; ser um programador mais completo e preparado, que entende diversos conceitos da linguagem fora do mundinho da Unity.
Tópicos semelhantes
» [RESOLVIDO] Carro Indo Para Tras Quando Aperta *W* e Indo Para Frente Quando Aperta *S*
» Usar trigger para executar animação 1 vez (RESOLVIDO)
» [RESOLVIDO] Usar Regex para remover um ponto "."
» Pra que serve o [SerializeField] e por que usar ele?
» [Resolvido] Como usar o Multi Touch para movimentar um personagem ?
» Usar trigger para executar animação 1 vez (RESOLVIDO)
» [RESOLVIDO] Usar Regex para remover um ponto "."
» Pra que serve o [SerializeField] e por que usar ele?
» [Resolvido] Como usar o Multi Touch para movimentar um personagem ?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos