Aracılığıyla paylaş


Sorun giderme ve bilinen sorunlar (Unity için Visual Studio Araçları)

Bu bölümde, Unity için Visual Studio Araçları ile ilgili yaygın sorunların çözümlerini, bilinen sorunların açıklamalarını ve hataları bildirerek Unity için Visual Studio Araçları geliştirmeye nasıl yardımcı olabileceğinizi öğreneceksiniz.

Unity ile Visual Studio arasındaki bağlantı sorunlarını giderme

Etkinleştirildiğini veya Code Optimization On Startup olarak ayarlandığını onaylayın Editor AttachingDebug

Unity Menüsünde öğesini seçin Edit / Preferences.

Kullanılan Unity sürümüne bağlı olarak:

  • Code Optimization On Startup değerinin Debug olarak ayarlandığını onaylayın.
  • Veya sekmeyi External Tools seçin. Onay kutusunun etkinleştirildiğini Editor Attaching onaylayın.

Daha fazla bilgi için Unity Tercihleri belgelerine bakın.

Eklenemedi

  • Virüsten koruma yazılımınızı geçici olarak devre dışı bırakmaya veya hem VS hem de Unity için dışlama kuralları oluşturmaya çalışın.
  • VS ve Unity arasında TCP/UDP ağına izin vermek için güvenlik duvarınızı geçici olarak devre dışı bırakmaya veya kurallar oluşturmaya çalışın.
  • Takım Görüntüleyicisi gibi bazı programlar işlem algılamayı etkileyebilir. Bir şeyi değiştirip değiştirmediğini görmek için ek yazılımları geçici olarak durdurmayı deneyebilirsiniz.
  • VSTU yalnızca "Unity.exe" işlemlerini izlediğinden ana Unity yürütülebilir dosyasını yeniden adlandırmayın.

Visual Studio kilitleniyor

Bu sorun Visual Studio MEF önbelleğinin bozulmasından kaynaklanıyor olabilir.

MEF önbelleğini sıfırlamak için aşağıdaki klasörü kaldırmayı deneyin (bunu yapmadan önce Visual Studio'yu kapatın):

%localappdata%\Microsoft\VisualStudio\<version>\ComponentModelCache

Bu, sorununuzu çözmelidir. Sorun yaşamaya devam ediyorsanız visual studio için bir Geliştirici Komut İstemi'ni Yönetici istrator olarak çalıştırın ve aşağıdaki komutu kullanın:

 devenv /setup

Visual Studio yanıt vermeyi durduruyor

Parse, FMOD, UMP (Evrensel Medya Oynatıcı), ZFBrowser veya Embedded Browser gibi çeşitli Unity eklentileri yerel iş parçacıkları kullanıyor. Eklentinin çalışma zamanına yerel bir iş parçacığı eklemesi ve ardından işletim sistemine yapılan çağrıları engellemesi sorunudur. Bu, Unity'nin hata ayıklayıcı (veya etki alanı yeniden yüklemesi) için bu iş parçacığını kesintiye uğratıp yanıt vermeyi durdurabileceği anlamına gelir.

FMOD için geçici bir çözüm vardır. Zaman uyumsuz işlemeyi devre dışı bırakmak ve ana iş parçacığında tüm işlemleri gerçekleştirmek için başlatma bayrağı geçirebilirsinizFMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE.

Kendi yerel eklentinizi geliştiriyorsanız, hata ayıklayıcının iş parçacıklarını askıya alması gerektiğinde Unity ve Mono ile düzgün işbirliği yapmak için zaman uyumsuz yordam çağrıları (APC) ve özellikle SleepExSignalObjectAndWait, MsgWaitForMultipleObjectsEx, , WaitForMultipleObjectsExveya WaitForSingleObjectEx işlevlerini kullanmanızı öneririz.

Visual Studio'da uyumsuz proje

Bilinmesi gereken en önemli şey, Visual Studio'nın "Uyumsuz" durumunu proje ayarlarına kaydetmesi ve açıkça kullanana Reload Projectkadar projeyi yeniden yüklemeyi denememesidir. Bu nedenle, her sorun giderme adımından sonra çözümü yeniden açmayı denediğinizden emin olun ve uyumsuz tüm projelere sağ tıklayıp öğesini seçin Reload Project.

  1. Visual Studio'yu kullanarak Edit / Preferences / External ToolsUnity'de dış betik düzenleyiciniz olarak ayarlandığını denetleyin.
  2. Unity sürümünüze bağlı olarak:
    • Visual Studio eklentisinin Unity'de yüklü olup olmadığını denetleyin. Help / Aboutaltta Microsoft Unity için Visual Studio Araçları etkin gibi bir ileti görüntülenmelidir.
    • Unity 2020.x+: içinde Window / Package Manageren son Visual Studio Düzenleyicisi paketini kullanıp kullanmadığınıza bakın.
  3. Tüm projeleri/çözüm dosyalarını ve projenizdeki klasörü silmeyi .vs deneyin.
  4. veya Edit / Preferences / External tools / Regenerate Project fileskullanarak Open C# Project projeleri/çözümü yeniden oluşturmayı deneyin.
  5. Visual Studio'da Game/Unity iş yükünü yüklediğinizden emin olun.
  6. Burada açıklandığı gibi MEF önbelleğini temizlemeyi deneyin.
  7. Visual Studio'yu yeniden yüklemeyi deneyin (yalnızca başlamak için Game/Unity iş yükünü kullanarak).
  8. uygulamasındaKi Unity uzantısını etkileyebileceğinden üçüncü taraf uzantılarını Tools / Extensionsdevre dışı bırakmaya çalışın.

Ek yeniden yüklemeler veya Visual Studio tüm açık pencereleri kaybediyor

Proje dosyalarına hiçbir zaman doğrudan bir varlık işlemcisinden veya başka bir araçtan dokunmamaya özen gösterin. Proje dosyasını gerçekten işlemeniz gerekiyorsa bunun için bir API kullanıma sunarız. Lütfen Derleme başvuruları sorunları bölümünü denetleyin.

Ek yeniden yüklemelerle karşılaşırsanız veya Visual Studio yeniden yüklemede tüm açık Windows'u kaybediyorsa, düzgün .NET hedefleme paketlerinin yüklü olduğundan emin olun. Daha fazla bilgi için çerçeveler hakkında aşağıdaki bölüme bakın.

Hata ayıklayıcısı özel durumlarda bozulmaz

Eski Unity çalışma zamanını (.NET 3.5 eşdeğeri) kullanırken, özel durum işlenmemiş olduğunda (=try/catch bloğunun dışında) hata ayıklayıcı her zaman bozulacaktır. Özel durum işlenirse, hata ayıklayıcı bir kesmenin gerekli olup olmadığını belirlemek için Özel Durum Ayarlar Penceresini kullanır.

Yeni çalışma zamanıyla (.NET 4.6 eşdeğeri), Unity kullanıcı özel durumlarını yönetmek için yeni bir yol ekledi ve sonuç olarak, tüm özel durumlar bir try/catch bloğunun dışında olsalar bile "kullanıcı tarafından işlenir" olarak görülür. Bu nedenle, hata ayıklayıcının bozulması için özel durum Ayarlar penceresinde bunları açıkça denetlemeniz gerekir.

Özel Durum Ayarlar penceresinde (Hata Ayıklama > Windows > Özel Durumu Ayarlar), bir özel durum kategorisinin düğümünü genişletin (örneğin, .NET özel durumları anlamına gelen Ortak Dil Çalışma Zamanı Özel Durumları) ve bu kategoride yakalamak istediğiniz özel durumun onay kutusunu seçin (örneğin System.NullReferenceException). Özel durumlar kategorisinin tamamını da seçebilirsiniz.

Windows'da Visual Studio Unity hedef çerçevesini indirmeyi ister

Eski Unity çalışma zamanını (.NET 3.5 eşdeğeri) kullanırken Unity için Visual Studio Araçları, Windows 8 veya 10'da varsayılan olarak yüklenmeyen .NET Framework 3.5 gerektirir. Bu sorunu çözmek için yönergeleri izleyerek .NET framework 3.5'i indirip yükleyin.

Yeni Unity çalışma zamanını kullanırken Unity sürümüne bağlı olarak .NET hedefleme paketleri sürüm 4.6 veya 4.7.1 de gereklidir. Bunları hızla yüklemek için Visual Studio yükleyicisini kullanmak mümkündür (yüklemenizi, tek tek bileşenlerinizi, .NET kategorinizi değiştirin, tüm 4.x hedefleme paketlerini seçin).

Derleme başvurusu veya proje özelliği sorunları

Projeniz karmaşık başvuru açısından ise veya bu oluşturma adımını daha iyi denetlemek istiyorsanız, oluşturulan proje veya çözüm içeriğini işlemek için API'mizi kullanabilirsiniz. Unity projenizde yanıt dosyalarını da kullanabilirsiniz ve bunları işleyeceğiz.

Son Visual Studio ve Unity sürümlerinde en iyi yaklaşım, oluşturduğunuz projelerle birlikte özel Directory.Build.props bir dosya kullanıyor gibi görünüyor. Daha sonra, oluşturma işlemine müdahale etmeden proje yapısına katkıda bulunabileceksiniz.

Uyarı içeren kesme noktaları

Visual Studio belirli bir kesme noktası için kaynak konum bulamazsa kesme noktanızın çevresinde bir uyarı görürsünüz. Kullandığınız betiğin geçerli Unity sahnesinde düzgün yüklendiğinden/kullanıldığından emin olun.

Kesme noktalarına isabet edilmedi

Kullandığınız betiğin geçerli Unity sahnesinde düzgün yüklendiğinden/kullanıldığından emin olun. Hem Visual Studio'dan hem de Unity'den çıkın ve ardından oluşturulan tüm dosyaları (*.csproj, *.sln), .vs klasörü ve Kitaplık klasörünün tamamını silin. Unity web sitesinde C# hata ayıklaması hakkında daha fazla bilgi bulabilirsiniz.

Android oynatıcılarda hata ayıklama yapılamıyor

Player algılaması için çok noktaya yayın kullanıyoruz (Unity tarafından kullanılan varsayılan mekanizmadır), ancak bundan sonra hata ayıklayıcıyı eklemek için normal bir TCP bağlantısı kullanırız. Algılama aşaması, Android cihazlar için ana sorundur.

Wi-Fi, gecikme süresi nedeniyle USB ile karşılaştırıldığında çok yönlü ama süper yavaştır. Bazı yönlendiriciler veya cihazlar için uygun çok noktaya yayın desteğinin eksik olduğunu gördük (Nexus serisi bunun için iyi bilinir).

USB, hata ayıklama için çok hızlıdır ve Unity için Visual Studio Araçları artık USB cihazlarını algılayabilir ve hata ayıklama için bağlantı noktalarını düzgün bir şekilde iletmek için adb sunucusuyla konuşabilir.

IntelliSense veya kod renklendirmesi ile ilgili sorunlar

Visual Studio'nuzu en son sürüme yükseltmeyi deneyin. Uyumsuz projeler ile aynı sorun giderme adımlarını deneyin.

Bilinen sorunlar

Unity için Visual Studio Araçları'de hata ayıklayıcının Unity'nin C# derleyicisinin eski sürümüyle nasıl etkileşime geçtiğini gösteren bilinen sorunlar vardır. Bu sorunları çözmeye yardımcı olmak için çalışıyoruz, ancak bu sırada aşağıdaki sorunlarla karşılaşabilirsiniz:

  • Hata ayıklama sırasında Unity bazen kilitlenir.

  • Hata ayıklama sırasında Unity bazen donar.

  • Yöntemlere girip çıkmak bazen, özellikle yineleyicilerde veya switch deyimleri içinde yanlış davranır.

Rapor hataları

Kilitlenme, donma veya diğer hatalarla karşılaştığınızda hata raporları göndererek Unity için Visual Studio Araçları kalitesini geliştirmemize yardımcı olun. Bu, Unity için Visual Studio Araçları sorunlarını araştırmamıza ve düzeltmemize yardımcı olur. Teşekkürler!

Visual Studio donduğunda hata bildirme

Unity için Visual Studio Araçları ile hata ayıklarken Visual Studio'yu bazen dondurduğunu ancak bu sorunu anlamak için daha fazla veriye ihtiyacımız olduğunu bildiren raporlar vardır. Aşağıdaki adımları izleyerek araştırmamıza yardımcı olabilirsiniz.

Unity için Visual Studio Araçları ile hata ayıklarken Visual Studio'yu dondurduğunu bildirmek için

Windows'da:

  1. Visual Studio'nun yeni bir örneğini açın.

  2. İşleme Ekle iletişim kutusunu açın. Visual Studio'nun yeni örneğinde, ana menüde Hata Ayıkla, İşleme Ekle'yi seçin.

  3. Hata ayıklayıcısını Visual Studio'nun donmuş örneğine ekleyin. İşleme Ekle iletişim kutusunda, Kullanılabilir İşlemler tablosundan Visual Studio'nun donmuş örneğini seçin ve ardından Ekle düğmesini seçin.

  4. Hata Ayıklayıcıyı duraklatın. Visual Studio'nun yeni örneğinde, ana menüde Hata Ayıkla, Tümünü Kes'i seçin veya yalnızca Ctrl+Alt+Break tuşlarına basın.

  5. İş parçacığı dökümü oluşturma. Komut penceresinde aşağıdaki komutu girin ve Enter tuşuna basın:

    Debug.ListCallStack /AllThreads /ShowExternalCode
    

    Önce Komut penceresini görünür hale getirmeniz gerekebilir. Visual Studio'da, ana menüde Görünüm, Diğer Pencereler, Komut Penceresi'ni seçin.

Mac'te:

  1. Bir terminal açın ve Mac için Visual Studio PID'sini alın:

    ps aux | grep "[V]isual Studio.app"
    
  2. lldb hata ayıklayıcısını başlatın:

    lldb
    
  3. PID kullanarak Mac için Visual Studio örneğine ekleyin:

    process attach --pid THE_PID_OF_THE_VSFM_PROCESS
    
  4. Tüm iş parçacıkları için stacktrace'i alın:

    bt all
    

Son olarak, visual Studio dondurulurken yaptığınız işin açıklamasının yanı sıra iş parçacığı dökümünü vstusp@microsoft.comadresine gönderin.

Ayrıca bkz.