Когда я создаю C # script ( Create -> C# Script
) через Unity3d
или удаляю его из Unity3d
- Visual Studio
показывает мне окно с предупреждением.
это раздражает.
Есть ли способ заставить "ReloadAll" в обозревателе решений без окна?
источник
Когда я создаю C # script ( Create -> C# Script
) через Unity3d
или удаляю его из Unity3d
- Visual Studio
показывает мне окно с предупреждением.
это раздражает.
Есть ли способ заставить "ReloadAll" в обозревателе решений без окна?
Итак, что мы имеем.
Разработчик из VS Tools for Unity team
сказал, что это один из самых популярных голосовых запросов. И это на удивление нетривиально исправить, они работают над этим.
Однако я нашел какой-то сценарий, который можно использовать .. Я нашел его в сообществе русского единства .
Большое спасибо DbIMok . Также он выложил этот скрипт вчера на forum.unity3d.com
Нужно создать C # скрипт с именем as FileModDialogCloser.cs
и поместить его в Editor
папку. Вот код:
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;
}
}
Удивление!
Он работает для создания и удаления сценариев C # через Unity.
Как видите, в коде есть строка keybd_event(0x0D, 0, 0, 0);
. Это симуляция нажатия Enterкнопки. А это означает перезагрузку реализации. если вам нужен ReloadAll, то вы должны сделать так:
keybd_event(0x09, 0, 0, 0);
keybd_event(0x0D, 0, 0, 0);
Это нажатие Tabкнопки, а затем Enter.
НЕБОЛЬШОЙ ОТКАЗ: Когда вы создаете / удаляете скрипт: открывается окно подтверждения, запускается keybd_event
, окно закрывается. Это происходит очень быстро, поэтому вам не нужно нажимать какие-либо кнопки. Но вы все равно можете увидеть это окно за несколько миллисекунд. Я думаю, что пока нет лучшего способа сделать это.
ДОПОЛНИТЕЛЬНО:
Вы можете создать скрипт C # для проектов Unity (а не просто скрипт C #) внутри Visual Studio
. Unity
добавит файл автоматически без окна подтверждения.
Первый способ (просто) :
Если я правильно понял: когда вы используете Visual Studio Tools for Unity
- этот инструмент уже интегрирует шаблоны для создания сценариев Unity C # в VS
. Итак, щелкните правой кнопкой мыши на Решение и выберите Add -> NewItem
. Вы можете увидеть два шаблона для Unity:
Тем не менее, эти шаблоны можно содержит много ненужной информации, комментарии, например // Use this for initialization
, и // Update is called once per frame
т.д. И, как @wondra в комментариях сказал : вы можете добавить собственный шаблон пользовательского элемента для сценариев единства.
Второй метод :
Next
,Next
Finish
c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\My Exported Templates\
папку, также в c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\Templates\ItemTemplates\
. После VS
перезагрузки вы можете увидеть этот шаблон в списке так же, как VS Tools for Unity
шаблоны:Вот объяснение видео .
Счастливый конец!
Вы можете добавить новый скрипт прямо в Visual Studio в нужном вам каталоге в Unity. В этом случае вам не нужно будет перезагружать.
Но вам придется сделать что-то еще. Новый скрипт в Visual Studio будет иметь несколько пространств имен, которые используются по умолчанию. Вы можете изменить или удалить их. using UnityEngine;
Сначала вам нужно будет добавить привилегии, связанные с Unity. Вы должны будете добавить void Start()
или void Update()
самостоятельно, если вам нужно. Новый класс должен выглядеть так: