Unity Çerez Ders: Projenizdeki Klon (Duplicate) Asset’leri Bulmak

Yayınlandı: 21 Aralık 2020 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Merhabalar,

Bir Unity projesinde birden çok kişi çalışıyorsanız, aynı asset’in projeye birden çok kez eklendiğine şahit olabilirsiniz. Bu da projenin boyutunun gereksiz yere büyümesine sebep olabilir. Projedeki hangi asset’lerin birbirinin klonu olduğunu bulabilmek için, basit bir editör script’i yazdım:

Yapmanız gereken, projenizin Editor klasöründe (bu klasör yoksa oluşturun) DuplicateAssetDetector adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/f96802da4cf6f5fbb0c76d8322463a88

Ardından Window-Duplicate Asset Detector ile Duplicate Assets penceresini açıp Refresh butonuna tıklayabilirsiniz. Burada dikkat etmeniz gereken 3 nokta var:

  • Hangi asset’lerin birbirinin klonu olduğunu bulabilmek için, script her asset’in hash’ini çıkarıp bu hash’leri birbiri ile kıyaslıyor. Çok ender de olsa, farklı asset’lerde hash çakışması olabilir ve klon olmayan asset’ler klon gibi listelenebilir. İlaveten, script sadece hash’lere baktığı için, asset’lerin import ayarlarına bakmıyor. Bu duplicate asset’lerin import ayarlarını siz kendiniz kontrol etmeli ve hangi duplicate asset’lerin gereksiz olduğuna ona göre karar vermelisiniz.
  • Listelenen konumlardan birine çift tıklarsanız, o konumdaki asset otomatik olarak seçilir.
  • Duplicate asset’lerin önizlemelerinden birine tıklarsanız, o duplicate asset’lerin hepsi otomatik olarak seçilir.

Başka derslerde görüşmek üzere!

