Preenchimento automático não funciona no Visual studio


151

Eu tenho um pequeno problema com scripts. Quando estou escrevendo scripts C # para o Unity with Visual studio, parece que estou trabalhando no bloco de notas, não há preenchimento automático (correto?) E devo escrevê-lo muito lentamente.

Por favor, assista ao vídeo. No início é a situação normal (do tutorial), a segunda parte mostra o meu problema.

Vídeo com problema

Por exemplo, a transformclasse não mostra sugestão ou preenchimento automático.

Imagem com Problema:

insira a descrição da imagem aqui

Versão do Unity: 5.5.2f1
Visual studio 2015 O
Visual Studio Tools for Unity está instalado


1
translate.google.com :) Criando um vídeo e enviando-o para o YouTube por descrever o erro +1 xd
Timon Post

Ok, ll try... I have a Little problem with scripts. When Iestou escrevendo scripts em C # para o Unity with Visual studio, parece que estou trabalhando no bloco de notas, não há "dicas" (corretas?) E devo escrevê-lo bem devagar. Por favor, assista ao vídeo. No início é uma situação normal (do tutorial), a segunda parte é o meu problema.
CorbenDalas

1
Eu diria que você está perguntando sobre o 'preenchimento automático', não dicas de ferramentas.
Martijn Pieters

Qual versão do Visual Studio e qual versão do Unity?
Programador

Versão do Unity: 5.5.2f1 / Visual studio 2015 / O Visual Studio Tools for Unity está instalado
CorbenDalas 4/17/17

Respostas:


341

Não há preenchimento automático porque o script diz " Arquivos Diversos " em vez do nome do Projeto. Dê uma olhada na imagem abaixo que veio do vídeo em sua pergunta:

insira a descrição da imagem aqui

A mensagem " Arquivos diversos " pode ocorrer por vários motivos:

1. Pode acontecer quando você abre o arquivo Unity C # de outra pasta em vez de abri-lo no Unity Editor.

2. Isso também pode acontecer porque o Unity travou enquanto o Visual Studio ainda está aberto, corrompendo alguns arquivos.

3. Pode acontecer porque o Unity foi fechado e reaberto, mas não está mais conectado ao Visual Studio. Quando o Visual Studio é aberto, você obtém " Arquivos Diversos " e nenhum preenchimento automático.

4. Isso pode acontecer quando o Visual Studio Tools for unity não está instalado.

5. Quando você cria um script do Unity, abra-o rapidamente antes que o Unity termine de processá-lo ou antes que o material de animação do ícone redondo termine de animar.


Na maioria das vezes, reiniciar o Unity e o Visual Studio deve corrigir isso.

Não sei dizer quem está causando o problema, mas abordarei a solução mais provável para corrigir isso.

Corrija a parte 1 :

1. Baixe e instale as Ferramentas do Visual Studio para obter a unidade a partir deste link. Faça isso enquanto o Unity e o Visual Studio estão fechados.

2. No Unity Editor, vá para Editar -> Preferências ... -> Ferramentas externas . No menu suspenso Editor de scripts externos , altere para Visual Studio 2015 .

insira a descrição da imagem aqui


Corrija a parte 2 :

Se os arquivos C # recém-criados aparecerem como Diversos , siga as instruções abaixo:

1. No Visual Studio, vá em Ferramentas -> Opções ... -> Ferramentas para Unity -> Diversos . Em Mostrar ícone de conectividade , defina-o para truereiniciar o Visual Studio.

insira a descrição da imagem aqui

2. Quando você reiniciar, o ícone de conexão deverá estar disponível no Visual Studio. Clique nele e escolha a instância do Unity à qual se conectar. O ícone vermelho 'x' agora deve se transformar em um ícone de marca de seleção marrom. Agora, quando você cria um novo arquivo C # no Unity, ele deve abrir sem dizer Diversos .

insira a descrição da imagem aqui


Corrija a parte 3 :

