Reload VS soution Explorer erzwingen, wenn neues c # -Skript über Unity3d hinzugefügt wird?

8

Wenn ich erstellen C # Script ( Create -> C# Scriptvia) Unity3d oder löschen Sie es aus Unity3d- Visual Studiozeigt mir das Warnfenster.

Geben Sie hier die Bildbeschreibung ein

es ist nervig.

Gibt es eine Möglichkeit, "ReloadAll" im Projektmappen-Explorer ohne Fenster zu erzwingen?

Alexey Shimansky
quelle

Antworten:

3

Also, was wir haben.

Entwickler von der VS Tools for Unity team sagte, dass es eine ihrer am meisten abgestimmten Feature-Anfragen ist. Und es ist überraschenderweise nicht trivial zu reparieren, sie arbeiten daran.

Ich habe jedoch ein Skript gefunden, das verwendet werden kann. Ich habe es in der russischen Einheitsgemeinschaft gefunden .

Vielen Dank an DbIMok . Außerdem hat er dieses Skript gestern auf forum.unity3d.com gepostet

Sie müssen ein C # -Skript mit dem Namen erstellen FileModDialogCloser.csund es in den EditorOrdner legen . Hier ist der Code:

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;
        }
}

Ich frage mich!

Es funktioniert zum Erstellen und Löschen von C # -Skripten über Unity.

Wie Sie sehen können, hat der Code eine Zeile keybd_event(0x0D, 0, 0, 0);. Dies simuliert das Drücken einer EnterTaste. Und das bedeutet Reload- Realisierung. Wenn Sie ReloadAll benötigen, müssen Sie Folgendes tun:

keybd_event(0x09, 0, 0, 0);
keybd_event(0x0D, 0, 0, 0);

Dies ist das Drücken der TabTaste und dann Enter.

KLEINER FEHLER: Wenn Sie ein Skript erstellen / löschen: Bestätigen, dass das Fenster geöffnet, ausgeführt keybd_eventund geschlossen wird. Es geht sehr schnell, so dass Sie keine Schaltfläche anklicken müssen. Aber Sie können dieses Fenster trotzdem in wenigen Millisekunden sehen. Ich denke, im Moment gibt es keinen besseren Weg, das zu tun.


ZUSÄTZLICH:

Sie können darin ein C # -Skript für Unity-Projekte erstellen (nicht nur ein einfaches C # -Skript) Visual Studio. Unityfügt die Datei automatisch ohne Bestätigungsfenster hinzu.

Die erste Methode (einfach) :

Wenn ich es richtig verstanden habe: Wenn Sie verwenden Visual Studio Tools for Unity, integriert dieses Tool bereits Vorlagen zum Erstellen von Unity C # -Skripten in das VS. Klicken Sie also mit der rechten Maustaste auf Lösung und wählen Sie Add -> NewItem. Sie können zwei Vorlagen für Unity sehen:

введите сюда описание изображения

введите сюда описание изображения

Allerdings können diese Vorlagen eine Menge unnötiger Informationen enthält, Kommentare zum Beispiel // Use this for initialization, // Update is called once per frameusw. Und wie @wondra in den Kommentaren gesagt : Sie eigene benutzerdefinierte Elementvorlage für die Einheit Skripte hinzufügen.

Die zweite Methode :

  • Datei von überall erstellen.

введите сюда описание изображения

  • Hinzufügen, was Sie wollen oder löschen Sie etw. Oder Beispiel:

введите сюда описание изображения

  • Klicken File -> ExportTemplate

    введите сюда описание изображения

  • Wählen ItemTemlate

введите сюда описание изображения

  • Überprüfen Sie Ihre Vorlage in der Liste

введите сюда описание изображения

  • Klicken Sie auf Next,Next
  • Legen Sie den Namen und die Beschreibung für die Vorlage fest und klicken Sie auf Finish

введите сюда описание изображения

  • Die Vorlage wird dem c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\My Exported Templates\Ordner hinzugefügt , auch dem c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\Templates\ItemTemplates\. Nach dem VSNeustart sehen Sie diese Vorlage in der Liste nur als VS Tools for UnityVorlagen:

введите сюда описание изображения

Hier ist die Videoerklärung .


Glückliches Ende!

Alexey Shimansky
quelle
0

Sie können das neue Skript direkt in Visual Studio in Ihrem vorgesehenen Verzeichnis in Unity hinzufügen. In diesem Fall müssen Sie nicht neu laden. Geben Sie hier die Bildbeschreibung ein

Aber du musst etwas anderes tun. Neues Skript in Visual Studio verfügt über einige Namespaces, die standardmäßig verwendet werden. Sie können sie ändern oder entfernen. Sie müssen using UnityEngine;zunächst Unity-bezogene Berechtigungen hinzufügen . Sie müssen hinzufügen void Start()oder void Update()selbst, wenn Sie brauchen. Neue Klasse sollte aussehen wie: Geben Sie hier die Bildbeschreibung ein

Sourav Paul
quelle
1
Danke, das weiß ich. Aber manchmal möchte ich Skripte in Unity erstellen / löschen
Alexey Shimansky
1
Sie müssen nicht manuell mit UnityEngine oder start () / stop () hinzufügen, sondern können eine eigene benutzerdefinierte Elementvorlage für Unity-Skripte hinzufügen .
Wondra