yorum
  1. Igrahiga dedi ki:

    Merhaaba Yasir! Discord uzerinde hesab’in varmi ? Eger discord’a giriyorsan bi soyle cok sevinirim.

  2. aslanadam dedi ki:

    google playe oyun yüklemek için hesap açıyorun 25 dolar ödüyoruz ya bunun dolar olmasına gerek var mı yoksa hesaptan 25 dolara karşılık gelcek kadar tl mi çekiyor yardım edersen sevinirim

  3. aslanadam dedi ki:

    [Adaptive Performance] No Provider was configured for use. Make sure you added at least one Provider in the Adaptive Performance Settings. UnityEngine.AdaptivePerformance.AdaptivePerformanceInitializer:Initialize () (at Library/PackageCache/com.unity.adaptiveperformance@2.0.2/Runtime/Core/AdaptivePerformanceInit.cs:51)

    [Uyarlanabilir Performans] Kullanım için hiçbir Sağlayıcı yapılandırılmadı. Uyarlanabilir Performans Ayarlarına en az bir Sağlayıcı eklediğinizden emin olun. UnityEngine.AdaptivePerformance.AdaptivePerformanceInitializer: Initialize () (at Library/PackageCache/com.unity.adaptiveperformance@2.0.2/Runtime/Core/AdaptivePerformanceInit.cs: 51)

    Değerli hocam uyarlanabilir performan sağlayıcı nasıl ekleyebilirim unity mobile

  4. ferhat dedi ki:

    Merhaba Yasir bey, seviyeli bir zeka testi oyunum var, alt taraftaki 4 butonu bir panel içerisinde prefab yaptım ve her sahneye ekledim örneğin 1 den 50.sahneye kadar. Kullanıcı bir seviye atladığında Gecis isimli bir sahneye alınıyor ve daha sonra bir sonraki seviyeye geciliyor, buraya kadar sorun yok yalnız, ben bu alttaki buton prefablerinde linq işlemleri felan yapıyorum,butona dokunduğunda soruyla ilgili ipucuları gösteriyor felan, gecis ekranına gittiğimde benim bu prefablerin yok olmadığını fark ettim, OnlevelWasLoaded kullandım fayda etmedi, bir öneriniz varmı acaba? şimdiden teşekkür ederim.

    • yasirkula dedi ki:

      DontDestroyOnLoad yapmadığınız sürece yok olur. Gördüğünüz şey yeni sahnedeki prefab’dır.

      • ferhat dedi ki:

        Aslında sorunu buldum, bu prefabin icerisinde reklam scripti var, video reklam bu. Her sahne degistiginde, 40,50 mb ram artiyor. Anlamis değilim çözümü de bulamadım. Muhtemelen her seviye arttiginda hafizada tutuyor ve yok etmiyor, ne yapabilirim bu konuda?

      • yasirkula dedi ki:

        Eğer AdMob ise, AdMob dersimde reklamları Destroy ile yok etmekten özellikle bahsettim.

  5. Samet dedi ki:

    Hocam konuyla alakasız fakat nereye yazacağımı bilemedim kusura bakmayın. Bir sorum var bu resimde gördüğünüz gibi 2 adet panel var menü olarak kullanıyorum. Biri açılırken animasyonlu bir şekilde diğer panel tuşuna tıklarsam üst üste açılıyor. Acaba iki tuşa bastığımızda da üst üste açılabilirliğini nasıl engelleriz yani biri açılırken diğerinin butonuna basınca önceki işlem iptal olsun. Denedim birkaç şey fakat yapamadım. Umarım anlatabilmişimdir hocam.

    • yasirkula dedi ki:

      A panelinin tuşuna basınca B panelini SetActive(false) yapsanız, B panelinin tuşuna basınca da A panelini SetActive(false) yapsanız olmaz mı? Objelerin hep aktif olması gerekiyorsa, A panelinin tuşuna basınca BPaneli.GetComponent<Animator>().Play("PanelKapamaAnimasyonu",0,1f); yapmayı deneyebilirsiniz.

  6. alp dedi ki:

    Sayın hocam ıenumeratorün içinde butona basılıp basılmadığını kontrol ettirmek mümkün mü

    • yasirkula dedi ki:

      Butona basınca çağrılan bir fonksiyon, bir değişkeni true yapar. Coroutine’in içerisinde bu değer false olduğu sürece (while(!degiskenDeger) iken) yield return null; çalışır.

      • alp dedi ki:

        Değerli hocam android de ıenumerator kodu olan sahneye geçiş yapmıyor donuyor oyun durdu diyor mobile desteklemiyor mu bu kod ıenumerator de yükleme ekranı yapıyorum

      • yasirkula dedi ki:

        IEnumerator’un oyunu çökerttiğini daha önce duymadım o yüzden bence IEnumerator’dan değildir.

      • alp dedi ki:

        ienumerator yüzünden olmuyor donuyor sahne yüklemiyor boş sahne oluşturdum denedim mobilde sahneyi yükleme ve geçiş yapmadı dondu kaldı arka planda yükleme yapmıyor starcourt start methodunda olunca geçmiyor butona yazıyorum gene butona basınca donuyor kalıyor ben yanlış bir şey mi yapıyorum bilmiyorum kodu atsam bi bakar mısın ienumeratorun

      • alp dedi ki:

        bide oyun 2d fark eder mi

      • yasirkula dedi ki:

        Fark etmez. Oyundaki her sahnenin File-Build Settings’teki listeye ekli olması lazım belki onu unutmuşsundur. Aksi taktirde kodun ilgili kısmını buraya atabilirsin.

      • alp dedi ki:

        IEnumerator LoadScene()
        {

        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(3);

        asyncOperation.allowSceneActivation = false;
        while(!btn)
        {
        yield return null;
        }
        while(btn)
        {
        asyncOperation.allowSceneActivation = true;

        }
        yield return null;

        } sade yükleme sahnesini çıkardım onun dışında hepsi ekli

      • yasirkula dedi ki:

        while(btn) satırı infinite loop’a sebep oluyor. Orada while’a gerek yok sanki, o while silinebilir.

      • alp dedi ki:

        https://hizliresim.com/SWnvL1
        https://hizliresim.com/RAsOEo
        böyle hata veriyor dondu oyun sahneden dolayı mı kodlardan dolayı mı neden olduğunu bulabileceğim bir yöntem var mı

      • yasirkula dedi ki:

        Resim linkleri çalışmıyor. Kodun son halini merak ettim. Unity’nin neden donduğunu bulmanın kolay yolu var mı bilmiyorum. Belki Visual Studio ile Unity’i birbirine bağlayıp Unity donmadan hemen önce çalışan koda breakpoint koyup sonra adım adım kodun nereye gittiğini takip etmek işe yarar ama benim bu şekilde debug etme konusunda tecrübem yok.

      • alp dedi ki:

        https://imgyukle.com/i/aLdbE6
        https://imgyukle.com/i/aLdMlx
        peki internet te nasıl araştıramam lazım kodun nereye kadar çalıştığını bulmak için

      • yasirkula dedi ki:

        Hata mesajı yeterince açık aslında: settingManaGer1.json dosyası bulunamadı diyor.

    • alp dedi ki:

      peki butona bastığımda nasıl true yapıcam ben

    • alp dedi ki:

      build settingsteki bir ayar buna neden olabilir mi

      • yasirkula dedi ki:

        Hayır bu Unity’nin bir hatası değil. Ya senin yazdığın bir kod ya da kullandığın bir plugin’deki bir kod settingManaGer1.json diye bir dosyaya erişmeye çalışıyor ama böyle bir dosya yok. Dosyanın olup olmadığını File.Exists ile kontrol edebilirsin.

      • alp dedi ki:

        mobile build edince öle oluyor o sorun değilmiş bana unity sahnesini denetleme şansım var mı neden çöktüğüne bulmama yardımcı olucak program veya başka bir şey

      • yasirkula dedi ki:

        logcat log’larına bakmak dışında bilgim yok. Oyunu build alırken Development Build açık olursa log’lar daha çok bilgi verebilir. Bir başka yöntem de oyun crash olduğu esnada çalışan kodları satır satır comment’leyip hangi satırın oyunu crash’lettiğini bulmaya çalışmak.

      • alp dedi ki:

        test runner yaptım all test(s) succeeded diyor hata yok herşey sorunsuz diyor ama sıkıntı var nasıl bulucam artık

      • alp dedi ki:

        https://imgyukle.com/i/aOP68v hatalar bunlarmış

      • yasirkula dedi ki:

        Test Runner için import ettiğin dosyaları silince bu düzelir.

  7. metkam dedi ki:

    Konuyla alakasız ama unity3d script arşivini düzenleyebilir misiniz? Gerçekten çok güzel kaynak ama düzenlerseniz daha iyi olacaktır. Javascript kodları var ve invokerepeat kodu yok, bunları yaparsanız daha iyi olacağına inanıyorum, teşekkürler.

    • yasirkula dedi ki:

      Düzenledim teşekkürler.

      • metkam dedi ki:

        Ben teşekkür ederim çok güzel işler yapıyorsunuz, bir de eliniz değmişken türkçe youtube kaynakları da düzenler misiniz:D Kapanmış kanallar ve en son 5 yıl önce video atmış kanallar var da, yani siz bilirsiniz tabii

      • yasirkula dedi ki:

        Bazen kanalları kontrol edip kapanmış olanları listeden çıkarıyorum ama aktif olmayan kanalları genelde silmek yerine listenin altına taşıyorum.

  8. oyuncu dedi ki:

    https://hizliresim.com/v0G8fA

    https://hizliresim.com/MLVV8q

    Saygıdeğer hocam bunların çözümü var mı kardeşimin telefonunda bir sorun olmuyor benim telefonda bunlar çıkıyor benim telefon gm5 plus kardeşimin huwaei p30 lite

    • yasirkula dedi ki:

      Daha önce denk gelmedim. “unity il2cpp null pointer dereference android crash” şeklinde arama yapmanı öneririm.

      • oyuncu dedi ki:

        ramden olabilir mi benim 3 kardeşimin 4 gb rami var telefonda

      • yasirkula dedi ki:

        “Null pointer dereference” bana RAM’i andırmadı, sanmıyorum. Belki Unity sürümünden de olabilir, ileriki Unity sürümlerinde hata çözülmüş olabilir. Ama öncelikle google’da yazanlara bakman lazım.

      • efsane dedi ki:

        Sayın hocam oyunumda ana menude 3 buton var oyunu başlat,ayarlar,oyundan çık oyunu başlat deyince donuyor herşey sonra yükleme ekranına geçiyor bunu nasıl çözebilirim donma problemini

      • yasirkula dedi ki:

        Bana aynı şeyi 3 kere sorarak boşuna vakit kaybediyorsun çünkü bilmediğim bir konuda yardımcı olamam. Hata mesajını google’da aratmalısın ve Unity sürümünü güncellemenin bir etkisi oluyor mu kontrol etmelisin.

      • oyuncu dedi ki:

        sorunu buldum hocam 100 mb mp3 müzik vardı onu 18 mb düşürdüm sorun kalktı aynı hataya karşılaşan olursa söylersin projede mobilde yüksek mb şeyler kullanmasınlar

Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.