Ainda não está consertado?

Reimporte o projeto e abra o Projeto C #.

1. Feche o Visual Studio.

2. No Unity, reimporte o projeto em Assets -> Reimport All .

insira a descrição da imagem aqui

3. Agora, abra o projeto no Visual Studio, indo em Assets -> Open C # Project . Isso recarregará o projeto e corrigirá possíveis problemas no arquivo da solução.

insira a descrição da imagem aqui


Corrija a Parte 4 :

Ainda não está consertado?

Corrija cada arquivo C # individualmente.

1. Clique no ícone Mostrar todos os arquivos .

insira a descrição da imagem aqui

2. Selecione o script que não é preenchido automaticamente, clique com o botão direito do mouse e selecione Incluir no projeto .

insira a descrição da imagem aqui


Corrija a parte 5 :

Ainda não está consertado?

O crédito vai para chrisvarnz por essa solução específica que parece ter funcionado para várias pessoas.

1. Feche o Visual Studio

2. Vá para o diretório do projeto e exclua todos os arquivos do Visual Studio gerados.

Estas são as extensões de arquivos a serem excluídas:

  • .csproj
  • .do utilizador
  • .sln

Exemplo:

Digamos que o nome do seu projeto se chame "Target Shoot" , estes são os arquivos a serem excluídos:

  • Target Shoot.csproj
  • Target Shoot.Editor.csproj
  • Target Shoot.Editor.csproj.user
  • Target Shoot.Player.csproj
  • Target Shoot.Player.csproj.user
  • Target Shoot.sln

Não apague mais nada.

3 clique .double no script novamente de Unidade que deve gerar novo arquivo Visual Studio, em seguida, abra o Visual Studio. Isso pode resolver seu problema.


Corrija a parte 6 :

Se não estiver funcionando, verifique se você está tendo este erro:

A tarefa "GetReferenceNearestTargetFrameworkTask" não foi encontrada

1. Instale o Nuget PackageManager a partir daqui .

2. Reinicie o Visual Visual.

Veja esta resposta para mais informações.


4
Obrigado pelo ponteiro de arquivos diversos! Fechar o VS, excluir os projetos do VS e sln e clicar duas vezes em um script no Unity (portanto, regenerar os arquivos do projeto e reabrir o VS) o corrigiram. Eu recomendo tentar isso antes do botão "reimportar todos", pois é almoço / noite para projetos não triviais.
chrisvarnz

2
Esse é um bom conselho. Espero que alguém que esteja lendo isso possa ver este comentário
Programador

Isso costuma ser causado pela criação de novos scripts ou movê-los para diferentes pastas no Unity. Sempre que reiniciar Unidade e VS não resolver isso, eu simoly também excluir os *.csproje *.slnarquivos e começar a Unidade de. Isso geralmente funciona
derHugo

1
A solução @chrisvarnz funcionou para mim depois de tentar todas essas outras sugestões.
gollumullog

1
@gollumullog Good. Desde que funcionou para várias pessoas, atualizei minha resposta para incluir também isso.
programador

38

Tente isso,

No Unity Editor, vá para Menu, clique em Editar -> Preferências -> Ferramentas externas -> Editor de scripts externos. Defina-o como Visual Studio (sua versão instalada do VS).

Agora, na barra de menus, vá em Editar -> Configurações do projeto -> Configurações do player -> Outras configurações -> Em Configuração -> Verifique o nível de compatibilidade da API -> Altere-o para a versão .Net instalada. No meu caso, defino-o como .Net 4.x

Agora, se o Visual Studio já estiver em execução, vá para o Visual Studio, ele solicitará o recarregamento do projeto. Recarregue o projeto. Verifique se funciona, se não fechar o Visual Studio. Agora abra o arquivo cs no Unity Editor e agora deve funcionar.


O mesmo para mim, obrigado! Tentei de tudo, mas apenas isso corrigiu.
Shadowmak

1
Esta é a resposta REAL. Isso precisa estar no topo!
Mark Purnell

Isso funcionou para mim também. Além disso, outra coisa que fiz no Unity 2020.2.0a13 foi desmarcar e verificar novamente a marca em Editar / Configurações do projeto / Player / Outras configurações: API de gráficos automáticos. Após a reinicialização do Visual Studio, o preenchimento automático estava de volta: D
Ant100

14

Eu encontrei uma outra maneira de corrigir esse problema de uma maneira mais conveniente:

  1. Selecione o arquivo quebrado no Solution Explorer.
  2. Abra suas propriedades.
  3. Alterne o campo "Build Action" de "Compile" para "None".
  4. Depois, volte para "Compilar".

Isso acabará com a sincronização entre o Unity e o Visual Studio.

A próxima vez que o Visual Studio recarregar o projeto, ele solicitará um aviso. Basta clicar em "Descartar".


7

Descarregue e recarregue o projeto, no Visual Studio:

  • clique com o botão direito do mouse em seu projeto no Solution Explorer
  • selecione Descarregar projeto
  • selecione Recarregar projeto

Fixo!

Encontrei esta solução para funcionar da melhor maneira (mais fácil), tendo encontrado o problema várias vezes.

Fonte: https://alexdunn.org/2017/04/26/xamarin-tips-fixing-the-highlighting-drop-in-your-xamarin-android-projects/


Obrigado pela ajuda! Isso funcionou, mas sinto que estamos de volta nos anos 90 e precisamos reiniciar o Windows, só que desta vez no VS 2017. #
user3053247

4
  1. Selecionar projeto no Visual Studio
  2. Clique no botão "Atualizar"

insira a descrição da imagem aqui


1
Uau! Nada mais me ajudou; Reinstale o VS, mesmo reinstalando o Unity para reinstalar o VS, excluindo arquivos .sln e .cjsproj para que eles sejam regenerados. nada ajudou .. mas finalmente um simples clique no explorador solução para mostrar pastas parecia fazê-lo: o
antont

3

Se você fez todas as etapas acima e ainda não está funcionando, tente o seguinte: Nota: você deve ter atualizado o VS. Captura de tela do visual studio

Vá para Unidade> editar> preferência> Ferramentas externas> editor de script externo. Captura de tela do Unity De alguma forma, para mim, não selecionei o "visual studio" para o editor de scripts externo e não estava funcionando. Assim que eu selecionei isso e cliquei duas vezes no arquivo c # da unidade, ele começou a funcionar.

Espero que ajude você também.


2

Encontrei os mesmos problemas hoje usando o Visual Studio 2017 15.4.5 com o Unity 2017.

Consegui corrigir o problema clicando com o botão direito do mouse no projeto no Visual Studio e alterando a estrutura de destino de 3.5 para 4.5.

Espero que isso ajude outras pessoas em um cenário semelhante.


2

Duas opções alternativas:

Fix 1

@singleton me apontou nessa direção. Em vez de alterar o destino no Visual Studio, você deve alterá-lo no Unity, pois o projeto é gerado automaticamente.

Primeiro, exclua os arquivos do Visual Studio gerados automaticamente: .csproj .user .sln

Em seguida, no Unity, vá para PlayerSettings e em 'Other Settings' altere a 'Scripting Runtime Version' de Stable 3.5 para Experimental 4.6.

No entanto, isso não foi corrigido para mim.

Fix 2

Notei que todas as referências ao código relacionado ao Unity estavam marcadas com um aviso amarelo. Verifique seus logs de erros e veja se é esse o caso. Em particular, veja se você obtém o seguinte erro: getreferenceNearestTargetframeworkTask

Em caso afirmativo, tente: Inicie o Visual Studio Installer novamente.

Nas Ferramentas de compilação 2017, clique em Modificar,

Verifique se "Destinos de Nuget e tarefas de criação" estão marcados. Isso deve ficar marcado se você clicar no desenvolvimento da Plataforma Universal do Windows.


1

Encontrei minha solução criando o arquivo .cs no próprio visual studio, em vez do editor de unidade

  • clique com o botão direito do mouse na pasta do projeto no Solution Explorer
  • adicionar> novo item
  • digite "unidade" no campo de pesquisa no canto superior direito
  • selecione "CSharp MonoBehaviour"
  • nomeie seu script na parte inferior e clique em Adicionar

1
E se você já tiver criado os scripts, mas, de repente, esse problema surgir, você excluirá todos os scripts e os criará novamente no Visual Studio?
Programmer

@ Programador bem, eu usaria sua solução da Parte 4 para corrigir o script já com erro, mas eu sempre uso o visual studio para criar um novo script, porque nenhuma solução interrompeu o novo script de obter erro, a menos que eu criei o arquivo do visual studio
Fredy Rommy Sianturi

1

No meu caso, a versão correta do .net não foi instalada no meu PC. Eu instalo o .net 3.5 no meu pc e funcionou para mim.


Sua resposta me deu a idéia de alterar o nível de compatibilidade da API nas configurações do Unity Player de .Net 2.0 para .Net 4.x. E, em seguida, recarregue o projeto no Visual Studio. Agora tudo funciona bem.
Juned Khan Momin

1

O problema que enfrentei foi que o projeto C # estava direcionado para um .NET Framework diferente (4.7.2), enquanto o projeto Unity tinha um destino diferente (.NET 3.5).

Corrigi isso alterando o alvo no Unity,

Arquivo -> Configurações de compilação -> Configurações do player -> Outras configurações -> Nível de compatibilidade da API: defina-o para a versão .NET que você já instalou (verifique sua versão do .NET aqui ). No meu caso, era 4.x

Depois disso, o Visual Studio funcionou perfeitamente e a correção automática também foi corrigida.


Isso funcionou para mim. Alterei meu nível de compatibilidade da API para .Net 4.xe, em seguida, o Visual Studio pediu para recarregar o projeto. Eu recarreguei o projeto. Então fechei o Visual Studio, o arquivo cs aberto do Unity Editor e agora tudo funciona bem.
Juned Khan Momin

1

Tente pressionar Ctrl + Alt + Space(que alterna entre os modos sugestão e conclusão padrão)


0

Para Windows ou macOS:

Faça o download / instale o IDE do Visual Studio (com Unity Tools)

Ao instalar, certifique-se de incluir a instalação do

Desenvolvimento de jogos com Unity

insira a descrição da imagem aqui

Em seguida, usando o Unity (você pode clicar duas vezes em um dos arquivos C #), abra um novo projeto C # e o IDE do Visual Studio deve abrir com sua nova estrutura de projeto.

insira a descrição da imagem aqui

A partir daí, você poderá ver o que está procurando.

Por exemplo:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Para Linux (sugestão):

Experimente o Monodevelop - Informações Adicionais , fornece dicas / conclusão de código.


0

Resolvi instalar a mesma versão do .NET on WIN que foi configurada no meu projeto do Unity. (Configurações do player)


0

Meu preenchimento automático também não funcionou porque o Visual Studio Tools for Unity não estava instalado. Portanto, depois de instalar isso, exclua os arquivos do Visual Studio gerados automaticamente. Outros disseram que você abre o arquivo novamente e o problema está resolvido, mas não está.

O truque é: em vez de clicar duas vezes no arquivo, você precisa abrir o arquivo C # no Unity clicando com o botão direito do mouse e, em seguida, em "Abrir projeto C #".


0

Nenhuma das soluções acima funcionou para mim. No entanto, abri o arquivo ProjectName.CSPROJ e adicionei manualmente o novo arquivo, que funcionou como um encanto


0
  • Vá para Opções no menu Ferramentas e selecione Documentos no nó Ambiente. (Se Documentos não aparecer na lista, selecione Mostrar todas as configurações na caixa de diálogo Opções.)
  • Marque "Arquivos diversos no Solution Explorer" e clique em OK. (Esta opção exibe o nó "Arquivos diversos" no Gerenciador de Soluções. Arquivos diversos são arquivos que não estão associados a um projeto ou solução, mas podem aparecer no Gerenciador de Soluções para sua conveniência, se você marcar esta opção.
  • Localize seu arquivo no Gerenciador de Soluções em "Arquivos Diversos". Em seguida, arraste e solte seu arquivo para onde ele deve pertencer e pronto! Isso copiará o arquivo para onde você o solta. Agora você pode excluir com segurança o arquivo mais antigo na pasta Arquivos diversos, se desejar fazê-lo

Créditos: https://stackoverflow.com/a/47662523/10471480


Caso a pasta Scripts não esteja visível:

  • Clique em "Mostrar todos os arquivos" no Solution Explorer
  • Localize a pasta Scripts.
  • Clique com o botão direito do mouse em Scripts e selecione "Incluir no projeto"

0

O que funcionou foi que eu copiei todo o código dentro da classe quebrada e removi esse arquivo. Abri um arquivo vazio e colei.

Resultado : os belos destaques da sintaxe voltaram!


0

Lembre-se de que, se você estiver usando a ferramenta ReSharper, ela substituirá o IntelliSense e mostrará que é sua. Para mudar isso, no VS, vá para Extensões -> ReSharper -> Opções -> IntelliSense -> Geral e escolha Visual Studio e não ReSharper.


0

Antes de reiniciar e / ou reinstalar o VS, primeiro tente abrir qualquer outro projeto para verificar se o Intellisence funciona, se funcionar, e o problema provavelmente está no seu projeto atual. Primeiro, a vítima mais provável seriam os pacotes NUGET com atualizações pendentes. Para corrigir isso,

  1. Clique com o botão direito do mouse nas referências
  2. Prossiga para gerenciar pacotes NUGET em pacotes NUGET
  3. prossiga para atualizações Instale atualizações e verifique novamente o Intellisence

0

Eu tentei tudo isso, mas acabei descobrindo que precisava clicar com o botão direito do mouse na solução no Gerenciador de Soluções, adicionar itens existentes e encontrar o arquivo de montagem C # no Windows Explorer. Parece haver um bilhão de problemas diferentes que causam esse erro, e essa é provavelmente a solução mais simples. Se você clicar duas vezes no seu script a partir da unidade, ele não parecerá arrastar a montagem.


0

um dos métodos acima foi trabalhado para mim e eu apenas encontrei uma solução para esse problema:
1. Primeiro, vá para o diretório do projeto e exclua o .slnarquivo
2. Segundo, vá para a unidade e clique duas vezes em seu script. Em seguida, o Visual Studio será aberto com um erro, insira a descrição da imagem aqui

  1. Em seguida, clique em ok e feche o editor do Visual Studio.
  2. Por fim, desligue o Windows Defender e vá para o diretório do projeto e haverá um .csprojarquivo. Basta clicar duas vezes e abrir isso no seu editor do Visual Studio, abrir a pasta de scripts dentro da pasta de ativos, abrir os scripts e o preenchimento automático funcionará perfeitamente.

0

Atualização 2020 com a Comunidade do Visual Studio 2019 e o Unity 2019.3:

1) Abra o Visual Studio Installer como administrador, selecione para modificar sua instalação atual e adicione "Desenvolvimento de jogos para Unity"

2) Se você adicionar um novo script c # no Unity agora e o abrir (automaticamente) com o Visual Studio, ele não será descrito como "Diversos" na parte superior da janela, mas com "Assembly-CSharp", e o preenchimento automático funcionará.


0

Outra correção possível:

  1. Na janela do projeto, clique na pasta Assets
  2. Clique com o botão direito e Criar -> Script C #
  3. Clique duas vezes e aguarde.

Por alguma razão, este trabalho.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.