Force Reload VS soution Explorer lors de l'ajout d'un nouveau script c # via Unity3d?

8

Lorsque je crée un script C # ( Create -> C# Script) via Unity3d ou le supprime de Unity3d- Visual Studioaffiche la fenêtre d'avertissement.

entrez la description de l'image ici

c'est ennuyant.

Existe-t-il un moyen de forcer "ReloadAll" dans l'Explorateur de solutions sans la fenêtre?

Alexey Shimansky
la source

Réponses:

3

Alors, ce que nous avons.

Le développeur du VS Tools for Unity team dit que c'est l'une de leurs demandes de fonctionnalités les plus votées. Et ce n'est étonnamment pas trivial à corriger, ils y travaillent.

Cependant, j'ai trouvé un script qui peut utiliser .. Je l'ai trouvé sur la communauté de l'unité russe .

Un grand merci à DbIMok . Il a également publié ce script hier sur forum.unity3d.com

Besoin de créer un script C # nommé comme FileModDialogCloser.cset de le mettre dans le Editordossier. Voici le 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;
        }
}

Je me demande!

Il fonctionne pour créer et supprimer des scripts C # via Unity.

Comme vous pouvez le voir, le code a une ligne keybd_event(0x0D, 0, 0, 0);. C'est simuler en appuyant sur le Enterbouton. Et cela signifie réaliser la recharge . si vous avez besoin de ReloadAll, vous devez faire comme ça:

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

C'est en appuyant sur le Tabbouton puis Enter.

PETIT DÉFAUT: Lorsque vous créez / supprimez un script: confirmez que la fenêtre s'ouvre, s'exécute keybd_event, la fenêtre se ferme. Cela se produit très rapidement, vous n'avez donc pas besoin de cliquer sur un bouton. Mais vous pouvez quand même voir cette fenêtre en quelques millisecondes. Je pense que, pour l'instant, il n'y a pas de meilleure façon de le faire.


ADITIONELLEMENT:

Vous pouvez créer un script C # pour les projets Unity (pas seulement un simple script C #) dans Visual Studio. Unityajoutera le fichier automatiquement sans fenêtre de confirmation.

La première méthode (simple) :

Si je comprends bien: lorsque vous utilisez Visual Studio Tools for Unity- cet outil intègre déjà des modèles pour créer des scripts Unity C # dans le VS. Alors, faites un clic droit sur Solution et choisissez Add -> NewItem. Vous pouvez voir deux modèles pour Unity:

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

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

Cependant, ces modèles peut contenir beaucoup d'informations inutiles, par exemple des commentaires // Use this for initialization, // Update is called once per frameetc. Et, comme dans les commentaires @wondra dit : vous pouvez ajouter propre modèle d'élément personnalisé pour les scripts d'unité.

La deuxième méthode :

  • Créer un fichier de n'importe où.

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

  • Ajout de ce que vous voulez ou suppression de smth., Ou exemple:

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

  • Cliquez sur File -> ExportTemplate

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

  • Choisir ItemTemlate

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

  • Vérifiez votre modèle dans la liste

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

  • Cliquez Next,Next
  • Définissez le nom et la description du modèle, cliquez sur Finish

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

  • Le modèle sera ajouté dans le c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\My Exported Templates\dossier, également dans le c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\Templates\ItemTemplates\. Après le VSredémarrage, vous pouvez voir ce modèle dans la liste comme des VS Tools for Unitymodèles:

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

Voici l' explication vidéo .


Fin heureuse!

Alexey Shimansky
la source
0

Vous pouvez ajouter le nouveau script directement sur Visual Studio sur votre répertoire prévu dans Unity. Dans ce cas, vous n'aurez pas besoin de recharger. entrez la description de l'image ici

Mais vous devrez faire autre chose. Le nouveau script dans Visual Studio aura des espaces de noms qui utilisaient par défaut. Vous pouvez les modifier ou les supprimer. Vous devrez d'abord ajouter using UnityEngine;des privilèges liés à Unity. Vous devrez ajouter void Start()ou void Update()par vous-même si vous en avez besoin. La nouvelle classe devrait ressembler à: entrez la description de l'image ici

Sourav Paul
la source
1
Merci, je le sais. Mais parfois, je veux créer / supprimer des scripts dans Unity
Alexey Shimansky
1
Vous n'avez pas besoin d'ajouter à l'aide d'UnityEngine ou de démarrer () / stop () manuellement, vous pouvez ajouter votre propre modèle d'élément personnalisé pour les scripts d'unité.
wondra