Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Di bagian ini, Anda akan menemukan solusi untuk masalah umum dengan Visual Studio Tools for Unity, deskripsi masalah umum, dan mempelajari cara Anda dapat membantu meningkatkan alat Visual Studio Tools for Unity dengan melaporkan kesalahan.
Memecahkan masalah sambungan antara Unity dan Visual Studio
Konfirmasi Editor Attaching
diaktifkan atau Code Optimization On Startup
diatur ke Debug
Di Menu Unity, pilih Edit / Preferences
.
Bergantung pada versi Unity yang digunakan :
- Konfirmasi bahwa
Code Optimization On Startup
diatur keDebug
. - Atau pilih tab
External Tools
. Konfirmasi bahwa kotak centangEditor Attaching
diaktifkan.
Untuk informasi selengkapnya, lihat Dokumentasi Preferensi Unity.
Tidak dapat melampirkan
- Coba nonaktifkan antivirus Anda untuk sementara waktu atau buat aturan pengecualian untuk VS dan Unity.
- Coba nonaktifkan firewall Anda untuk sementara waktu atau buat aturan untuk mengizinkan jaringan TCP/UDP antara VS dan Unity.
- Beberapa program, seperti Team Viewer, dapat mengganggu deteksi proses. Anda dapat mencoba menghentikan sementara perangkat lunak tambahan untuk melihat apakah akan mengubah sesuatu.
- Jangan mengganti nama Unity utama yang dapat dijalankan, karena VSTU hanya memantau proses "Unity.exe".
Crash Visual Studio
Masalah ini dapat disebabkan oleh cache MEF Visual Studio yang rusak.
Coba hapus folder berikut untuk mengatur ulang cache MEF (tutup Visual Studio sebelum melakukannya):
%localappdata%\Microsoft\VisualStudio\<version>\ComponentModelCache
Tindakan ini akan memperbaiki masalah Anda. Jika Anda masih mengalami masalah, jalankan Perintah Pengembang untuk Visual Studio sebagai Administrator dan gunakan perintah berikut:
devenv /setup
Visual Studio berhenti merespons
Beberapa plugin Unity seperti Parse, FMOD, UMP (Universal Media Player), ZFBrowser, atau Browser Tersemat menggunakan utas native. Ini menjadi masalah jika plugin pada akhirnya melampirkan utas native ke durasi, yang kemudian memblokir panggilan ke OS. Ini berarti Unity tidak dapat mengganggu utas tersebut untuk debugger (atau muat ulang domain) dan berhenti merespons.
Untuk FMOD, ada solusinya, Anda dapat meneruskan FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE
benderainisialisasi untuk menonaktifkan pemrosesan asinkron dan melakukan semua pemrosesan pada utas utama.
Jika Anda mengembangkan plugin asli Anda sendiri, Sebaiknya gunakan panggilan prosedur asinkron (APC) dan terutama SleepEx
fungsi , , MsgWaitForMultipleObjectsEx
SignalObjectAndWait
, WaitForMultipleObjectsEx
, atau WaitForSingleObjectEx
untuk bekerja sama dengan Unity dan Mono dengan benar ketika debugger perlu menangguhkan utas.
Proyek yang tidak kompatibel di Visual Studio
Hal yang sangat penting untuk diketahui adalah bahwa Visual Studio menyimpan status "Tidak Kompatibel" di pengaturan proyek dan tidak akan mencoba memuat ulang proyek sampai Anda secara eksplisit menggunakan Reload Project
. Jadi, setelah setiap langkah pemecahan masalah, pastikan Anda mencoba membuka ulang solusi dan mencoba mengklik kanan semua proyek yang tidak kompatibel dan memilih Reload Project
.
- Periksa apakah Visual Studio diatur sebagai editor skrip eksternal Anda di Unity menggunakan
Edit / Preferences / External Tools
. - Bergantung pada versi Unity Anda:
- Periksa apakah plugin Visual Studio dipasang di Unity.
Help / About
harus menampilkan pesan seperti Microsoft Visual Studio Tools for Unity diaktifkan di bagian bawah. - Unity 2020.x+: Periksa apakah Anda menggunakan paket Editor Visual Studio terbaru di
Window / Package Manager
.
- Periksa apakah plugin Visual Studio dipasang di Unity.
- Coba hapus semua file proyek/solusi dan folder
.vs
di proyek Anda. - Coba buat ulang proyek/solusi menggunakan
Open C# Project
atauEdit / Preferences / External tools / Regenerate Project files
. - Pastikan Anda memasang beban kerja Game/Unity di Visual Studio.
- Coba bersihkan cache MEF seperti dijelaskan di sini.
- Coba pasang ulang Visual Studio (menggunakan beban kerja Game/Unity hanya untuk memulai).
- Coba nonaktifkan ekstensi pihak ketiga jika ekstensi tersebut mungkin mengganggu ekstensi Unity di
Tools / Extensions
.
Muat ulang ekstra, atau Visual Studio kehilangan semua jendela yang terbuka
Pastikan untuk tidak pernah menyentuh file proyek langsung dari prosesor aset atau alat lainnya. Jika Anda benar-benar perlu memanipulasi file proyek, kami mengekspos API untuk itu. Silakan periksa Bagian masalah referensi rakitan.
Jika Anda mengalami pemuatan ulang ekstra atau jika Visual Studio kehilangan semua Jendela yang terbuka saat memuat ulang, pastikan Anda telah memasang paket penargetan .NET yang tepat. Periksa bagian berikut tentang kerangka kerja untuk informasi selengkapnya.
Debugger tidak berhenti pada saat pengecualian
Saat menggunakan durasi Unity lama (setara.NET 3.5), debugger akan selalu berhenti saat pengecualian tidak ditangani (=di luar blok mencoba/menangkap). Jika pengecualian ditangani, debugger akan menggunakan Jendela Pengaturan Pengecualian untuk menentukan apakah berhenti diperlukan atau tidak.
Dengan durasi baru (setara.NET 4.6), Unity memperkenalkan cara baru untuk mengelola pengecualian pengguna dan sebagai hasilnya, semua pengecualian dianggap sebagai "ditangani pengguna" bahkan jika pengecualian tersebut berada di luar blok mencoba/menangkap. Itu sebabnya Anda sekarang perlu secara eksplisit memeriksanya di Jendela Pengaturan Pengecualian jika Anda ingin debugger berhenti.
Di jendela Pengaturan Pengecualian (Debug > Jendela > Pengecualian Pengaturan), luaskan simpul untuk kategori pengecualian (misalnya, Pengecualian Durasi Bahasa Umum, yang berarti pengecualian .NET), dan pilih kotak centang untuk pengecualian tertentu yang ingin Anda tangkap dalam kategori tersebut (misalnya System.NullReferenceException). Anda juga dapat memilih seluruh kategori pengecualian.
Di Jendela, Visual Studio meminta untuk mengunduh kerangka kerja target Unity
Saat menggunakan runtime Unity warisan (setara.NET 3.5), Visual Studio Tools for Unity memerlukan .NET Framework 3.5, yang tidak diinstal secara default pada Windows 8 atau 10. Untuk memperbaiki masalah ini, ikuti petunjuk untuk mengunduh dan memasang .NET framework 3.5.
Saat menggunakan durasi Unity baru, paket penargetan .NET versi 4.6 atau 4.7.1 juga diperlukan bergantung pada versi Unity. Dimungkinkan untuk menggunakan alat penginstal Visual Studio untuk memasangnya dengan cepat (mengubah penginstalan Anda, komponen individual, kategori .NET, memilih semua paket penargetan 4.x).
Masalah referensi rakitan atau properti proyek
Jika proyek Anda kompleks dalam hal referensi atau jika Anda ingin mengontrol langkah pembuatan ini dengan lebih baik, Anda dapat menggunakan API kami untuk memanipulasi konten proyek atau solusi yang dibuat. Anda juga dapat menggunakan file respons di proyek Unity Anda dan kami akan memprosesnya.
Dengan versi Visual Studio dan Unity baru-baru ini, pendekatan terbaik tampaknya menggunakan file Directory.Build.props
kustom beserta proyek yang Anda buat. Anda kemudian dapat berkontribusi pada struktur proyek tanpa mengganggu proses pembuatan.
Titik henti dengan peringatan
Jika Visual Studio tidak dapat menemukan lokasi sumber untuk titik henti tertentu, Anda akan melihat peringatan di sekitar titik henti Anda. Periksa apakah skrip yang Anda gunakan dimuat/digunakan dengan benar di adegan Unity saat ini.
Titik henti tidak ditemukan
Periksa apakah skrip yang Anda gunakan dimuat/digunakan dengan benar di adegan Unity saat ini. Keluar dari Visual Studio dan Unity kemudian hapus semua file yang dibuat (*.csproj, *.sln), folder .vs
dan seluruh folder Pustaka. Anda dapat menemukan informasi selengkapnya tentang debug C# di situs web Unity.
Tidak dapat men-debug pemutar Android
Kami menggunakan multicast untuk deteksi pemutar (yang merupakan mekanisme default yang digunakan oleh Unity), tetapi setelah itu kami menggunakan sambungan TCP reguler untuk melampirkan debugger. Fase deteksi adalah masalah utama untuk perangkat Android.
WiFi memang serbaguna tetapi sangat lambat dibandingkan dengan USB karena latensi. Kami melihat kurangnya dukungan multicast yang tepat untuk beberapa router atau perangkat (seri Nexus terkenal karena ini).
USB sangat cepat untuk debug, dan Visual Studio Tools for Unity sekarang dapat mendeteksi perangkat USB, dan berbicara dengan server adb guna meneruskan port dengan benar untuk debug.
Masalah pada IntelliSense atau pewarnaan kode
Coba tingkatkan Visual Studio Anda ke versi terbaru. Coba langkah-langkah pemecahan masalah yang sama seperti untuk proyek yang tidak kompatibel.
Masalah yang diketahui
Ada masalah umum pada di Visual Studio Tools for Unity yang diakibatkan oleh cara debugger berinteraksi dengan versi pengompilasi C# Unity yang lebih lama. Kami berupaya membantu memperbaiki masalah ini, tetapi untuk sementara ini Anda mungkin mengalami masalah berikut:
Saat men-debug, Unity kadang mengalami crash.
Saat men-debug, Unity kadang membeku.
Masuk ke dan keluar dari metode kadang bertingkah dengan tidak benar, terutama dalam iterator atau dalam pernyataan switch.
Melaporkan kesalahan
Harap bantu kami meningkatkan kualitas Visual Studio Tools for Unity dengan mengirim laporan kesalahan saat Anda mengalami crash, beku, atau kesalahan lainnya. Ini membantu kami menyelidiki dan memperbaiki masalah di Visual Studio Tools for Unity. Terima kasih!
Cara melaporkan kesalahan saat Visual Studio membeku
Ada laporan bahwa Visual Studio kadang membeku saat debug dengan Visual Studio Tools for Unity, tetapi kami memerlukan lebih banyak data untuk memahami masalah ini. Anda dapat membantu kami menyelidiki dengan mengikuti langkah-langkah di bawah.
Untuk melaporkan bahwa Visual Studio membeku saat debug dengan Visual Studio Tools for Unity
Di Windows:
Buka instans baru Visual Studio.
Buka dialog Lampirkan ke Proses. Di instans baru Visual Studio, pada menu utama, pilih Debug, Lampirkan ke Proses.
Lampirkan debugger ke instans Visual Studio yang membeku. Dalam dialog Lampirkan ke Proses, pilih instans Visual Studio yang membeku dari tabel Proses yang Tersedia, lalu pilih tombol Lampirkan.
Menjeda Debugger. Di instans baru Visual Studio, pada menu utama, pilih Debug, Hentikan Semua, atau cukup tekan Ctrl+Alt+Break.
Membuat dump-utas. Di jendela Perintah, masukkan perintah berikut dan tekan Enter:
Debug.ListCallStack /AllThreads /ShowExternalCode
Anda mungkin perlu membuat jendela Perintah terlihat terlebih dahulu. Di Visual Studio, pada menu utama, pilih Tampilan, Jendela Lain, Jendela Perintah.
Di Mac:
Buka terminal dan dapatkan PID Visual Studio untuk Mac:
ps aux | grep "[V]isual Studio.app"
Luncurkan debugger lldb:
lldb
Lampirkan ke instan Visual Studio untuk Mac menggunakan PID:
process attach --pid THE_PID_OF_THE_VSFM_PROCESS
Ambil stacktrace untuk semua utas:
bt all
Terakhir, kirim dump-utas ke vstusp@microsoft.com, beserta deskripsi tentang apa yang Anda lakukan saat Visual Studio menjadi beku.