Paksa Muat Ulang VS soution Explorer saat menambahkan c # Script baru melalui Unity3d?

8

Ketika saya membuat skrip C # ( Create -> C# Script) melalui Unity3d atau menghapusnya dari Unity3d- Visual Studiotunjukkan jendela peringatan.

masukkan deskripsi gambar di sini

itu menyebalkan.

Apakah ada cara untuk memaksa "ReloadAll" di solusi Explorer tanpa jendela?

Alexey Shimansky
sumber

Jawaban:

3

Jadi, apa yang kita miliki.

Pengembang dari VS Tools for Unity team mengatakan bahwa itu adalah salah satu permintaan fitur yang paling banyak dipilih. Dan anehnya tidak sepele untuk memperbaikinya, mereka sedang mengusahakannya.

Namun, saya menemukan beberapa skrip yang dapat digunakan .. Saya menemukannya di komunitas persatuan Rusia .

Terima kasih banyak kepada DbIMok . Dia juga memposting skrip ini kemarin di forum.unity3d.com

Perlu membuat skrip C # bernama FileModDialogCloser.csdan memasukkannya ke Editorfolder. Ini kodenya:

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

Ingin tahu!

Ini berfungsi untuk membuat dan menghapus skrip C # melalui Unity.

Seperti yang Anda lihat kode memiliki garis keybd_event(0x0D, 0, 0, 0);. Ini mensimulasikan penekanan Entertombol. Dan itu berarti Muat ulang realisasi. jika Anda memerlukan ReloadAll maka Anda harus melakukan seperti itu:

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

Ini menekan Tabtombol dan kemudian Enter.

KESALAHAN KECIL: Saat Anda membuat / menghapus skrip: jendela konfirmasi terbuka, jalankan keybd_event, jendela ditutup. Itu terjadi sangat cepat, jadi Anda tidak perlu mengklik tombol apa pun. Tetapi Anda dapat melihat jendela ini dalam beberapa milidetik saja. Saya pikir, untuk saat ini tidak ada cara yang lebih baik untuk melakukan itu.


TAMBAHAN:

Anda dapat membuat skrip C # untuk proyek Persatuan (bukan hanya skrip C # sederhana) di dalamnya Visual Studio. Unityakan menambahkan file secara otomatis tanpa jendela konfirmasi.

Metode pertama (simlple) :

Jika saya benar: ketika Anda menggunakan Visual Studio Tools for Unity- alat itu sudah mengintegrasikan templat untuk membuat skrip Unity C # ke dalam VS. Jadi, klik kanan pada Solution dan pilih Add -> NewItem. Anda dapat melihat dua templat untuk Unity:

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

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

Namun, template ini bisa mengandung banyak informasi yang tidak perlu, komentar misalnya // Use this for initialization, // Update is called once per framedll Dan, sebagai @wondra dalam komentar mengatakan : Anda dapat menambahkan sendiri template yang Item kustom untuk script kesatuan.

Metode kedua :

  • Membuat file dari mana saja.

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

  • Menambahkan apa pun yang Anda inginkan atau hapus sesuatu, atau contoh:

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

  • Klik File -> ExportTemplate

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

  • Memilih ItemTemlate

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

  • Periksa templat Anda dalam daftar

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

  • Klik Next,Next
  • Tetapkan nama dan deskripsi untuk templat, klik Finish

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

  • Template akan ditambahkan ke dalam c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\My Exported Templates\folder, juga ke dalam folder c:\Users\YOUR_PROFILE\Documents\Visual Studio 2015\Templates\ItemTemplates\. Setelah VSrestart, Anda dapat melihat templat ini dalam daftar seperti VS Tools for Unitytemplat:

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

Berikut penjelasan videonya .


Selamat akhir!

Alexey Shimansky
sumber
0

Anda dapat menambahkan skrip baru secara langsung di Visual Studio pada direktori yang Anda maksudkan di Unity. Dalam hal ini Anda tidak perlu memuat ulang. masukkan deskripsi gambar di sini

Tetapi Anda harus melakukan sesuatu yang lain. Skrip baru di Visual Studio akan memiliki beberapa ruang nama yang digunakan default. Anda dapat mengubah atau menghapusnya. Anda harus menambahkan using UnityEngine;pada awalnya untuk hak istimewa terkait Unity. Anda harus menambahkan void Start()atau void Update()sendiri jika perlu. Kelas baru akan terlihat seperti: masukkan deskripsi gambar di sini

Sourav Paul
sumber
1
Terima kasih, saya tahu itu. Tapi kadang-kadang saya ingin membuat / menghapus skrip dalam Unity
Alexey Shimansky
1
Anda tidak perlu menambahkan menggunakan UnityEngine atau mulai () / stop () secara manual, Anda dapat menambahkan templat item khusus sendiri untuk skrip unity.
Mukjizat