question

C#: Método sobrecarregado com argumentos inválidos?

Primeiro, um resumo muito curto da história por trás: Atualmente estou tendo aula de programação para jogos. A versão resumida é que é mais ou menos uma classe de estudo independente e estou aprendendo c# para que eu possa começar a usar o Unity 3D. Comprei um livro que usa o Visual Studio Express para criar alguns jogos de exemplo.

O problema:
Estou trabalhando através deste livro. Os exemplos do livro estão nos arquivos reais do CD que acompanham o livro. Ao olhar para o código que digitei e compará-lo com o código do autor, eles são 100% idênticos. Não consigo encontrar quaisquer erros ortográficos, pontuação deslocada/faltando/errada em qualquer lugar no meu código. No entanto, estou continuando a receber a seguinte mensagem de erro:

"A melhor correspondência de método sobrecarregado para 'StartingGrpahics.FastLoop.FastLoop(StartingGraphics.FastLoop.LoopCallback)' possui alguns argumentos inválidos."

Como somente dois métodos estão envolvidos com o erro, mostrarei abaixo da mensagem. Também, para ajudar, o objetivo deste código é usar o OpenGL para desenhar um triângulo multicolorido, girando na tela.

Form1() pública
{
_fastLoop = novo FastLoop(GameLoop);
InitializeComponent ();
_openGLControl.InitializeContexts();

se (_fullscreen)
{
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
}
}

void GameLoop(double elapsedTime)
{
Gl.glClearColor (0.0f, 0.0f, 0.0f, 1.0 f);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glRotated (10 elapsedTime, 0, 1, 0);
Gl.glBegin(Gl.GL_TRIANGLE_STRIP);
{
Gl.glColor3d (1.0, 0.0, 0.0);
Gl.glVertex3d (-0.5, 0, 0);
Gl.glColor3d (0.0, 1.0, 0.0);
Gl.glVertex3d (0,5, 0, 0);
Gl.glColor3d (0.0, 0.0, 1.0);
Gl.glVertex3d (0, 0,5, 0);
}

A linha que está causando o erro é a primeira linha após abrir a chaveta de Form1:
_fastLoop = novo FastLoop(GameLoop);
Há também uma segunda mensagem de erro que diz:

"Argument1: não é possível converter de 'grupo de método' para 'StatingGrpahics.FastLoop.LoopCallback'."

Se alguém tiver alguma ideia que poderia ser o problema, eu ficaria muito grato.
resposta Resposta

Primeiramente, é necessário verificar as versões do Visual Studio e do .NET Core. Os exemplos do livro e o ambiente no qual seu código c# está sendo executado devem estar alinhados. Certifique-se de estar usando o Visual Studio Express e a versão correta do .NET Core recomendados pelo livro.

Além disso, verifique se as bibliotecas e dependências necessárias para trabalhar com Unity 3D estão instaladas corretamente em seu ambiente de desenvolvimento.

O erro que você está recebendo refere-se a argumentos inválidos sendo passados para o método FastLoop. Analisando seu código, o problema pode estar na forma como você está passando o argumento para o método, o que resulta na mensagem de erro "A melhor correspondência método sobrecarregado para 'StartingGrpahics.FastLoop.FastLoop(StartingGraphics.FastLoop.LoopCallback)' tem alguns argumentos inválidos".

Agora vamos analisar a parte específica do código que está causando o erro:


void GameLoop(double elapsedTime)
{
    _fastLoop = new FastLoop(GameLoop);
}

O erro parece estar relacionado à forma como o método FastLoop está sendo invocado dentro do método GameLoop. Verifique se a assinatura do método FastLoop corresponde ao tipo de argumento que está sendo passado, que, no caso, é um método chamado GameLoop. Confirme se a assinatura do método FastLoop inclui o tipo LoopCallback conforme esperado.

Além disso, verifique se a instância de _fastLoop está sendo inicializada corretamente em outro lugar do código. Certifique-se de que todos os objetos e métodos estejam sendo usados de acordo com a definição dada pela classe FastLoop.

Em relação ao segundo erro que você mencionou que diz: "Argument1: não é possível converter de 'grupo de método' para 'StatingGrpahics.FastLoop.LoopCallback'", isso sugere que pode haver um problema de conversão entre tipos. Confira se os tipos de argumentos estão sendo tratados corretamente de acordo com as definições da classe LoopCallback.

Recomenda-se consultar a documentação oficial do Visual Studio e da Unity para verificar possíveis problemas conhecidos ou soluções específicas para a integração entre C# e Unity 3D.


ComentáriosComentários

Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved