Quando crio o script C # ( Create -> C# Script
) por meio de Unity3d
ou o excluo de Unity3d
- Visual Studio
me mostra a janela de aviso.
É irritante.
Existe alguma maneira de forçar "ReloadAll" na solução Explorer sem a janela?
fonte
Quando crio o script C # ( Create -> C# Script
) por meio de Unity3d
ou o excluo de Unity3d
- Visual Studio
me mostra a janela de aviso.
É irritante.
Existe alguma maneira de forçar "ReloadAll" na solução Explorer sem a janela?
Então, o que temos.
Desenvolvedor do VS Tools for Unity team
disse que é um dos seus pedidos de recursos mais votados. E, surpreendentemente, não é trivial consertar, eles estão trabalhando nisso.
No entanto, encontrei algum script que pode ser usado. Encontrei-o na comunidade de unidades russas .
Muito obrigado ao DbIMok . Ele também postou este script ontem no forum.unity3d.com
Precisa criar o script C # nomeado como FileModDialogCloser.cs
e colocá-lo na Editor
pasta Aqui está o código:
using System;
using System.Runtime.InteropServices;
using UnityEditor;
[InitializeOnLoad]
public class FileModDialogCloser {
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
const string search = "File Modification Detected";
static IntPtr hwnd;
static void Check() {
hwnd = FindWindowByCaption(IntPtr.Zero, search);
if ((int)hwnd != 0) {
ShowWindow(hwnd, 5);
keybd_event(0x0D, 0, 0, 0);
}
}
static FileModDialogCloser() {
EditorApplication.update += Check;
}
}
Perguntando!
Ele funciona para criar e excluir scripts C # via Unity.
Como você pode ver, o código tem uma linha keybd_event(0x0D, 0, 0, 0);
. Isso é simular pressionando o Enterbotão. E isso significa recarregar a realização. se você precisar do ReloadAll , precisará fazer o seguinte:
keybd_event(0x09, 0, 0, 0);
keybd_event(0x0D, 0, 0, 0);
Isso é pressionando o Tabbotão e depois Enter.
FALHA PEQUENA: Ao criar / excluir script: confirme se a janela é aberta, é executada keybd_event
, a janela é fechada. Isso acontece muito rápido, então você não precisa clicar em nenhum botão. Mas você pode ver essa janela em alguns milissegundos de qualquer maneira. Eu acho que, por enquanto, não há melhor maneira de fazer isso.
ALÉM DISSO:
Você pode criar um script C # para projetos do Unity (não apenas um script C # simples) dentro Visual Studio
. Unity
adicionará o arquivo automaticamente sem janela de confirmação.
O primeiro método (simples) :
Se eu entendi direito: quando você está usando Visual Studio Tools for Unity
- essa ferramenta já está integrando modelos para a criação de scripts do Unity C # no VS
. Então, clique com o botão direito do mouse em Solution e escolhaAdd -> NewItem
. Você pode ver dois modelos para o Unity:
No entanto, esses modelos podem conter muitas informações desnecessárias, comentários por exemplo // Use this for initialization
, // Update is called once per frame
etc. E, como o @wondra nos comentários disse : você pode adicionar um modelo de item personalizado para scripts de unidade.
O segundo método :
Next
,Next
Finish
c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\My Exported Templates\
pasta, também no c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\Templates\ItemTemplates\
. Após a VS
reinicialização, você poderá ver este modelo na lista, assim como os VS Tools for Unity
modelos:Aqui está o explicação em vídeo .
Final feliz!
Você pode adicionar o novo script diretamente no Visual Studio no diretório desejado no Unity. Nesse caso, você não precisará recarregar.
Mas você terá que fazer outra coisa. O novo script no Visual Studio terá alguns espaços para nome que usaram o padrão. Você pode alterá-los ou removê-los. Você precisará adicionar using UnityEngine;
primeiro os privilégios relacionados ao Unity. Você terá que adicionar void Start()
ou void Update()
sozinho, se precisar. A nova classe deve se parecer com: