Ziyaretçi Defteri


yorum
  1. Eren ALKAN dedi ki:

    Hocam Odin Inspector hakkında bir yazınızı bekliyorum. Ayrıca sizi youtubeda da görmek isteriz hocam.

    • yasirkula dedi ki:

      Asset’e yıllardır sahibim ama henüz hiç kullanmadığım için önce bi kendim öğrenmeliyim 🙂 Yalnız yıllardır süregelen geleneğimin uzun bir süre daha devam etmesinden korkuyorum.

  2. Mustafa dedi ki:

    Merhaba yasir hocam.Ben unity’de ray gönderirken bir sorun yaşıyorum.Işınım çarpmasını istediğim karakterinin colliderı’nın dışındaysa ray’de sorun yok.Ama colliderı’nın içerisindeyse ray çarpmıyor.
    https://www.youtube.com/watch?v=tFLbr_s224s
    Yukarıdaki linkteki video’da sorunu anlatmaya çalıştım hocam.

    • yasirkula dedi ki:

      “Queries Hit Backfaces” sadece Mesh Collider’lar için geçerli diye okudum. Aksi olsa bile, raycast ışınınızın uzunluğu Box Collider’ın genişliğinden kısa olduğu için, ışın Box Collider’ın ne sol kenarına ne de sağ kenarına çarpıyor o yüzden her halükarda bu property işe yaramazdı gibime geliyor. Benim önerim Raycast yerine Physics.OverlapBox kullanmayı denemeniz yönünde. Genişliği attığınız raycast’in uzunluğu kadar olan, 0 yükseklik ve derinlik ebatlarına sahip bir dikdörtgenler prizması ile fonksiyonu çağırabilirsiniz.

      • Mustafa dedi ki:

        Hocam bir takım nedenlerden dolayı attığınız kodu deneyememiştim.Bugün deneme fırsatım oldu verdiğiniz kodu koduma uyarladım.Sorun çözüldü yine nokta atışı yaptınız çok teşekkürler :))

  3. melih dedi ki:

    Hocam Android için 3d parkur oyunu yaptım ama ilerleme butonuna basarken ikinci parmağımı ekrana dokunduğumda ekran ikinci parmağıma doğru kayıyor nasıl düzeltebilirim

  4. Mehmet Sönmez dedi ki:

    Merhabalar,
    Yıllar sonra aklıma isminiz geldiği için bir teşekkür mesajı yazmak istedim.
    Ergenlik dönemlerimde -2015 yılları civarı- Oyun geliştirmeye merak saldığımda en büyük yazılı kaynağım sizin yazılarınızdı, bana o zamanlar çok yardımcı olmuştunuz.
    Kısıtlı internet imkanlarım ile Youtube üzerinden bir şeyler öğrenmem çok zor olduğu için size olan minnet borcum büyüktür.
    Sağlık ve sıhhatle kalmanız dileğiyle… Teşekkürler.

  5. Saltuk Bs dedi ki:

    Hocam Önceki cevaplarınız icin teşekkür ederim, bi sorum admob ile ilgili aslında herşeyi yaptım problem yok ama çok basit bir olayı çözemedimi oda şu , örneğin butona bastığımda ben oyunu tekrar oynamasını sağlıyorum, bunu sağlarkende oyunun sahnesini tekrar çağırtıyorum ki , oyuna sıfırdan başlayabilsin diye, fakat bu aynı butona birde geçiş reklamı ekledim , kodumdan sahne yüklemeyi iptal edersem reklamım çok güzel görünyor , fakat sahneyi yüklemeye çalıştığı zaman reklamım 1 sn görünüyor sonra otomatikmen sahneyi yenilediği için reklamım kalıcı olmuyor ve kayboluyor, kodun neresini değiştirirsem değiştireyim çözemedim yani kısacası reklamdan hemen sonra sahne değişikliği yaptığım için reklamım kısacık görünüyor bu sorunu nasıl çözebilirim hocam

    • yasirkula dedi ki:

      Bu reklam ya standard bir interstitial değil diye anlıyorum ya da OnDestroy fonksiyonunda reklamı Destroy ile yok ediyorsunuz. Sahneler arası geçişlerde yok olmayan singleton bir reklam scripti kullanırsanız o zaman bu sorun çözülebilir. Örnek bir scripti AdMob dersimde bulabilirsiniz, veya: https://yasirkula.com/2014/08/03/unityde-bir-objenin-sahneler-arasi-gecislerde-yok-olmasini-onlemek-singleton-prensibi

      • Saltuk bs dedi ki:

        Hayır hocam aslında bildiğimiz instertitial teklam aslında, bundan önceki projemde aynı kodları kullanmıştım hiç bir sorun yoktu ama bu sefer kayboluyor reklamın hemde sahne geçişini bile geçtim o anda yeni bir panel açmak istesem bile reklamın ardına hemen paneli açtığı için reklam yine kayboluyor başka bir yöntem ne olabilir hocam bildiğimiz instertitial çünkü

      • yasirkula dedi ki:

        Dediğim Destroy etme senaryosu sizde geçerli değilse o zaman maalesef ben de ilk defa böyle bir şey duyuyorum :/ Bu sorunun editörde değil gerçek cihazda olduğunu varsayıyorum, editörde böyle şeyler olabilir.

  6. Mustafa dedi ki:

    Hocam unity’de bir sorun yaşadım. Bir türlü çözemiyorum yardımcı olabilir misiniz?

    • yasirkula dedi ki:

      Bu konuyla ilgili internette gördüğüm çözümler şu şekilde:

      – Unity Hub hesabınızdan çıkış yapıp Unity ile alakalı her şeyi Görev Yöneticisi’nden kapatın ve Unity Hub’ı tekrar açıp giriş yapın
      – Unity Hub’ı yönetici olarak çalıştırın
      – VPN’e bağlıysanız bağlantıyı kesin
      – Installs Location’ı “C:\Program Files\Unity2019″dan “C:\Program Files”a çekin veya Unity2019 klasörünün izinlerinden o klasöre yazma ve okuma izinleri verin

      Eğer hiçbiri işe yaramazsa, şuradan elle istediğiniz sürümü indirebilirsiniz: https://unity.com/releases/editor/archive

      • Mustafa dedi ki:

        Unity editörü indirdim dediğiniz gibi yazma ve okuma izni verdim.Unity hub’u yönetici olarak çalıştırdım tüm problem çözüldü.Teşekkürler yasir hocam.

  7. Mehmet dedi ki:

    Merhaba hocam, uzun zamandır bir oyun üzerinde çalışıyordum. Sonunda bitirdim ve google play üzerinde sunacağım. Fakat yaptığım oyuna benzer oyunlar var. Bunları geçmek için nasıl reklam vermeliyim veya seo yapmalıyım? Yardımcı olur musunuz?

  8. Mustafa dedi ki:

    Merhaba hocam ben github için bir proje geliştirmeye karar verdim.Projeyi geliştirmeye bugün başladım şimdi assetler topladım sağdan soldan onları birleştirdim.Bulduğum assetler free asset ama atıf istiyor.Ben bunun için atıfta bulunmama gerek varmı?Ben bunu ticari bir projede kullanmıyorum ya sonuçta sıkıntı yaşar mıyım acaba ?

    • yasirkula dedi ki:

      Bence atıf yapmanızda hiçbir sakınca yok, hatta yapın ki hem yasal olarak doğru yolu izlemiş olursunuz hem de GitHub’ınıza giren bir kişi, lisanslara dikkat ettiğinizi görür ve bence bu size olumlu olarak yansır.

  9. Saltuk Bs dedi ki:

    Hocam bu her telefon yada tablet ekranı için çözünürlük problemini bir türlü çözemedim internette ne kadar bilgi varsa hepsini deniyorum, ama ayar çektiğim textim yada butonum çözünürlüğü değiştirdiğimde kayma yaşıyıyorum ekranın dışına çıkmasa dahi ekranda ne var ne yok kayıyor ve görüntü bozulmuş oluyor bunun ayarlanması için kesin bir yol yok mudur, şunu yaparsan sorun çözülür diyeceğin bir video yada sizin bir eğitiminiz varmı bunun için?

    • yasirkula dedi ki:

      Ben Canvas Scaler component’inin Scale Mode’unu “Scale With Screen Size” yapıp oradaki Width-Height slider’ının değerini de komple Height yapıyorum. Böyle yapınca, UI elemanlarını dikey eksende ekranın neresine koyarsam koyayım aynı yerde kalıyorlar. Yatay eksende de aslında aynı yerde kalıyorlar ama ekran en/boy oranına göre kenarlara olan uzaklıkları değişiyor. Ekranın hep solunda kalmasını istediğiniz bir şey için, Anchor Min Max X değerlerini 0 yaparsanız bu sorun da çözülür. Bu iki yöntem hemen hemen her senaryoyu çözmeye yetiyor.

  10. Saltuk Bs dedi ki:

    Hocam kolay gelsin, bir sorum olacaktı cok basit bir işlem olabilir ama inanın 2 gündür buna uğraşıyorum elimde 2d yaptığım bir oyunum var oyunumda görsellik katması acısından siyah arka plan üzerinden değişiklik yapark objeleri lightin sayesinde görünür hale getirdim yani anlayacağınız bol bol light kullandım, oyunumu unitynin kendi içerisinde çalıştırdığım zaman bu ışıklar görünürken android apk alıp telefonumda açtığımda ışıklar görünmüyor yani ışığın yansıyıp aydınlatması hiç bir şekilde görünmüyor ışıkları resmen yok sayıyor internette ingilzice bir kaç yerde bu hatayı gördüm fakat hic düzgün bir cevap bulamadım, sizin bir bilginiz varmı hocam bu apk aldığımda lightingler neden görünmüyor

    • yasirkula dedi ki:

      Belki Edit-Project Settings-Quality’de Android’in kalite ayarını Ultra yapmak çözer. Çok fazla ışıkla Forward yerine Deferred ışıklandırma kullanıyorsanız belki mobil cihazınız bunu desteklemiyordur. 2D oyunda ışık kullanacaksanız, URP’nin 2D ışıklandırma sistemini kullanmanızı öneririm. Aklıma başka bir şey gelmedi malesef. İsterseniz logcat’te hata olup olmadığına da bakabilirsiniz.

      • Saltuk Bs dedi ki:

        hocam cevabın icin teşekkür ederim sorunu kendim şu şekilde çözdüm sıkıntı yaşayan varsa anlatayım;
        light özelliklerinden bir global artı birde diğer ışıktan aynı şekilde ikitane kullanılırsa problem yaratıyor muş globalı sildim tekrar buidl aldım sorun çözdüldü tüm ışıklar görünür hale geldi

  11. Mustafa dedi ki:

    Hocam mobil oyun geliştiriyorum.Dönen debugları test etmem lazım.Unity arayüzünden telefonumu açabilmem lazım nasıl yapabilirim.Unity Remote varmış daha öncesinde ama artık desteklenmiyor.

  12. Alperen dedi ki:

    Unity 3D ile oyun yaptım. Ve oyunuma reklam birimleri eklemek istiyorum. Şimdi merak ettiğim konu, diyelim ki unity monetize ile 2 tane reklam firmasını seçtim. Unity nin kendi reklam birimleri ve ironsource reklam birimleri. Benim oyunuma unity reklam birimleri için sdk ve ironsource reklam birimleri için sdk larının 2 sinide eklemem gerekiyor mu? Yoksa unity monetize içinde otomatik ironsource a bağlanıp reklamı çekiyor mu? Veya bunun haricinde daha verimli bir firma var mı?(reklamları otomatik bir çok platformdan çeken).Popüler oyun yayıncıları, reklam birimleri için hangi firmayı tercih ediyor?

    • yasirkula dedi ki:

      Birden çok reklam firmasıyla çalışmak için bir mediation sistemi kullanabilirsiniz. Örneğin ironSource’da bu özellik var, hem kendi reklamını hem Unity Ads reklamlarını beraber desteklemenize yarıyor ve kendi dokümanları vasıtasıyla, iki servisin entegrasyonunu nasıl yapacağınızı anlatıyor. Gerçi bir süre önce Unity ironSource’u satın aldı diye hatırlıyorum o yüzden belki ikisi artık aynı SDK’i kullanıyordur. Benim önerebileceğim bir reklam firması yok çünkü sektörü bilmiyorum.

  13. Mustafa dedi ki:

    Merhaba yasir hocam öncelikle hayırlı ramazanlar dilerim.Unityde bir sorun yaşıyorum.Canvas objelerini her platforma uygun bir şekilde sabitleyebiliyoruz.Sprite,effect gibi objeleri nasıl sabitleriz.

    • yasirkula dedi ki:

      Hayırlı ramazanlar. Onlarda anchor veya Canvas Scaler yok haklısınız. Anchor’un bence en yakın karşılığı, kameranın ViewportToWorldPoint fonksiyonunun döndürdüğü noktayı referans alarak sprite’ı konumlandırmak olur. Canvas Scaler’ın karşılığı olarak ise kameranın Orthographic Size değeriyle oynamayı deneyebilirsiniz.

  14. Saltuk Buğra dedi ki:

    Yasir hocam kolay gelsin benim bir sorum var çokça araştırtım fakat tam istediğim bişi bulamadım, aslında benim istediğim unity 2d oyunum için parallax efekt ama şimdi paralax deyince basit sürekli aynı görsellerin döndüğü parallaxı kastedmiyorum, yapmaya istediğim ama bulamadığım olay tam olarak eski nokia telefonlardaki city bloxx oyununda evleri dizdikce şehir fotoğrafından başlıyor sonra gökdelenler ardından uçaklar vs derken ay mars … vs şeklinde biz yükseldikce arka plandaki bu saydığım şeyler tek tek geçiyor, bilmiyorum belkide parallax bile değildir bu dediğim ama nasıl yapacağımın mantığını bir türlü oturtamadım kafamda eğer aydınlatabilirseniz şu şekilde yapabilirsiniz diye çok sevinirim..saygılar

    • yasirkula dedi ki:

      Arkaplandaki uçak ve yıldız gibi objeler bence bulunduğumuz yüksekliğe göre rastgele spawn olup biz yükseldikçe aşağı doğru kayıveriyorlardır, onlarda karmaşık bir sistem olduğunu sanmıyorum. Arkaplanın renginin maviden siyaha geçmesi nasıl olabilir diye düşündüğümde, örneğin kameranın Background Color değerini yüksekliğe göre değiştiriyor olabilirler. Gradient bir renk geçişi varsa, belki özel bir Skybox shader’ı kullanılarak çözülebilir (örnek: https://github.com/keijiro/UnitySkyboxShaders). Veya renk geçişinin olduğu yükseklikte gradient bir sprite/texture kullanılabilir.

  15. Ali Uygun dedi ki:

    Kolay gelsin hocam. Ben projemde sqlite veritabanı kullanıyorum unity scene ekranında database çalışıyor ancak apk alıp telefona yükleyince telefonda database çalışmıyor bunun hakkında bir fikriniz var mı acaba

  16. Ferhan dedi ki:

    Hocam merhaba, öncelikle sağladığınız kaynaklar için çok teşekkürler. Optimizasyon rehberinizi uzun süredir inceliyorum ve optimizasyon konusunda kısmen takıntılı hâle geldim. Acaba mobil oyunlar için URP’de kullanabileceğimiz en performanslı shader hangisidir? Şu ana kadar URP Lit veya Flatkit kullanıyordum ancak yazılarınızdan birinde Toony Colors Pro 2’den bahsettiğinizi gördüm ve bu kütüphaneyi çok beğendim. Toony Colors ile oluşturduğumuz shaderlar performans açısından URP Lit’ten iyi olabilir mi? Eğer değil ise su, cam gibi özel materyaller için hangi shaderları önerirsiniz?

    • yasirkula dedi ki:

      Benim tahminimce Toony Colors Pro 2 shader’ı Lit shader’dan hızlıdır ama Simple Lit shader’dan yavaştır. Işık ve gölge etkileşimi olan bir shader istiyorsanız, Simple Lit tahminimce bulabileceğiniz en hızlı shader’lardan birisi olur. Su ve cam gibi materyaller için kullanılabilecek özel shader’ları çok inceleme fırsatım olmadı. Bazı projelerde şirketin satın aldığı bu tarz shader’ları kullandık ama başka benzer shader’lara göre ne kadar performanslı şeklinde kıyaslama yapma şansım maalesef olmadı. Bence aklınızda birkaç hazır shader varsa, Reddit veya Unity forumlarında bunlardan hangisinin daha performanslı olduğunu sorabilirsiniz.

      • Ferhan dedi ki:

        Peki Matcap veya Shader Graphların performansları nasıl mobilde onun hakkında bilginiz var mı? Matcap hiç denemedim ama bir kez shader graph kullandığımda performansı kötüydü diye hatırlıyorum. Shader graph’ın kodlanmış shader ile aynı hızda çalışması gerekiyor mantıken değil mi?

      • yasirkula dedi ki:

        Shader Graph’ın ışık alan shader’ları Lit shader kullanıyor, Simple Lit shader oluşturmak için şunun gibi eklentiler kurabilirsiniz. Matcap’ın performansı ışık alan shader’a göre daha iyi olur, Simple Lit’ten de daha iyi olabilir. Görüntüsü de bazen diğerlerinden daha iyi oluyor yalan olmasın, kendim ihtiyaç halinde kullanıyorum. Ancak Matcap sahnedeki ışığın şiddetinden veya ışık olup olmamasından etkilenmez bilginiz olsun. Shader Graph elle yazılan shader’la aynı mı olur derseniz, elle yazınca ince optimizasyonlar yapabilirsiniz belki. Kabaca shader yazacaksanız aynı olur bence.

      • Ferhan dedi ki:

        Anladım. En temiz yol shader kodlamayı ucundan bilip kendi basit shaderlarımızı kodlamak gibi görünüyor. Çok teşekkür ederim hocam.

  17. burak dedi ki:

    public bool reklamgosterildi = false;
    private InterstitialAd interstital;

    public void Start()
    {
    MobileAds.Initialize(InitializationStatus => { });
    this.RequestInterstitial();
    reklamshow();
    }

    void RequestInterstitial()
    {
    string reklamid = “REKLAM ID”;

    this.interstital = new InterstitialAd(reklamid);
    AdRequest request = new AdRequest.Builder().Build();
    this.interstital.LoadAd(request);
    }

    void reklamshow()
    {
    if (reklamgosterildi == false)
    {
    if (this.interstital.IsLoaded())
    {
    this.interstital.Show();
    reklamgosterildi = true;
    }
    }
    }

    Hocam oyunuma geçiş reklam kodları ekledim ve play store üzerinden güncelleme attım fakat geçiş reklamı çıkmıyor . Admob üzerinden reklam isteği geliyor ve eşleşiyor da fakat gösterim sıfır. Yukarıya kodlarımı ekledim herhangi bir hata mı yapıyorum ne yapmam gerekiyor ?

    • yasirkula dedi ki:

      reklamshow fonksiyonunu RequestInterstitial’ın hemen akabinde çağırdığınız için, reklamın henüz sunucudan indirilmek için yeterince vakti olmamıştır. AdMob dersimde bunun için coroutine kullanmıştım, örneğin onu deneyebilirsiniz.

  18. burak dedi ki:

    Hocam merhabalar, ben uygulamama banner ve interstital reklam koydum ve unity simulatorunde bunlar gözüküyor fakat apk alıp telefonumda denediğim zaman gözükmediler. Bende play store da yayınladım uygulamayı hata aynı şekilde devam ediyor. Kodları https://developers.google.com/admob/unity/banner?hl=tr bu siteden alarak eksiksiz bir şekilde yaptım. Sorunu nasıl çözebilirim ?

    • yasirkula dedi ki:

      AdMob dersimi artık desteklemiyorum, maalesef aklıma bir fikir gelmiyor. Logcat’e bakarak bir şeyler bulabilir misiniz bakmanızı öneririm.

  19. Mustafa dedi ki:

    Hocam canvas ile alakalı bir sorun yaşadım ben buna benzer bir sorunu daha öncede yaşamıştım ama video çekmediğim için konuyla alakalı size sorduğumda derdimi anlatamamıştım şimdi aklıma video çekip göstermek geldi.https://www.youtube.com/watch?v=12qs4ggbJZM&ab_channel=mustafay%C4%B1ld%C4%B1r%C4%B1m
    burada sorun baya garip geldi internetten de nasıl aratıcağımı bulamadım buna yapabileceğim bir çözüm yok mu?

    • yasirkula dedi ki:

      Attığınız videoda emülatörde 8×8 dama tahtasının tamamını görebiliyordum. Dama tahtası kare olduğu için, dikdörtgen ekranda yanlarda boşluk olması bana normal geldi. Siz o ekranda nasıl gözükmesini istiyorsunuz?

      • Mustafa dedi ki:

        Boşluk olmasın istiyorum hocam yanlar gözükmesin

      • yasirkula dedi ki:

        Ama cihaz dikdörtgen, cihaz 1024×800 piksel ise ve dama tahtası 800×800 piksel ise, yanlarda 224 piksellik bir boşluk illa ki kalıyor. Oranın siyah gözükmesini istiyorsanız, oraya siyah renkli bir Image objesini arkaplan olarak verebilirsiniz. Ekranın belli kısmının devre dışı bırakılması mümkünse nasıldır onu ben maalesef bilmiyorum.

      • Mustafa dedi ki:

        Ama hocam bi oyunu yaparken tek bir çözünürlüğe göre yapmıyolarmı?
        Mesela 1920*1080 de yaptıkları zaman biz bunu her çözünürlükte aynı şekilde görmüyor muyuz?Şuanda belki pek mantıklı şeyler yazmıyor olabilirim kusura bakmayın bilgim olmadığı için öğrenmek istediğim için soruyorum.

      • yasirkula dedi ki:

        UI elemanlarını anchor’layarak (mesela sağlık barını ekranın sol üst kenarına) farklı çözünürlükleri destekliyorlardır bence. Profesyonel anlamda arayüz tasarımım olmadı diyebilirim o yüzden yanlış da biliyor olabilirim. Ben en azından Canvas Scaler ve anchor’lar kullanarak mobil ekranlara arayüz tasarımı yapıyorum. Arayüzü hem iPhone hem iPad çözünürlüğünde kontrol ediyorum.

      • Mustafa dedi ki:

        Hocam değerli yorumunuz için teşekkür ederim.Sizde olmasanız sorunlarımıza çözüp bulamayacağız iyiki varsınız.

  20. Furkan dedi ki:

    Merbaba hocam. Nasılsınız? Oyunu buill aldıktan sonra çözünürlük değişiyor. Objeler büyüyor sanki. Çözüm öneriniz var mı? Oyun 3D. Önceden teşekkürler.

    • yasirkula dedi ki:

      Merhaba, Elhamdülillah teşekkür ederim. Bunlar UI objeleri ise, Canvas Scaler’ın ayarını Constant Pixel Size harici bir ayar yapmayı deneyebilirsiniz (ben Scale With Screen Size yapıp Match Width or Height değerini de 1 yapıyorum).

      • Furkan dedi ki:

        Hayır hocam UI objeler değil.Gameobject’ler büyüyor

      • yasirkula dedi ki:

        Objelerin ekranda dikey anlamda kapladığı alan hiç değişmemeli. Editörde örneğin ekranın yüksekliğinin %50’sini kaplayan bir obje, her türlü cihazda da ekranın yüksekliğinin tam olarak %50’sini kaplıyor olmalı. Kameranın Field of View’ını kodla değiştiriyorsanız veya kamera ayarlarıyla oynayan bir eklenti kullanıyorsanız o zaman bir şey diyemiyorum.

      • Furkan dedi ki:

        Hayır hocam hiç bir şeyi değiştirmedim.Kameranın Field of View’ını kodla sabitlesem mi diye düşünüyorum aslında.Ama sonradan ne gibi sorunlar çıkar bilmiyorum.

      • yasirkula dedi ki:

        Field of View’a dışarıdan elle müdahale edilmediği sürece o değer sabit kalır, sabit kalmıyorsa bir eklenti onu elliyordur.

  21. Mustafa dedi ki:

    Yasir hocam UI imageleri dışarıdan projeme dahil etmiş olduğum spriteları attığımda onun şeklini alıyor ama kendim 2D bir obje oluşturup onu attığımda onun şeklini almıyor bunun çözümü nedir?

  22. Mustafa dedi ki:

    Yasir hocam oyunumun sahne çözünürlük özelliklerini kodla nasıl değiştirebilirim?İstediğim şey oyunun bir kısmında 1920×1080 portrait çözünürlüğünde olsun sonraki sahnede 1920×1080 landscape olsun bunu kodla nasıl değiştirebilirim?

    • yasirkula dedi ki:

      Bu bir mobil oyunsa, Screen.orientation ile portrait ile landscape arası geçiş yapabilirsiniz. Aksi taktirde Screen.SetResolution fonksiyonunu kullanabilirsiniz.

  23. Mustafa dedi ki:

    Yasir hocam ses efektleri vs yapabilmek için fl studio programını indirdim.Program o kadar karmaşık ve zorki anlatamam.Her bir düğmenin özelliği var.Nasıl böyle bir uygulama yapmışlar anlıyamadım gerçekten çok emek vermişler.Oyun sesleri yapabilmem için önerdiğiniz site ve program varmı hocam?
    Youtube içerik stüdyosunda https://studio.youtube.com/channel/UCiBXy6f-naejWhn8PWsEyCQ/music oyunlarda kullanılabilecek ses ve müzikler var.

    • yasirkula dedi ki:

      Sesler konusunda ben tamamen çömez sayılırım, maalesef kendi sesinizi yapmak için benim bir önerim yok. Ben Asset Store’daki ses asset’lerini ve internetteki ücretsiz ses efekti sitelerini kullanıyorum.

  24. wolf dedi ki:

    hinge joint 2d kullanarak köprü yaptım . ağır cisimler bu köprüden geçerken aşağıya düşüyor. hafif cisimler düşmüyor. ağır cisimlerin düşmemesini nasıl yapabilirim.

    • yasirkula dedi ki:

      Joint’lerle çok fazla çalışmadım yalan olmasın. Yaşadığınız sıkıntı bana tanıdık gelmediği için maalesef yorum yapamıyorum.

  25. Gökmen dedi ki:

    https://www.hizliresim.com/omuzfvb Yasir hocam, simülasyon oyunum var fakat anr ve kilitlenme oranları çok yüksek.İlk 5’te olan anr ve kilitlenme oranınını özellikle ilk 2’de olan kilitlenme sorununu nasıl çözerim.Tavsiye verirseniz memnun olurum.

  26. Mustafa dedi ki:

    Hocam toplabtn diye bir butonum var bir canvasın içerisinde toplabtn’nin parenti bir boş obje bu halde iken toplabtn butonumla etkileşime geçemiyorum tıklayınca tepki vermiyor veya üzerine geldiğimde renk değiştirmiyo.Parentinden çıkardığımda çalışıyor bu neden oluyo olabilir?

    • yasirkula dedi ki:

      Parent’ında Canvas component’i varsa ama Graphic Raycaster component’i yoksa ondan olabilir veya parent’ın altındayken görünmez bir UI elemanı butonun üzerinde kalarak input’ları yiyor olabilir. Oyun esnasında EventSystem’in Inspector’unda farenin kimin üzerinde olduğu ve kime tıkladığı bilgilerini görebilirsiniz.

  27. Mustafa dedi ki:

    Hocam mesela ben çoklu hesap desteği olan bir oyun yapmak istiyorum.Veriler player prefs olarak kaydedilicek.Şimdi diyelimki benim paramiz diye bir player prefs değişkenim var.3 tanede hesap desteği olan bir oyunum olsun 3 hesabında parası ayrı olucak ama 3 tane aynı isimde paramiz değişkeni olamaz yani benim seçtiğim hesaba göre o paramiz değişkenini döndürmesi lazım bunu player prefs ile yapabilirmiyim eğer yapamazsam nasıl bir yol izleyebilirim?(istediğim şeye örnek olarak kingdom rush’u verebiliriz 3 tane hesap oynayabiliyor ama hiçbir şeklide diğeri diğerini etkilemiyor.)

    • Mustafa dedi ki:

      Hocam bi sorum daha var mobil veya pc oyunlarında daha doğrusu reklamlı olan oyunlarda veriler serverde mi tutuluyor yoksa playerprefs veya benzeri şeylerle cihazın kendisinde mi tutuluyor.

      • yasirkula dedi ki:

        Güvenliği önemli veriler serverda tutulmalı ve serverla client’ın iletişimi olabildiğince güvenli olmalı. Server imkanınız yoksa, binary serialization kullanmak da PlayerPrefs’e göre daha güvenli olur.

    • yasirkula dedi ki:

      Bence her kullanıcının kaydı, kullanıcı ismiyle oluşturulmuş bir XML/JSON vb. dosyada tutulmalı. PlayerPrefs ile de “KULLANICIADI_Key” şeklinde kayıt işlemi yapabilirsiniz ama ben ilk önerdiğim yöntemi kullanırdım.

      • Mustafa dedi ki:

        Çok teşekkür ederim hocam vaktinizi ayırıp en kısa sürede sorumu cevapladığınız için :)dediğinizi gibi verileri jsona kaydetmeyi öğrenip oradan tutmaya çalışacağım.Tekrardan teşekkür ederim iyi günler dilerim.

  28. Ali dedi ki:

    İyi günler hocam. Textleri buton olarak atayabilirmiyiz yada canvas’sız buton ekleyebilirmiyiz? Ekleyebilirsek nasıl ekleriz ?

  29. Mustafa dedi ki:

    Süleyman hocam Library\PackageCache\com.unity.package-manager-ui@2.0.7\Editor\Sources\UI\PackageSearchToolbar.cs(152,2): error CS1513: } expected
    hatası alıyorum bunun kaynağı package managerden olduğunu anladım ama bu scripti unity üzerinden nereden bulabilirim.Scriptslerde falan yok.

    • Mustafa dedi ki:

      Hocam package kısmında buldum şimdide bunun kodları çok karmaşık ne ne işe yarıyor pek anlamadım birde bir asseti import edince projeme 150 den fazla hata çıktı bi anda bunun nedeni ne olabilir ki?

      • Mustafa dedi ki:

        Hocam yaptığım değişiklikler yüzünden tüm projelerimde skybox gitti
        https://www.youtube.com/watch?v=K50KUcxLUuc&ab_channel=mustafay%C4%B1ld%C4%B1r%C4%B1m
        buna ne yapabilirim hocam?

      • yasirkula dedi ki:

        Package Manager’da bu tarz bir hata daha önce duymamıştım. Bu sizin kontrolünüzde olan bir package değil bildiğim kadarıyla. Ben napardım derseniz, projeniz yeni sayılırsa, başka bir yeni proje açıp ona geçerdim. Yoksa en son yaptığım değişiklikleri geri alırdım. Diğer bahsettiğiniz 150 tane hatayı bilmiyorum, Clear yapınca gitmeyenleri çözmeye çalışabilirsiniz. Videoda ise Window-Rendering-Lighting’den sahneye skybox eklemeyi deneyebilirsiniz.

      • Mustafa dedi ki:

        Tamamdır hocam dediğiniz yerden kaynaklıymış sorun.Aldığım hatalardan kaynaklı varsayılan atanmış skybox’ı devre dışı bırakmış.Teşekkürler hocam :).

  30. Samet TIKIZ dedi ki:

    Hocam selamlar,hazır oyun kaynak dosyaları ile çalışmalar yapıyorum sorumu sormadan önce belirtmek istedim,kısacası kodlama bilgim az.

    Simulator oyununda Level başladağında minibüs datadan instantiate komutuyla sahneye klonlanıyor.Ben durağa geldiğinde bir ara sahne koymak istedim her şey tamam ama klonlanan minibüsü durağa geldiğinde yok etmek ayrı bir insantiate ile tekrar klonlamak veya SetActive yöntemiyle false yapıp ara sahne bitince true olsun istiyorum.Ama klonlanan asıl sahnedeki minibüsü scriptte kod ile nasıl buldurabilirim örnek kod ile açıklama yapabilir misiniz ? Teşekkür ederim şimdiden

  31. Mustafa dedi ki:

    Süleyman hocam benim yaptığım oyunu mobile uyarlasam diyorum nerelerini değiştirmem gerekir mesela.Birde sadece mobil oyun tasarlarken ınput sisteminde mi değişiklik oluyor mesela bizde diyoruz ya pc de oyun yaparken Input.GetMouseButtonDown() gibi bunun mobildeki karşılığını unuttum.Yani sadece input sistemi mi değişiyor?

    • yasirkula dedi ki:

      Aklıma gelen en bariz değişiklik, dediğiniz gibi input sisteminde oluyor. GetMouseButtonDown ve mousePosition kodları Android’de de doğrudan çalışıyor, belki kodunuzu hiç güncellemeniz bile gerekmez. Onun dışında UI’ın mobilde kullanılabilir olması ve oyunun mobilde takılmaması için gerekirse optimize edilmesi de mobili PC’den ayırabilen diğer özellikler.

  32. Mustafa dedi ki:

    Yasir hocam 3.5 aydır uğraştığım projem nihayet bitti. Bakıp incelemek isterseniz https://redspid.itch.io/dungeon-wars

    • yasirkula dedi ki:

      Hayırlı olsun 🙂 Oyunu geliştirmeye devam etmeyi düşünüyorsanız, polishing de yapabilirsiniz, yani görsel ağırlıklı olarak kullanıcı deneyimini iyileştirmeye çalışabilirsiniz. Bu, grafiksel hataları çözmek olur, metinlerde renk teorisinden faydalanmak olur, arayüze/oynanışa ufak animasyonlar eklemek olur vs. Umarım oyununuz beklediğiniz ilginin çok daha fazlasını görür, tekrardan hayırlı olsun 😀

      • Mustafa dedi ki:

        Çok teşekkürler hocam yorumunuz için.Farklı şeyler denemek istedim normal şartlarda bu tarz sıra tabanlı oyunlarda 5 slot koyuyorlar ben 15’e çıkardım bunu çıkarınca tabi bambaşka hatalar almaya başladım sonra vuruş sistemiydi falan sayısız hata aldım.Eğer direk 5 slot olarak tasarlamış olsaydım çok daha kısa sürede oyunu bitirebilirdim daha güzel olabilirdi belki ama o zamanda neden slot sayılarını arttırmadıklarını anlamazdım.Az çok mantık oturdu hocam dediğiniz gibi diğer geliştiriciler oynanışa ağırlık verdikleri için gereksiz detaylara uğraşmıyolar buda ister istemez projenin dahada gelişmiş olmasını sağlıyor.Teşekkürler hocam tekrardan yorumunuz için.

  33. Mevlüt Uçar dedi ki:

    Yasir hocam merhabalar. Programımızda, Y ekseninde Scroll ile text kaydırıyoruz. Ancak bir problemimiz var, Programımızda, Y kordinatı 65536’ya geldiği anda kaydırmakta olduğumuz text duruyor ve ilerlemiyor. Unity’nin standart limiti 16Bit olduğu için 65536 limitine takılıyoruz diye biliyorum. UInt32 ile sorun çözümü yapılabiliyormuş sanırım. Unity 2020 ve 2021 sürümlerini kullanıyoruz. UInt32’nin kullanımını nasıl yapabiliriz? Gerekli kodu nereye yazmamız gerekiyor bilginiz var mı acaba? Teşekkürler.

    • yasirkula dedi ki:

      Transform.position.y değeri 65536’yı geçince de çalışmalı ancak takılarak hareket etmeli. Canvas’larda 65536 vertex limiti var (en azından bir ara vardı, değişti mi bilmiyorum), yaşadığınız sıkıntı onla mı alakalı bilmiyorum ama siz scroll yapınca sorun gerçekleşiyor dediğiniz için emin olamadım.

      • Mevlüt Uçar dedi ki:

        Evet yaşadığımız sıkıntı vertex limitinden kaynaklanıyor. Butonlar ile hız ayarlı kaydırma işlemi yapıyoruz, koordinat 65536’ya geldiğinde ekran kaydırma duruyor, tekrar butona tıkladığımızda ilk tıklayışta hareket olmuyor ; ikinci tıklayışta 2x hızda hareket etmeye başlıyor. Bizim burada çözmek istediğimiz sıkıntı vertex sınırını artırmak aslında. UInt32 ile 65536 limitini 4,294,967,295’e çıkarabiliyormuşuz fakat kullanımı hakkında bilgimiz yok. Daha önce deneyimleme şansınız olduysa yardımlarınızı bekliyoruz. 🙂

      • yasirkula dedi ki:

        Normal Mesh’lerde indexFormat ile vertex limiti artırılabiliyor (ancak 32 bit’i eski Android cihazlar desteklemiyor) ama UI’da bu mümkün değil gibi duruyor: https://forum.unity.com/threads/please-allow-indexformat-uint32-for-unityengine-ui-graphic-meshes.1156700/. İsterseniz attığım linke mesaj atıp konuyu hortlatın. Eğer nested canvas kullanırsanız, her nested canvas’ın kendi içinde 65536 vertex limiti olur sanırım. Aklıma gelen başka bir çözüm maalesef yok.

  34. Eren ALKAN dedi ki:

    Hocam merhaba, unityde singleton yerine dependency injection kullanılıyormuş. Kimileri bunun daha iyi bir yöntem olduğunu söylüyor. Türkçe unity tarafında kaynak yok. Dependency injectionın unity tarafında nasıl kullanıldığı hakkında bir yazı yazar mısınız?

    • yasirkula dedi ki:

      Daha önce duyup bir iki kez incelemiştim ama nasıl çalıştığını yine unuttum. Benim çalıştığım projeler maksimum orta seviyede oluyor, çok kompleks projelerde çalışmadım. Bu projelerde de singleton işimizi gördü şimdiye kadar.

  35. Ali Uygun dedi ki:

    Kolay gelsin hocam size bir sorum olucak. Excel dosyasını unity projeme bağladım ekleme ve search işlemlerini yapabiliyorum ancak Diğer sahnede bu verilerin hepsini nasıl gösterebilirim ya da hangi UI aracıyla gösterebilirim ?

    • yasirkula dedi ki:

      Maalesef Excel, Word vb. dosyaları Unity’de hiç kullanmadım. Asset Store veya GitHub’da yardımcı olacak hazır asset’ler vardır belki ama aklıma gelen bir şey şu anda yok.

  36. Barış Biltekin dedi ki:

    Selamlar
    BezierSolution namespace ‘inde bulunan BezierWalkerWithSpeed sınıfındaki OnPathCompleted metoduna bir fonksiyon atayarak buradan şu şekilde bir sınıfa ulaşmaya çalıştım fakat sınıfı görmüyor. Nerede yanlış yapıyorum?
    GameObject.FindGameObjectWithTag(“GAMECORE”).GetComponent();

    • yasirkula dedi ki:

      BezierSolution plugin’i Assembly Definition File kullandığı için, klasörü dışındaki script’lere erişememekte. Kaynak kodunu düzenleyecekseniz içindeki BezierSolution.Runtime ve BezierSolution.Editor dosyalarını silmeniz (EKLEME: ve plugin’i Plugins klasörünün dışına taşımanız) lazım. Ama bence bunun yerine, BezierWalkerWithSpeed objenizin onPathCompleted event’ine Inspector’dan veya dışarıdan kod ile bir fonksiyonu kaydedin. BezierSolution’dan dışarıya erişemeseniz bile, dışarıdan BezierSolution’a erişebilirsiniz.

  37. Mustafa dedi ki:

    Hocam 2d oyunlarda tam olarak şöyle bir animasyon yapmak istiyorum https://robertpinero.itch.io/mv-thief-sprites
    bu sitede adam yapmış 2 boyutlu karakter sağa dönünce animasyonun sağdan görünümüne geçiyor sola basınca soldan görünümüne geçiyor.Bu kontrolü neyle yapmış olabilir.Animasyonlarda kullandığımız animasyon kontroller kullanmıyor galiba mantığını anlıyamadım sizin bilginiz varmı bu konu hakkında?

    • yasirkula dedi ki:

      Transform’un Scale X değerini -1 ile çarpıyor olabilir mi? Veya Sprite Renderer’ın Flip X değerini de açıyor olabilirler.

      • Mustafa dedi ki:

        Hocam ama o yazdığınız 2 komutta rotasyonun yaptığının aynısını yapmıyor mu?Bunlarda herhangi bir gecikme olmadan dönüş sağlıyor animasyonda bozulma olmuyor baya garip duruyor gerçekten.

      • yasirkula dedi ki:

        Sitede arka arkaya 4 karakter daire çizerek yürüyorlar onu diyorsunuz diye varsayıyorum. Scale X yapmak Rotation vermek ile aynı etkiyi verir o konuda haklısınız. Ben halen ama o yürüme animasyonunda Scale/Rotate vermenin nerede sıkıntı oluşturabileceğini tam anlayamadım 😀

      • Mustafa dedi ki:

        Hocam burda şöyle bir şey mi yapmışlar acaba animasyon haric karakter eğer sol ok tuşuna basarsa spriterenderer ımagesi sola dönük haline geçiyor sağ ok tuşuna basarsa spriterenderer ımagesi sağa dönük haline geçiyor.Ama burda animasyondan bağımsız oluyor gibi çünkü karakter sağa dönükkende yukarı dönükkende vurabiliyor.Ve ayrıyeten bu karakter yukarı baktığında arkadan görünümüne geçiyor arkadan görünümünde iken vurma tuşuna basınca saldırma animasyonu çalışıyor.Her farklı görünüm için mi animasyon oluşturmuşlar?Yoksa tek bir animasyon oluşturup her görünüme mi ayarlamışlar?
        böyle sorarsam biraz daha mantıklı sormuş olurum galiba.

      • yasirkula dedi ki:

        Anladım. AnimatorController’da parametreler oluşturabiliyoruz. Örneğin yön için 0 (sol), 1 (yukarı), 2 (sağ) ve 3 (aşağı) değer alabilen bir Integer oluşturmuş ve buna koddan değer vermiş olabilirler. Saldırı animasyonunda da bu int’in değerine göre 4 yöne saldırı animasyonundan doğru olanı çalışıyor olabilir. Veya hiç parametre kullanmadan, direkt koddan Animator.Play veya Animation.Play ile ilgili animasyonu oynatıyor olabilirler.

  38. Mustafa dedi ki:

    Süleyman hocam unity’de button componentinin kendi özellikleri varya biz bunlara kod dışında müdahale edebiliyoruz.Ama kod içerisinde iken nasıl müdahale edebiliriz.
    Şöyle bir şey yazamıyorum.

    void buttonuzerinegelince(gameObject btn)
    {
    if(btn.name==”kirmizi”)
    {
    btn.getComponent().normalColor=new Color32(255,0,0);
    btn.getComponent().highlightedColor=new Color32(0,0,0);
    }
    else if(btn.name==”mavi”)
    {
    btn.getComponent().normalColor=new Color32(0,0,255);
    btn.getComponent().highlightedColor=new Color32(0,0,0);
    }
    else if(btn.name==”yesil”)
    {
    btn.getComponent().normalColor=new Color32(0,255,0);
    btn.getComponent().highlightedColor=new Color32(0,0,0);
    }
    }
    benim yapmak istediğim şey button üzerine gelince butonun adına göre işlem yapması ama bu yazdığım özelliklerin koddaki karşılığını bulamadım.Nasıl bir kod yazabilirim hocam?

    • yasirkula dedi ki:

      Önce btn.colors’ı bir ColorBlock değişkeninde tutup onun normalColor ve highlightedColor değişkenlerini değiştirebilirsiniz. Akabinde bu ColorBlock objesini geri btn.colors’a değer olarak verebilirsiniz.

      • Mustafa dedi ki:

        Verdiğiniz kodu eksizsiz bir şekilde yazdım sorunsuz bir şekilde çalıştı.Sağolun hocam:)

  39. Wolf dedi ki:

    Unity kodu derlemiyor. Kod da değişiklik yaptığım zaman kodu derliyordu artık derlemiyor. Bu sorunu nasıl çözebilirim.

    • yasirkula dedi ki:

      Eğer Unity’e geri dönmeden Unity’nin arkaplanda otomatik olarak derlemesini diyorsanız, Unity’i tekrar başlatabilirsiniz. Aksi halde konsolda hatalar varsa onları çözmeniz gerekiyor.

  40. Samet TIKIZ dedi ki:

    Hocam merhabalar, Ben oyunda garaj sahnesine datadan araba çekiyorum ve sonraki arac butonuna bastığımda ise önceki araca tag vererek gameobject.setactive yöntemiyle yok ediyorum ama bir daha o arabaya gelmek istediğimde root prefabı kapatmış oluyor ve araç gelmiyor düzgün çalışması için nası bir methot kullanmalıyım? Teşekkürler şimdiden 🙂

    • yasirkula dedi ki:

      Dediğiniz gibi kapalı objelerde FindWithTag çalışmıyor. Arabalara boş parent GameObject’ler verip tag’ı ona verirseniz ve onu kapatmazsanız, bu parent vasıtasıyla arabalara erişebilirsiniz. Aksi taktirde, spawn edilen arabaları bir List veya Dictionary gibi listede saklayıp oradan erişmelisiniz.

  41. Mustafa dedi ki:

    Süleyman hocam unity’de mouse ile bi yere tıkladıysam başka bir yere tıklamadığım sürece ‘enter’ tuşuna bastığımda mouse ile tıklamış kabul ediyor.Garip olan şu ki yönlendirme tuşları+enter tuşuna bastığımda o yerlerdeki nesneleri de tıklanmış kabul ediyor ben bu özelliği kapatamaz mıyım?Enter tuşunun bu tıklama özelliğini kapatırsam sorun kökten çözülebilir gibi geliyor.

  42. Mustafa dedi ki:

    Hocam oyun projemde çoğu şeyi bitirdim artık az bi eksiğim kaldı.Bir sorun yaşadım onu anlatayım ilk önce.Ben sıra tabanlı bir savaş oyunu yapıyorum 5 vs 5 lik bir savaş olduğunu düşünün.Karakterin sırası gelince diğerinin yanına gidip ona saldırıyor.Ön taraftakilerde sıkıntı çıkarmıyor ama arka taraftakilere gelince sıkıntı yaşıyorum.Sprite rendererdan kaynaklı bir sorun yaşıyorum.Atıyorum Saldıran karakterin kolu bacağı gözüküyor savunan karakterin kılıcı,kafası,vücudu gözüküyor.Buna çözüm olarak şöyle bir şey düşündüm mesela benim 5 karakterim olsun 5 tanede vücut parçam olsun.
    karakter 1 parca1 sp1 parca2 sp2 parca3 sp3 parca4 sp4 parca5 sp5
    karakter 2 parca1 sp6 parca2 sp7 parca3 sp8 parca4 sp9 parca5 sp10
    karakter 3 parca1 sp11 parca2 sp12 parca3 sp13 parca4 sp14 parca5 sp15
    karakter 4 parca1 sp16 parca2 sp17 parca3 sp18 parca4 sp19 parca5 sp20
    karakter 5 parca1 sp21 parca2 sp22 parca3 sp23 parca4 sp24 parca5 sp25
    bu şekilde yaparsam karakter 5 her zaman önde olucak saldırsada savunsada bu şekilde yapmam mantıklı mı sizce?yada farklı bir çözüm öneriniz varmı hocam?

  43. wolf dedi ki:

    Android projeyi çıktı alabiliyorum fakat admob eklentisini eklediğim zaman projeyi çıktı alamıyorum.
    Sorun nerden kaynaklı olabilir?

    • yasirkula dedi ki:

      Konsolda aldığınız hata mesajlarından birinde hatanın kaynağı yazmalı.

      • wolf dedi ki:

        CommandInvokationFailure: Gradle build failed.
        C:\Program Files\Java\jdk1.8.0_351\bin\java.exe -classpath “C:\Program Files\Android\gradle-7.6-rc-4\lib\gradle-launcher-7.6.jar” org.gradle.launcher.GradleMain “-Dorg.gradle.jvmargs=-Xmx4096m” “assembleRelease”

        stderr[
        Warning: Mapping new ns …

        hata mesajı ve şimdi de apk çıktı alamıyorum.

      • yasirkula dedi ki:

        Attığınız kısım asıl hata mesajını içermiyordu. Asıl hata mesajı ya konsoldaki başka bir hata mesajında olabilir ya da bu attığınız hata mesajının daha aşağısında olabilir.

  44. Mustafa dedi ki:

    Hocam ben şimdi 15 tane leveli olan bir oyun yapmaya çalışıyorum.Şuanda oyunumun ilk leveli bitti sayılır.İkinci leveldeyim kod tekrarı çok fazla var ve ben bunları nasıl tek bir kodda toplayabilirim.Yani şunu demek istiyorum.Ben tüm sahneler adında bir script oluştursam SceneManager.GetActiveScene().buildindex; komutu ile de bu indexe uyan sahnedeki tüm verileri çeksem diyorum.Bunu yapmak için benim aklıma inheritance geldi ama onuda yapamıyorum.Çünkü hepsi monobehaviourdan alıyor değerleri sizce buna nasıl bir çözüm üretilebilir?

    • yasirkula dedi ki:

      Problemin detaylarını bilmediğim için spesifik bir örnekte bulunamıyorum ama verdiğiniz tanıma bence de inheritance uyuyor. 2 class X script’inden türeyecekse ve aynı zamanda MonoBehaviour olmaları gerekiyorsa, X’i MonoBehaviour’dan türeterek bunu başarabilirsiniz. ScriptableObject de belki probleminize çözüm olabilir, onu da araştırabilirsiniz.

  45. Mustafa dedi ki:

    Hocam unity’de run time zamanında bir sahneden diğer bir sahneye geçiş yapıyoruz ya arkaplanda önceki sahnenin verileri falanda tutuluyor bu güzel birşey ama ben bölümü kaybettim oyunu sıfırdan başlatmam gerekli sceneManager.Loadscene(sceneManager.GetActiveScene().buildindex); verdiğimde
    sahneyi geri yüklüyor ama oyunu ilk açtığım gibi değil.Bunun için değişkenler oluşturup sıfırlanması gereken değişkenleri sıfırlamak ilk aklıma geldi.Ama şöyle düşününce bunu sıfırdan açmakda olabilmeli bence.Hocam böyle bir şey var mı?

    • Mustafa dedi ki:

      NullReferenceException: Object reference not set to an instance of an object
      UnityEditor.Graphs.Edge.WakeUp () (at :0)
      UnityEditor.Graphs.Graph.DoWakeUpEdges (System.Collections.Generic.List`1[T] inEdges, System.Collections.Generic.List`1[T] ok, System.Collections.Generic.List`1[T] error, System.Boolean inEdgesUsedToBeValid) (at :0)
      UnityEditor.Graphs.Graph.WakeUpEdges (System.Boolean clearSlotEdges) (at :0)
      UnityEditor.Graphs.Graph.WakeUp (System.Boolean force) (at :0)
      UnityEditor.Graphs.Graph.WakeUp () (at :0)
      UnityEditor.Graphs.Graph.OnEnable () (at :0)

      Hocam bide bu oyun başladığında bir kereliğine mahsus hata veriyor.Nerede yanlış yapmış olabilirim?

    • yasirkula dedi ki:

      Static değişkenleri diyorsanız onları otomatik reset’leyen bir sistem benim bildiğim kadarıyla yok. Oyuna full restart atmaya yarayan bir yöntem de bilmiyorum maalesef. Reset’leme işlemini elle yapmalısınız gibime geliyor.

  46. Eren ALKAN dedi ki:

    Hocam addressable konusu hakkında türkçe kaynak yok. Rica etsem o konuda bir yazı yazar mısınız? Ayrıca hocam sizi youtube’da da görmek isteriz.

    • yasirkula dedi ki:

      Addressables’ın ders yazılabilecek güzel bir konu olduğu konusunda haklısınız. Şu anda buna pek imkanım yok, ileride belki yazma imkanım olabilir ama yakın zamanda beklemenizi önermiyorum.

  47. Mustafa dedi ki:

    Hocam prefab nesnemi birden fazla kez kullanıyorum.Ben bu objemin özelliklerini statik verirsem.Birinin canı azaldığında aynı prefab’e bağlı nesnelerinde canı azalıyor.Ben bunları public yaptığım takdirde obje bulunamadı hatası alıyorum.Başka bir yolu var mıdır bunun aynı prefab’den olucaklar ama canları birbirinden bağımsız olucak.

    • Mustafa dedi ki:

      https://www.youtube.com/watch?v=c4XwOm3e8iI&ab_channel=mustafay%C4%B1ld%C4%B1r%C4%B1m

      hocam problemi görsel olarak göstermek için videoya çektim problem tam olarak video anlattığım şekilde çıkıyor.

      • Mustafa dedi ki:

        Bide hocam benim bu oyunum neredeyse bitmek üzere vuruş sistemi ve animasyonlar kaldı bi.1.level için 4000 5000 satır kod yazdım 15 level yapmayı düşünüyorum 15000 satır hatta daha da fazla kod çıkabilir sizce fazla mı olmuş.Size sorayım dedim?yani şuanda ben 20 karakterin işlemleriyle uğraşıyorum beraberinde oyuna 76 karakter daha ekledim onlarında vuruş sistemi vs yapılıcak.Dediğimden daha da fazla kod çıkabilir:)

      • yasirkula dedi ki:

        Satır sayısı oyununuzun karmaşıklığına bağlı bence. 15000 kulağa az gelmiyor; eğer kendini tekrar eden çok fazla kod yazdıysanız kodunuz fazladır, aksi halde normal de olabilir.

      • yasirkula dedi ki:

        Hata veren satırdan önce Debug.Log(“asd”, item.transform); yapıp konsola gelen “asd” log’una tıklayın. “item” kim ise o Hierarchy veya Project panelinde vurgulanacak. Ardından o objeye tıklayıp o objede gerçekten bir AskerScript var mı ve varsa asker1savas değişkeninin değeri var mı kontrol edin. Eğer bu bir prefab ise, prefab’ların OnEnable’ı bildiğim kadarıyla çağrılmaz.

  48. Mustafa dedi ki:

    Hocam ben internetten 2D göze hitap eden spritelar bulup indiriyorum.Bu spritelar 45×45 gibi küçük oluyolar.Ben bunları oyunlarımda kullanabileceğim bir boyuta getirdiğim zaman resmin bulanıklığı artıyor.Bunun önüne nasıl geçebilirim.Kullandığınız bir program var mı?

    • yasirkula dedi ki:

      Ben resim düzenleme işlerimi Photoshop üzerinden yapıyorum ama resim büyütmek daha önce yaptığım bir şey değil. Şu videoda tanıtılan servisleri kontrol edebilirsiniz: https://www.youtube.com/watch?v=5LrPKoNvPPc

      • Mustafa dedi ki:

        Hocam bu https://pixlr.com/tr/e/ siteden yapıyorum bende resimaç/sayfa/sayfayıyenidenboyutlandır diyorsun orda istersen kendi standart ölçümlerini bozmadan arttırım yapıyor 50×50 x’eksenini 150 yaparsam y eksenide 150 oluyor. Ama orda oranları koruyu kapatırsan kendin ölçüm verebiliyorsun.

      • yasirkula dedi ki:

        Yani bu site ile çözümü buldunuz diye anlıyorum, hayırlı olsun 🙂 Kullandığınız siteyi paylaştığınız için teşekkürler ^^

      • Mustafa dedi ki:

        Yok hocam o problemi hala çözemedim.Size sorduktan sonra technopattan soru sormuştum.Aynı size sorduğum şekilde biri yazdı photoshop gibi bir kaç program yazdı tutoriallerini izle dedi.Onu öyle halletmeye çalışacağımda benim o siteyi paylaşma sebebim siz dediniz ya “resim büyütmek daha önce yaptığım bir şey değil”ondan yazdım.Mesela resimleri bu dediğim siteden büyütüp netleştirmesini de photoshopdan yapabilirsiniz diye düşündüm.

  49. Mustafa dedi ki:

    Merhabalar hocam,bende şöyle bir sorun var.Daha doğrusu sorun değilde bu istenmeyen bir şey olduğu için çözümü ne onu sorucam hocam.Şimdi build almış olduğumuz bir projeyi biz defalarca kez açabiliyoruz.Bunun önüne nasıl geçebiliriz?

  50. Mustafa dedi ki:

    Selamın aleyküm hocam.FindGameObjectWithTag(tek),FindGameObjectsWithTag(çok) bu iki kodun biri bu tag’e sahip tek bir obje döndürürken diğeri bu tag’e sahip birden fazla obje döndürüyor ya hocam.Ona benzer GameObject.Find komutunun içerisine biz string bir değer giriyoruz.Ve GameObject.Find komutu tek bir değer döndürüyor ya.Ben bu isme sahip birden fazla gameobject döndürmek istiyorum ama tag kullanmadan. Bunu nası yapabilirim tam olarak var mı yolu? Ben internetten baktım ama bulamadım.

    • yasirkula dedi ki:

      FindObjectsOfType yapıp sonra dönen objelerin isimlerini tek tek kontrol etmeniz lazım ama performansının iyi olacağını sanmıyorum. Alternatif bir çözüme gitmenizi öneririm. Bu objeleri Awake’te static bir List’e ekleyip OnDestroy’da listeden kaldırabilirsiniz mesela.

  51. Mustafa dedi ki:

    Hocam ben karakterin öncelik sırası ile alakalı bir sorun yaşıyorum.Aynı kodumda iki objem var ve istediğim şeyin belirli şartlar altında diğer objenin önüne geçmesi gerekiyor.Daha iyi anlatabilmek adına video çektim.https://www.youtube.com/watch?v=W9Cqh9EIMqA
    buradaki sorunu nasıl çözebilirim

  52. Sıddık dedi ki:

    Selamun aleyküm hocam, ben main camera ‘nın hem player’ ı belirli bir mesafeden takip etmesini hem de player ile birlikte dönmesini sağlamak için şu şekilde kod yazdım fakat takip etmesine rağmen dönmüyor. Kodum şu şekilde;
    public Transform player;
    private Vector3 offset;
    void Start()
    {
    offset = transform.position – player.transform.position;
    }

    void LateUpdate()
    {
    transform.position = player.transform.position + offset;
    }
    void Update()
    {
    transform.LookAt(player);
    }
    }

    • yasirkula dedi ki:

      Aleykümselam. “offset = player.transform.InverseTransformDirection(transform.position – player.transform.position);” ve “transform.position = player.transform.position + player.transform.TransformDirection(offset);” deneyebilirsiniz.

      • cazzsaa dedi ki:

        hocam aslında aradığım bu tarzda bir takip değil. Bu kod ile sanki main camera, player’ ın child’ ı gibi topla beraber dönüyor. Benim istediğim ise mesela araba sürerken araba sağa döndüğünde main camera da araçın döndüğü yönü algılasın ve onunla aynı yönde dönsün gibi. Yani benim oyunumda player harita gereği sağa döndüğü zaman kamera da player ile mesafesini korusun ama sağa dönsün. oyuncunun bakış açısı rahatlasın.

      • yasirkula dedi ki:

        Kamera yukarı aşağı da iniyor, siz onu istemiyorsunuz diye anlıyorum. Şu kodu deneyebilirsiniz:

        Vector3 forward = player.transform.forward;
        forward.y = 0f;
        transform.position = player.transform.position + Quaternion.LookRotation(forward) * offset;

      • Sıddık dedi ki:

        Hocam hiçbir etkisi olmadı bu son yazdığınız kodun. Bir de bu kodların daha fazlasına nasıl ulaşabilirim?

      • yasirkula dedi ki:

        Ben belki yapmak istediğiniz şeyi tam anlamamışımdır. Aklıma GTA Vice City gibi bir araba kamerası geliyor benim hep. Transform class’ındaki tüm fonksiyonlara şuradan erişebilirsiniz: https://docs.unity3d.com/ScriptReference/Transform.html

      • cazzsaa dedi ki:

        Aynen benim de aradığı o tarz bir kamera takibi doğru anlamışsınız ama benim oyunumda player bir “sphere” ve bu player bir mesela labirentte dönerken kamera da player ile aynı yönde aralarındaki mesafeyi koruyarak takip etmesini istiyorum.

      • yasirkula dedi ki:

        Hmm, yuvarlanarak ilerleyen bir sphere’de Transform’un ileri yönünden bence bahsedemeyiz ama isterseniz Rigidbody’sinin velocity vektörünü ileri yönmüş gibi varsayıp player.transform.forward’ı onunla değiştirebilirsiniz.

      • cazzsaa dedi ki:

        nasıl yani anlamadım şimdi ben nasıl bir yol izleyeceğim?

      • yasirkula dedi ki:

        Yorumumda dediğim gibi, player.transform.forward yerine Rigidbody’nin velocity’sini kullanmayı deneyebilirsiniz. Başka bir şey aklıma gelmiyor.

      • Sıddık dedi ki:

        Anladım hocam yardımınız için teşekkür ederim. Bir de bir şey daha soracağım bu sorudan bağımsız olarak ben hazır kod kullanmak yerine kendim kod yazmak istiyorum ama bunu nasıl sağlayabilirim? Yani mesela “transform.LookAt(target);” şu tarz bir kodu sizin attığınız linkteki kodlar arasından seçip kendim yazmak istiyorum ama neye göre transform’ u kullanmak gerekiyor, neye göre LookAt kullanmak gerekiyor? Ben bunu çözemedim. Bu zamana kadar hazır kod kullandım. Kendim kod yazmak istiyorum artık. Yardımcı olabilir misiniz?

      • yasirkula dedi ki:

        Bence kendi kodunuzu yazmak tecrübe ile oluyor. “LookAt fonksiyonu A objesinin B’ye bakmasına yarar” bilgisini hazır kodlardan, internetten veya deneye yanıla öğrendiniz ve daha sonra aynı bilgiye ihtiyacınız olduğunda ya aklınıza direkt gelecek ya da “daha önce X projesinde böyle bir şey yapmıştım, bakayım napmışım” diyeceksiniz. Benzer şekilde, “Transform component’i objenin 3D uzaydaki konumunu tutar” bilgisini öğrendiğiniz için, ileride objenin 3D uzaydaki konumunu, rotasyonunu veya boyutunu değiştirmek istediğinizde aklınıza Transform gelecek. Bence bol bol tutorial izleyip öğrendiklerinizi pratiğe dökerek kendinizi geliştirmeye devam edebilirsiniz, bence bu esnada illa ki daha önceki tecrübelerinizden faydalanarak kendi kodlarınızı da farkında olarak veya olmayarak yazacaksınız.

      • cazzsaa dedi ki:

        Anladım zamanla olacak diyorsunuz yani kısaca.

      • yasirkula dedi ki:

        Aynen, benim düşüncem öyle en azından.

      • sıddık çiçek dedi ki:

        Anladım çok teşekkür ederim hocam yardımınız için.

  53. Mustafa dedi ki:

    Merhaba hocam,ben instantiate komutumla oluşturduğum karakterimi bir konumun child’i yapmaya çalışıyorum ama böyle bi hata alıyorum.

    “Setting the parent of a transform which resides in a Prefab Asset is disabled to prevent data corruption (GameObject: ‘Amidala’).
    UnityEngine.Transform:SetParent (UnityEngine.Transform)”

    oluşturulan karakterler bir parent’a atanamaz diyor.Ben bunu nasıl devre dışı bırakabilirim.Karakterimin istediğim konumun child’i olması gerekiyor.

    • yasirkula dedi ki:

      Hatanın dediğine göre, Instantiate ettiğiniz objenin parent’ını değiştirmiyorsunuz, o objeyi Instantiate ederken kullandığınız prefab’ın parent’ını değiştiriyorsunuz.

  54. Mustafa dedi ki:

    Merhaba hocam ben şuanda projem gereği oyun yapıyorum.Yaptığım oyunda level sistemi olucak ve veri kaydı olucak.Verileri ilk başta kendi local serverimde tutmak istiyordum ama şimdi bunun için php bilmek gerekiyor ve henüz php görmedik.Bende bunları şimdilik bir metin belgesine kaydedeyim diyorum.Bu sitede varmı basit bir şekilde sıradan bir metin belgesine veri kaydetme yoksa başka sitede varmı istediğim türde kayıt yapabileceğim bildiğiniz ?

  55. Mustafa dedi ki:

    Oyunumda veri kaydetmem gerekli.Ama unity hakkında eğitim veren neredeyse herkes PlayerPrefs ile veri kaydetmenin güvenli olmadığını verilerin kolaylıkla değiştirilebileceğini söylüyor.Tam olarak benim playerprefs ile kaydettiğim veri nereye gidiyor ben erişip değiştirebilir miyim bunu nereden öğrenebilirim?
    Bide ben proje oluşturup build aldığım zaman dosyalarım 4 mayıs 2022’de oluşturulmuş gözüküyor.Buna yapabileceğim bir şey yok mu?

    • yasirkula dedi ki:

      PlayerPrefs’in diskte nereye kaydolduğunu şuradan öğrenebilirsiniz: https://docs.unity3d.com/ScriptReference/PlayerPrefs.html. Güvenli olmadığı bilgisi doğru bir bilgi ama bunun bir tık önüne geçmek için PlayerPrefs’i şifreleyen asset’ler mevcut. Kullanmadım ama örneğin: 1, 2. Bir dosyanın tarihini değiştirmek için File.SetLastWriteTime, File.SetLastAccessTime ve File.SetCreationTime fonksiyonlarını inceleyebilirsiniz.

      • Mustafa dedi ki:

        Vaktinizi ayırdığınız için çok teşekkür ederim.

  56. Merhaba hocam. Telefondan bi görsel seçip onu bi sunucudaki klasore nasil kaydedebiliriz? Ordanda cekip sahnede bi image e sprite olarak atamam lazim. Bi assetiniz var gorsel secip texture olarak atayabiliyoruz ama onu bi klasöre nasil kaydedip cekebiliriz?

    • yasirkula dedi ki:

      Daha önce de dediğim gibi sunucu işlerini maalesef bilmiyorum. İnternette bu konuda faydalı kaynaklar bulabilirsiniz umarım.

  57. Mustafa dedi ki:

    Merhaba hocam,yeni bir oyun yapmaya başladım.Oyunum sıra tabanlı bir savaş oyunu
    karakterimiz dusman objemize movetowards komutu ile gidiyor 0.08 lik bir yumuşatma değeri verdim şuanlık vuruşu ve hızı iyi ben oyunumda çeşitli bufflar düşünüyorum mesela 30dk’lık oyun hızını 1.5 katına çıkarsın diyorum.
    Time.timeScale=1.5f;
    komutumu start veya update methodumun içerisine yazınca sadece oyunumun hızını değiştiriyor.Karakterlerimin vector3.movetowards ile gitme süresini hızlandırmıyor.
    Ben sadece Vector3.MoveToWards(transform.position,hedef.position,0.08f*Time.timeScale*2)’ta bu şekil yazıncada hareketimi 2 katına çıkartıyor ama oyunumun hareketini 2 katına çıkartmıyor.

    update()
    {
    Time.timeScale=2;
    ——
    Vector3.MoveToWards(transform.position,hedef.position,0.08f*Time.timeScale)’
    }
    böyle yazdığım zamanda oyunum 2 taraftanda 2 katına çıkmış oluyor.Benim anlamadığım şu hocam benim movetowards fonksiyonum neden time.timeScale komutunun hızını algılayamıyor.Ben niye oyunumun hızını 2 katına çıkarmak için Vector3.MoveToWards(transform.position,hedef.position,0.08f*Time.timeScale) komutunu yazmak zorundayım ki?

    • yasirkula dedi ki:

      Benim bildiğim kadarıyla timeScale’i değiştirince oyununuz 60 fps’ten 120 fps’e çıkmıyor, yine 60 fps’te çalışıyor ama Time.deltaTime değeri timeScale’le doğru orantılı olarak değişiyor. Oyununuz timeScale’den bağımsız olarak sürekli 60 fps’te çalıştığı için de, karakteriniz her frame aynı miktar yol gitmeye devam ediyor. Bunu çözmek için timeScale’le çarpmak yerine deltaTime ile çarpmanızı öneririm ki oyunun fps’i düşse bile karakterin hızı bozulmasın. Mesela şunun gibi: “10f * Time.deltaTime”. deltaTime ile ilgili araştırma yapınca konuyla alakalı epey doküman bulabilirsiniz.

  58. Mustafa dedi ki:

    Merhaba hocam,Sizden bir tavsiye istiyorum.Bir oyun yaptığımızı düşünelim mesela 100 sahnelik bir oyun olsun.Her sahnede birbirinden farklı olaylar oluyor gibi düşünelim.Normal şartlarda tek bir script yazılıyor ya sahneler için falan.Ama şimdi 100 bölümlük bir oyun düşündüğümüz zaman script çok karman çorman olucak.Onun yerine her sahne için bir script oluşturmak mı(Birden fazla tekrar edicek kod var daha çok uğraştırıcak ama karışıklık azalıcak)yoksa tek script ile tüm sahneleri ayarlamak mı?(Tek kodla yönetilicek.Her sahnede farklı olay olacağı için karışıklık çok olucak ama tekrar eden kod olmuyacak)hangisi daha mantıklı sizce?

    • yasirkula dedi ki:

      Alternatif olarak bir class’ı başka class’tan da türetebilirsiniz. Örneğin ortak kodları LevelBase diye bir class’ta yazarsınız daha sonra farklılık gösteren kodlar için LevelBase’ten türeyen class’lar yazarsınız.

  59. sıddık çiçek dedi ki:

    Selamun aleyküm hocam, Unity için A* algoritmasını öğrenmenin yararlı olduğunu öğrendim de ne işe yarar bu algoritma oyun yapımında herhangi bir bilginiz var mı?

  60. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam Unity ‘de kullandığım ücretsiz assetler için telif yer miyim? Ayrıca para kazanmama engel olacağına dair bir bilgiye ulaştım. Ne kadar doğru bir bilgi olduğunu bilemediğimden size sormak istedim

  61. Sıddık Çiçek dedi ki:

    Unity’de oluşturmuş olduğum projeyi Unity Hub listesinden sildim ve PC’ye format attım. Ben o projeye herhangi bir şekilde tekrardan ulaşım sağlayabilir miyim? Unity’nin sayfasında oluşturmuş olduğum hesapta filan bulunmaz mı?

    • yasirkula dedi ki:

      Projeyi Unity Hub’dan sildiğinizde proje diskten silinmiyor ama format atarken diski de temizlediyseniz o zaman projeniz maalesef tamamen silinmiştir. Unity’nin kendi Version Control sistemlerinden birini veya Git gibi harici bir Version Control sistemini kullanmıyorsanız, projeniz bulutta yer almaz. İsterseniz silinen dosyaları geri getirmeye yarayan programları kullanmayı deneyebilirsiniz.

  62. Mustafa dedi ki:

    Hocam öncelikle merhaba Gamejam’e katıldığım için yeni sorular soramamıştım 🙂
    Hocam benim tahminlerime göre pivotta sıkıntım var.
    https://www.youtube.com/shorts/TN8auHQwQN8
    burda dönüşte yaşadığım problem var
    https://www.youtube.com/shorts/900AYO5boc0
    burada objelerimin parçalanmış hali
    Ben deneme amaçlı bir karakter yapıyordum.Eskiden 10 karakter için 10 tane idle animasyonu yapıyordum bu artık baya saçma geldi.Bende bir yerde görmüştüm.Tek bir animator ve tek bir animasyonla 6 karakteri birbirine bağlamış.Bende aynısını yapıp 3 karakteri birbirine bağladım.Bir problem çıkmamıştı ama şimdide dönerken ilk attığım linkteki gibi bir problem oluşuyor pivot noktasını nasıl değiştirebilirim sizce kime sorduysam cevaplıyamadı.Ben sizin bilebileceğinizi düşündüğüm için yazdım hocam.Benim istediğim kendi ekseninde dönsün.Ha bide şu var hocam ana menüdeki Rotate tool ile çevirince benim istediğim gibi kendi ekseninde dönüyor ama rotation ile çevirince aynı videodaki gibi dönüyor.

    • yasirkula dedi ki:

      Yukarıdan pivot modunu Center’dan Pivot’a çekmeniz lazım. O vakit pivot gerçekten nerede görebilirsiniz. Sonra karakterin child’larını pivot düzgün noktaya gelene kadar sola kaydırabilirsiniz.

  63. Mustafa dedi ki:

    Hocam bazı yabancı kaynaklarda bu işaretleri kullanıyorlar << , >> , ~ ne işe yarıyor tam olarak bilmiyorum,bunlar ne işe yarıyor bilginiz var mı?
    Birde
    RaycastHit2d hit =physics2d.Raycast(transform.position,Vector3.Down);

    if(hit.collider.gameObject.CompareTag(“Zemin”))
    {
    rb.velocity=new Vector2(0,jump*time.DeltaTime*10);
    }
    böyle bir kod yazdığım zaman objem yerin altına ışın göndermiyor.Biraz oynadım üstünde sağa çevirdim sola çevirdim farklı yönlerde gözüktü ışın ama objemin tam altına gelmedi.Sonra şöyle bir kod yazdım
    if(hit.collider!=null)
    {
    Debug.Log(hit.collider.Name);
    }
    Bu kodun çıktısındada benim objemin adını veriyor.Ben kendi objemi yoksaymasını istiyorum.Bu baya karışık geldi hocam 2d oyunda direk physics.Raycast gönderirsem bir sıkıntı çıkarmıyor ama 2d oyunda raycast2D gönderirken kendisine çarpıyor ışın.

    • yasirkula dedi ki:

      Bahsettiğiniz semboller bitler üzerinde işlem yapmaya yarıyor (mesajınızda o karakterlerin tam çıkmamasının sebebi, WordPress’in onları HTML etiketi olarak algılaması). Örneğin bir byte’ta 8 bit var, her bit 0 veya 1 değerine sahip. “byteDegisken << 2” yaparsanız, bu bitler 2 birim sola kaydırılır. Yani 01000111 ise bitleriniz, bu 00011100 olur. Fark ettiğiniz üzere, en soldan dışarı çıkan 1 biti kaybolur, en sağa da daima 0 biti eklenir. Çok ender de olsa, tamsayıları 2 veya katları ile çarparken bu yöntem kullanılabiliyor çünkü bitleri iki kere sola kaydırmak, sayıyı 2 üzeri 2 ile yani 4 ile çarpmaya denk geliyor. Ama genelde bitler üzerinde işlem yapmak için, belli bir bit’in değerini öğrenmek için kullanılıyor. >> bitleri sağa kaydırmaya yarar. ~ ise bitleri tam tersine çevirmeye yarar (0’lar 1 olur ve 1’ler de 0 olur). & ve | operatörleri de bitler üzerinden işlem yapmaya yarıyor. & kullanıldığında, iki sayının aynı sıradaki bitleri kıyaslanıp bunların ikisi de 1 ise dönen sayının o biti 1 oluyor, yoksa 0 oluyor. |’da ise iki bitten biri bile 1 ise dönen sayının biti de 1 oluyor. Diyelim sayının sağdan 3. bitinin 0 mı 1 mi olduğunu öğrenmek istiyorsunuz. Sayınız 01000101 olsun. Bu durumda “bool sonuc = ((sayi >> 2) & 1) == 1;” yapabilirsiniz. Arkaplanda sayı bitleri 2 sağa kayınca 00010001 oluyor. (00010001 & 00000001)’nin değeri de 00000001 oluyor yani 1 oluyor, sonuc değişkeni true oluyor. Veri sıkıştırmak istediğinizde bu veriyi bitlere sıkıştırmak faydalı olabiliyor. Fark ettiğiniz üzere, bir byte’ta 8 boolean sıkıştırabiliyorsunuz. Normalde bir boolean 1 byte olduğu için, bitleri kullanmak %87.5 yer tasarrufu anlamına geliyor.

      Raycast’lere LayerMask verebiliyorsunuz. Karakteri özel bir layer’a alıp raycast’e o layer’ı içermeyen bir LayerMask değişkenini parametre olarak verin. Veya sadece zemin layer’ını içeren bir LayerMask verin (ihtiyacınıza göre).

  64. Mustafa dedi ki:

    Hocam ben “Sıfırdan proje oluşturuyorum mesela dll ve exe 5 ay öncesinde oluşmuş gibi gözüküyor.Diğer dosyalar şimdiki tarihi gösteriyor neden böyleki ?
    Birde game ekranına baktığım oyun build alınca biraz daha yakın veya biraz daha uzak oluyor ben bunu ayarlıyıp ikisinide nasıl eşitleyebilirim?” böyle bir soru sormuştum ama sorum gözükmüyor sanırım buggta kaldı.

    • yasirkula dedi ki:

      Dosyalar ilk ne zaman oluşturulduysa o tarih gözüküyor, bu dosyaları Unity’nin klasöründen projenizin klasörüne kopyalayınca tarihi değişmiyor. Değişmesi için dosyayı düzenlemeniz gerekiyor. Game ekranının uzaklığının aynı olmamasını gözümde canlandıramadım çünkü kameranın yüksekliği ne olursa olsun aynı olur, bu da mesafenin aynı olması anlamına geliyor. Siz kameranın genişliği aynı olsun, yüksekliği farklı olsun mu istiyorsunuz?

      • Mustafa dedi ki:

        Hocam oyunuma game ekranında baktığımda atıyorum -40’sa uzaklığı göz kararı diyorum.Build alınca kameradan uzaklığı -25 yada -55 gibi oluyor yani z eksenleri farklı çıkıyor canvas veya build settingsden ayar falan mı yapmalıyız yoksa tek tek deneye deneye uygun bir oyun mu yapmalıyız?

      • yasirkula dedi ki:

        Canvas objeleri sıkıntılı ise Canvas Scaler’ın ayarlarıyla oynamanız lazım. Ben sadece Portrait veya sadece Landscape oynanan oyunlarda Scale With Screen Size metodunu tercih ediyorum ve Match değerini 1 yani Height yapıyorum.

  65. Mustafa dedi ki:

    Hocam ben bir oyun tasarlıyorum.Karakterim bir büyücü, bu büyücünün 8 saniyede bir ultisiyle rakibi ittirmesi gerekiyor.Ben bu ultiyi partikül efekt ile yaptım ama efektime box collider verdiğim zaman efektim karakterime temas etmiyor efekti dönderiyorum bi yamukluk var yaklaşıyorum efekt farklı bir yönde ,uzaklaşıyorum farklı bir yönde bir türlü karaktere çarptırtamadım bu oyunlardaki ulti gibi özellikleri animasyonlarla mı yönetiyolar yoksa partikül efektte kullanılıyor mu?

    • yasirkula dedi ki:

      Box Collider çalıştığı durumda onu kullanmanızda da sakınca görmüyorum. Bu collider fizik etkileşimli variller vb. varsa onları da etkileyebilir ona dikkat etmek lazım. Box Collider şu anda nasıl bir hale bürünüyor gözümde canlandıramadım ve kodunuzu da bilmediğim için nerede hata olabilir bir şey diyemiyorum. Ulti efektini kodla da vermeniz bir seçenek, bunun için Physics.BoxCast yapıp bunun vurduğu rakipleri kod ile arkaya ittirebilirsiniz.

  66. Mustafa dedi ki:

    Hocam free assetlerin telif hakkına nereden bakıyoruz?Ücretli assetler telifli oluyor mu?Ben mağara jam’e katıldım da çoğu şeyi bilmiyorum.Yaptığımız oyunu itchio diye bir sayfa var orada paylaşıcakmışız.Orada paylaştığımız oyundaki assetler üreticiler tarafından sıkıntı çıkarır mı?Bunu nereden öğrenebilirim?

    • yasirkula dedi ki:

      Asset Store’dan indirdiğiniz ücretsiz asset’lerin Asset Store sayfalarında veya asset’le gelen dosyaların içinde özel bir lisans sözleşmesi yoksa, ben Asset Store’un kendi lisansına dahiller diye biliyorum ve bu lisansta da benim bildiğim kadarıyla sıkıntı yaşamazsınız. En garanti bilgiyi asset’in yapımcısından, ikinci garanti bilgiyi de Asset Store’un lisansını okuyarak öğrenebilirsiniz.

  67. Sıddık Çiçek dedi ki:

    Selamun aleykum hocam, tek basima en bastan bir oyun yapmaya baslamadan once nasil bir yol izlemeliyim? Daha oncesinde 1 oyun yaptim ama hic plan program olmaksizin direkt basladim ve aklima geleni eklemeye calistim. Sonuc sanki denizin ortasinda çırpınıp duruyor gibiydim. Bu sefer nasil ilerlemem lazim ki bu sekilde oyun programlarken oyunun icerisinde kaybolmayayım?

    • yasirkula dedi ki:

      Bu konuda pek tavsiye verebileceğimi sanmıyorum çünkü ben de yanlış bir şekilde bodoslama/doğaçlama geliştirme yapıyorum. İnternette bazı Youtuber’lar oyunlarının geliştirme aşamalarını videoya alıyorlar (X game unity devlog), belki onların nasıl bir yol izlediğini inceleyebilirsiniz.

  68. Mustafa dedi ki:

    Hocam ben 2D platformer bir savaş oyunu yapıyorum sorunum şu ki objem zemin tagına sahip her yerde zıplayabiliyor platformlarda zemin tagı var ve platformun sağı solu üstü her tarafından zıplayabiliyor,tırmanabiliyor ben bunu istemiyorum sade platformun üstünden zıplasın.Sonraki sorunum da objem platforma temas ettiği zaman objem hemen düşmüyor bi cebelleşiyor orda.Bu iki sorunu nasıl çözebilirim?

    • yasirkula dedi ki:

      Zemin tag’ı ile temas ettiğinizde, temas noktasına bir şekilde erişebiliyorsunuz diye varsayıyorum (RaycastHit2D.point de olur collision2D.GetContant(0).point de). Eğer bu nokta karakterin ayak hizasındaki bir noktanın aşağısında kalıyorsa zıplayabilirsiniz, aksi taktirde zıplayamazsınız. İkinci problem, karakter platforma yandan temas edince ve siz platform yönünde input vermeye devam edince oluyor diye tahmin ediyorum. Bu benim de merak ettiğim ama henüz çözmemin gerekmediği bir problem. Bunun doğru çözüm yolu nedir bilmiyorum ama zeminin veya karakterin collider’ına bir Physics Material 2D verip bu asset’in friction değerini 0 veya düşük bir değere ayarlamayı deneyebilirsiniz. Ayrıca hareket kodunuz transform üzerinden çalışıyorsa, onun yerine Rigidbody2D üzerinden karakteri hareket ettirmeyi deneyebilirsiniz.

      • Mustafa dedi ki:

        Hocam oyunum 2D ama her şeyini 3D yaptım ondan dolayı olabilir mi ki?
        Temastan yana sıkıntı yok çarpışıyolar ama işte tırmanma sorunu baya sinir bozuyor.

      • yasirkula dedi ki:

        2D ve 3D birleşimi sorun çıkarır mı maalesef bilmiyorum. Ben sorunu karakterin tırmanamaması değil, yere cebelleşerek düşmesi olarak anlamıştım.

      • Mustafa dedi ki:

        Tamamdır hocam halledebildim sonunda çok teşekkür ederim size.İlk önce dash atarken transform.position kullanıyordum buda ışınladığı için bazı bugglar ortaya çıkıyordu onun yerine velocity kullanınca bug düzelmiş oldu.Sonra dediğiniz gibi yerin altından ışın oluşturdum ve karakter artık yere temas edinde zıplıyor.Bu sondaki yazdığım çoğu buggu düzeltti artık tırmanma olayıda bitti.O duvarda takılı kalma olayıda dediğiniz gibi ınput vermeye devam edince oluyor.O kaldı bi onuda üstünde biraz daha uğraşırsam hallederim.

      • yasirkula dedi ki:

        Elinize sağlık. Ben videoda duvara takılı olmasını göremesem de, karakteri her zaman Rigidbody2D üzerinden hareket ettirdiğinizden emin olun derim. Transform’unu ellemeyin. Gerekirse Collider’lara Friction’ı az Physics Material 2D vermeyi deneyin.

  69. AlperenŞ dedi ki:

    Merhabalar Unityde aab çıktısı alırken api level 30da çıktıyı veriyor 30 üstünde gradle build hatası veriyor bunun nedeni nedir?

    • yasirkula dedi ki:

      Maalesef daha önce denk gelmedim. Hata mesajında yer alan cümleyi google’da aratmanızı öneririm.

      • Mustafa dedi ki:

        Hocam hatayı videoya aldım (hem tırmanma sorunu hemde platformdan sürterek düşüyor ve hemen düşmüyor ben tuştan elimi çekince düşüyor) size nasıl gönderebilirim?

      • yasirkula dedi ki:

        İsterseniz YouTube’a Unlisted olarak yükleyip linkini paylaşabilirsiniz. İlk yorumumda yaşadığınız problemleri bilgim dahilinde cevaplamaya çalıştım, onları inceleyebildiniz mi?

      • Mustafa dedi ki:

        Hocam ilk önce videoyu size göstereyim dedim.Kodu uyarlayacağım baya karışık olmaya başladı artık 700 800 satır kod yazdım neredeyse ve şimdi bunu uyarlayacağım kısmı bulacağım ve kodları düzenleyeceğim falan biraz uğraştırıcak. RaycastHit.point ,collision.GetContant(0).point ikisinide denedim ama olmadı hocam.

      • yasirkula dedi ki:

        Karakterin cebelleşerek düşmesini videoda göremedim ama duvarın hafif içine girip sonra geri ışınlanmasını gördüm. Onu çözmek için transform.position’ı düzenlemek yerine, FixedUpdate’te rigidbody2D.MovePosition ile hareket edin. Zıplama için ise yaptığınız değişiklik nasıldı bilmiyorum ama mantıken dediğim çözümün çalışması lazım.

      • AlperenŞ dedi ki:

        Tavsiyeniz için Teşekkür Ederim

  70. Mustafa dedi ki:

    Üç sorum var hocam.Invoke methodu parametreli olursa nasıl çağırırız ben denedim ama beceremedim.Animasyonlarla konuşma diyalogu yapmaya çalışıyorum ama text kısmı yok onu nasıl yapabilirim.Animasyonların eventleri nedir nasıl kullanırım?

    • yasirkula dedi ki:

      Invoke’a parametre girilemiyor, onun yerine coroutine veya DOTween’in DOVirtual.DelayedCall fonksiyonunu kullanabilirsiniz. Animasyon kliplerinde text değerini değiştiremezsiniz ama animasyon event’leri vasıtasıyla bir fonksiyon içerisinden text’e istediğiniz gibi müdahale edebilirsiniz. Animasyon event’leri, animasyonun belli bir saniyesine ulaşınca belirlediğiniz bir C# fonksiyonunun otomatik olarak çağrılmasını sağlar. Bu fonksiyon, Animator component’ini verdiğiniz objeye atanmış bir script’te olmalıdır.

  71. Mustafa dedi ki:

    Hocam ben bir kaç animasyon yaptım.Animasyonu (5,4,3) koordinatında oluşturdum objemin koordinatı (7,8,9) ben başlattığım da otomatikman animasyonun koordinatına gidiyor youtubedan video izledim bir objenin child’i olmalı diyor onuda yaptım ama hala aynı sonuç nasıl bir şey yapmam gerekiyor?Animasyon dosyasından mı ufak ayar yapmalıyım.

    • yasirkula dedi ki:

      Animasyonu (0,0,0) koordinatında oluşturmanız lazım, sonra bir objenin child’ı yapıp Transform değerlerini Reset’leyip o objeyi istediğiniz yere taşıyabilirsiniz.

      • Mustafa dedi ki:

        Hocam çok teşekkür ederim sizin sayenizde sorun çözüldü.Buradaki animasyonu(0,0,0) getirmemizdeki amaç neydi peki hocam?

      • yasirkula dedi ki:

        Objenizi başka bir objenin child’ı yapıp Transform’unu resetlediğinizde artık Position değeri 0,0,0 oluyor. Siz objenin parent’ını nereye hareket ettirirseniz ettirin Position değeri 0,0,0 olarak kalmaya devam ediyor. Animasyonu 0,0,0’da oluşturmasaydınız da 5,0,0’da oluştursaydınız, animasyon başladığında obje 5 birim sağa ışınlanır ve animasyonu orada oynamaya başlardı. Ama animasyonu 0,0,0’da oluşturduğunuz ve obje de o Position’da olduğu için, animasyon olduğu yerde oynuyor. Eğer objenin Position değeri 0,0,0 değil -10,0,0 olsaydı, o zaman animasyonu da -10,0,0 koordinatlarında oluşturmanız gerekecekti.

      • Mustafa dedi ki:

        Mantığı anladım hocam çok sağolun anlattığınız için.

  72. gökhan dedi ki:

    merhaba hocam unityde balon patlatma oyunu yapıyorum. prefab la balon üretiyorum ve bunlar yüksek kuvvetle ekranın üstünde uçuyor dolayısıyla çok hızlı geçiyor. kuvveti küçük değere aldığımda da oşustuğu gibi yerçekimi etkisiyle hemen düşüyor. yerçekimi değerinide sıfırlamama rağmen ne yapabiliirim. teşekkürler

    • yasirkula dedi ki:

      Eğer fizik kullanmak zorunda iseniz, bence kuvvete biraz daha ince ayar yapmaya çalışın (2’den 1’e çektiyseniz, 1.5’a çekin). Balonlara bir maksimum hız vermek isterseniz, FixedUpdate’te velocity değerlerini Vector3.ClampMagnitude fonksiyonuna sokabilirsiniz.

  73. Mustafa dedi ki:

    Şuanda üniversite okuyorum.Ve bir oyun şirketine girip kendimi geliştirmek istiyorum.Benim sorum,rastgele bir oyun şirketine girebilmek için ne kadar unity bilmek gerekir.Ne kadar hakim olsam yeterli olur ?

    • yasirkula dedi ki:

      Bence bu şirkete bağlı. Bazı şirketler yetiştirmek üzere sizi kabul edebilirken bazıları Google Play’de kendi yayımladığınız bir oyununuz olmasını isteyebilir. Siz kendinizi geliştirmeye devam edip bir yandan da ilgilendiğiniz firmalara staj için mesaj atabilirsiniz.

  74. Mustafa dedi ki:

    Hocam benim anlayamadığım bir takım şeyler var.
    WorldToViewportPoint,
    WorldToScreenPoint,
    ScreenPointToRay,
    ScreenToViewportPoint,
    ScreenToWorldPoint,
    ViewportPointToRay,
    ViewportToScreenPoint,
    ViewportToWorldPoint
    Sizin yazmış olduğunuz yazılara baktım ama bu yazdıklarım ile alakalı bir bilgi göremedim.İnternette de bunların farkını ne olduklarını anlatan bir türkçe kaynak bulamadım.Bunları nasıl ayırt edeceğim hocam yardımcı olur musunuz?

    • yasirkula dedi ki:

      XToYPoint fonksiyonları bir koordinatı X sisteminden Y sistemine geçirmeye yarar. Bu sistemler:

      – World: 3D uzaydaki bir nokta
      – Screen: Ekrandaki bir 2D nokta (sol alt noktanın koordinatı (0,0), sağ üst noktanın koordinatı (Screen.width,Screen.height)
      – Viewport: Ekrandaki bir 2D nokta (sol alt noktanın koordinatı (0,0), sağ üst noktanın koordinatı (1,1))

      2D bir noktayı 3D bir noktaya çevirirken, girdiğiniz Vector3’ün z değeri, döndürülen 3D noktanın kameradan ne kadar uzakta olacağını belirler.

      • Mustafa dedi ki:

        ScreenPointToRay,
        ViewportPointToRay
        peki bunlar ne oluyor hocam?
        Birde youtube kanalınız var mı?

      • yasirkula dedi ki:

        Ekrandaki bir 2D nokta yönünde Raycast atabilmek için Ray döndürür. Örneğin fare ile tıklanan objeyi bulmak için ScreenPointToRay(Input.mousePosition) ile Physics.Raycast çağrılabilir. Ders paylaştığım bir video kanalım bulunmamakta.

  75. Ömer Şahan dedi ki:

    hocam unity deki free assestleri kulanabilirmiyiz

  76. HatamatoSamurai dedi ki:

    Merhaba hocam oyunuma her 1 saate ödül verecek birsey yapmaya çalışıyorum.oyun kapalıyken yani oyun açılmamışken 1 saatin geçip geçmediğini nasıl anlayabilirim

    • yasirkula dedi ki:

      DateTime.UtcNow değeri, mevcut tarihi verir. Bu değeri ihtiyaca göre string olarak da istediğiniz bir yere kaydedebilirsiniz. İki DateTime’ı birbirinden çıkararak, bu iki tarih arasında ne kadar süre geçtiğini bulabilirsiniz. Ancak kullanıcı cihazının tarihini değiştirerek DateTime’ı etkileyebildiği için, gerçekten güvenli bir sistem yapmak istiyorsanız bir şekilde mevcut tarihi online bir sunucudan almalısınız. Bunun için de tabi ki internet bağlantısı ve belki de kendi sunucunuzu oluşturmanız gerekiyor.

    • HatamatoSamurai dedi ki:

      Sağolun varolun hocam

  77. Emre dedi ki:

    Merhaba.Benim oyunum bitmek üzere ama bir sorunla karşılaştım.Ekrana tıklanıldığında karakterin zıplaması gerekiyor ama 2 ve ya 3 kere tıkladıktan sonra zıplıyor karakter.Bunun nedeni ne olabilir?

    • yasirkula dedi ki:

      Tıklama input’unu FixedUpdate yerine Update veya LateUpdate’te almanız lazım.

      • Emre dedi ki:

        Çok teşekkür ederim hocam.Dediğinizi yapacağım.Peki fixedupdate neden böyle bir şeye sebep olmuş?

      • yasirkula dedi ki:

        FixedUpdate her frame çağrılmayabiliyor o yüzden ekrana tıklama gibi anlık input’lar FixedUpdate’in çalışmadığı frame’lerde gelirse yaşadığınız sıkıntı oluyor.

      • Emre dedi ki:

        Ama hocam FixedUpdate her 0.02 saniyede çalışmıyor mu?Update ise her 1 saniyede.Sizi de yoruyorum çok özür dilerim.

      • yasirkula dedi ki:

        Update her frame’de çağrılıyor, yani oyun 60 fps’te oynanıyorsa her 0.016 saniyede çağrılıyor. O yüzden de Update’in çalıştığı bazı frame’lerde FixedUpdate çalışmıyor.

  78. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam, mesela if(Input.GetKeyDown()) yazdığımda otomatik olarak ne yazabileceğime dair öneri sunmuyor. Yani KeyCode, KeyFrame gibi gibi bir öneri sunmuyor. Ben hangi Plugin i kullanmalıyım ki bu önerileri bana sunabilsin. Ayrıca if(Input.GetKeyDown(KeyCode key)) yazıp açıklamada bulunmasını istiyorum. Bunlar için ne yapabilirim?

    • yasirkula dedi ki:

      Aleykümselam. GetKeyDown yazınca fonksiyonun aldığı parametreleri gösteren kutucuğa ne deniyor bilmiyorum ama Visual Studio Community’de bu kutucuk varsayılan olarak geliyor olmalı. KeyCode, KeyFrame gibi ne yazacağınıza dair öneri veren sistem IntelliSense muhtemelen, onun da varsayılan olarak açık olması lazım.

  79. Burak dedi ki:

    Merhaba karaktere mixamodan herhangi bir animasyon ekleyince karakter animasyonu çok farklı pozisyonlarda yapıyor.Oldugu yerden cok farklı bölgelere gidiyor bunu nasıl çözebilirim?

    • yasirkula dedi ki:

      Hem karakterin hem de animasyonun Inspector’daki Rig değerinin Generic değil de Humanoid olduğundan emin olun. Animasyonun Inspector’daki Animations sekmesinde yer alan “Bake Into Pose” değerlerini açmayı deneyin. Ayrıca aynı yerdeki “Position Offset” gibi değerleri değiştirmek de sorununuzun çözümü olabilir.

  80. Emre dedi ki:

    Hocam yeniden merhabalar.Benim bir sorunum daha var.2d oyun editor’de normal ama build aldıktan sonra spritelar büyüyor.Yoksa kamera mı yaklaşıyor anlam veremedim.Bunun bir çözümü var mı?

  81. Furkan dedi ki:

    Hocam merhaba.2D bir oyun yapıyorum.Karakter acceleration yardımıyla hareket ediyor yani telefon ekranının hareketine göre sağa ve ya sola gidiyor.Sorun şu ki oyuncu platformla çarpışdığı zaman platformun en sağ ve ya en sol kısmına ışınlanıyor.Oyuncuda friction 0.Cevabplarsanız sevinirim 🙂

    • yasirkula dedi ki:

      Burada problem acceleration’dan kaynaklı değil gibi geldi bana, joystick kullansaydınız da aynı şey olacaktı hissiyatına kapıldım. Yazdığınız bir kod karakterin yanlış bir şekilde platformun sağına soluna ışınlanmasına sebep oluyor olabilir mi? Veya karakterin Rigidbody’si kinematic ise, karakterin platform ile teması karakteri durdurmaz çünkü kinematic Rigidbody’ler fizik güçlerinden etkilenmezler.

      • Furkan dedi ki:

        Hocam yanıtınız için çok teşekkür ederim.Collider kaynaklı sorundu.Edge collider kullanıyordum.Box collider yapınca hata çözüldü.Anlamadığım collider’ın neden böyle bir şeye sebep olduğu

      • yasirkula dedi ki:

        Sanırım aynı şeyi kendi başıma yaşayıp iyice derinine inmeden bu konuda sağlıklı bir çıkarımda bulunamayacağım ama sorunu çözebilmenize sevindim 😀

      • Furkan dedi ki:

        Cansınız hocam 🙂

  82. Emre dedi ki:

    Neyse hocam sanırım derdimi anlatamadım.Yine de çok teşekkürler.Seviliyorsunuz 🙂

  83. Emre dedi ki:

    Hocam update içinde kameranın y değerini oluşturduğum değişkene atadığım için y değeri arttıkca değişkenin değeri de artıyor.Yani kameranın y değeri asla değişkenden büyük olmuyor

  84. Emre dedi ki:

    Hocam merhaba.Ben kamera içinde bir script ve script içerisinde de float bir değişken belirledim ve bu değişken kameranın y değerine eşit olarak artıyor.Kamera aşağı indiğinde bu değişkenin azalmamasını ama yukarı kalktığında ise artmasını istiyorum.Böyle bir şey mümkün mü?Teşekkürler

    • yasirkula dedi ki:

      Evet bir if koşulu ile, kameranın y değerinin değişkenden büyük olup olmadığına bakarsınız ve ancak büyük olduğu durumda değişkenin değerini değiştirirsiniz.

  85. Furkan dedi ki:

    Hocam merhaba. Unity’de balon patlatma oyunu yapıyorum. Balonlar patladıkça scoremanager aracılığıyla skor artıyor ve ekranda yazıyor bu kısımda sorun yok. daha sonra balonların farklı yerlerde belirmesi için kod yazdım ve balonları prefab haline getirip hiyerarchy panelinden sildim fakat bu sefer balonları patlatınca skor artmıyor sadece balonlar yok oluyor. bununla ilgili çözüm bulamadım ne yapmam gerekiyor yardımcı olursanız sevinirim.

    • yasirkula dedi ki:

      Eğer skor artması işlemini, balon prefab’ının Inspector’undaki bir değişkene veya UnityEvent’e sahnedeki ScoreManager’ı değer vererek yaptıysanız, bu sorunun olması normal. Çünkü prefab’ların değişkenlerine sahne objelerini maalesef değer olarak veremezsiniz. Bence ScoreManager’ı singleton yapın ve balon patlayınca balondaki bir fonksiyonu çalıştırın, o fonksiyon da ScoreManager.Instance vasıtasıyla skoru artırsın.

  86. sadık garar dedi ki:

    Selamun aleyküm hocam. Ben oyunuma Google ads ‘den reklam ekledim. Ama şöyle bir şey yaptım. Google ads’ de 2 adet uygulama oluşturdum. Ve bir tanesini oyunuma bağladım. İnceleme gerekli diyordu. Şimdi etkin diyor. Ama etkin olan uygulamanın istatistikleri oynamıyor. 2. uygulama da istatistikler oynuyor. Ama 2. uygulamamı etkinleştirmedim. İnceleme gerekli diyor hala. Sorum şu ben ilk uygulamamı oyunum ile etkinleştirmiştim ya onu pasifleştirip onun yerine pasif olanı nasıl etkinleştirebilirim? Anlatamadıysam farklı bir şekilde anlatabilirim isterseniz fotoğraf kullanarak.

    • yasirkula dedi ki:

      Aleykümselam. Google Ads’deki uygulamayı oyununuza bağlamaktan kastınızın, o uygulamanın reklam id’lerini oyununuzda kullanmak olduğunu varsayıyorum. Bu durumda, kodunuzdaki reklam id’lerini istediğiniz uygulamanınkiler ile değiştirip oyuna güncelleme atmanız gerekiyor diye düşünüyorum.

      • sadık garar dedi ki:

        Reklam ID ‘leri ile alakadar bir sıkıntım yok. Sıkıntım şu Google AdMob ‘da oluşturmuş olduğum 2 tane uygulamada da “İnceleme gerekli” yazıyordu. Ben de uygulamalardan istatistikleri göstermeyen uygulamaya girdim. Uygulama ayarları > Mağaza ayarları seçeneğinin yanında “Ekle” yazısı vardı. Bende oyunuma bu uygulamayı ekledim. Sonradan fark ettim aslında diğer uygulamam için yapmam lazımmış bunu. Bu durumda ben bu yaptığım işlemi geri alabiliyor muyum?
        Geri alma gibi bir şansım yoksa reklamdan kazandığım parayı alabilecek miyim? Çünkü istatistikleri gösteren uygulama “İnceleme gerekli” diyor.

      • yasirkula dedi ki:

        Arayüz üzerinden bunu değiştirmeye yarayan bir buton ben de görmedim. O değerin nasıl değişeceğini internette arattığımda, yeni bir uygulama oluşturup, onu doğru oyuna bağlayıp, onun reklam id’lerini kullanmayı öneriyorlar (akabinde önceki uygulamayı arayüzden gizlemeyi). Eğer iki uygulama aynı oyuna bağlanabiliyorsa, asıl bağlamanız gereken uygulamayı da oyununuza bağlayıp diğer uygulamanın bağlantısını görmezden gelin derim.

      • sadık garar dedi ki:

        Anladım hocam çok teşekkür ederim. Bir de aynı oyuna 2 farklı uygulama bağlanmıyor denedim olmadı.

      • yasirkula dedi ki:

        O zaman isterseniz “yanlış uygulama”nın reklam kimliklerini oyununuzda kullanmaya başlayın ya da AdMob teknik destek ekibine mail atıp yardımcı olabilecekler mi kontrol edin.

      • sadık garar dedi ki:

        Anlamadım “yanlış uygulama’nın reklam kimliklerini oyununuzda kullanmaya başlayın” derken yanlış uygulamadan kastınızı anlamadım.

      • yasirkula dedi ki:

        2 uygulamanız var, birisi oyunu bağladığınız ama aslında bağlamamanız gereken uygulama, öbürü oyunu bağlamadığınız ama aslında bağlamanız gereken uygulama. Bu işlemi geri alamadığınız için, yanlış uygulamadan kastım, “oyunu bağladığınız ama aslında bağlamamanız gereken uygulama”.

      • sadık garar dedi ki:

        hee şimdi anladım hocam teşekkür ederim yardımlarınız için.

  87. Samet dedi ki:

    Hocam merhabalar sayenizde bir çok şeyi sıfırdan öğrendim öncelikle teşekkür etmek istedim.Game panelinde terrainin bi kısmının kaybolması geri gelmesi yüklenmemesi ilerledikçe geri yüklenmesi gibi bir sorunla karşılaştım ve bu sadece belli bölgede diyebilirim resim için link bıraktım.

    https://imgyukle.com/i/RmnALo

    o bölgedeki koyduğum objeleri binaları yolları vs.kaldırıp denedim ancak düzelmedi.Build alıp denedim mobildede aynı şekilde hatalar mevcut.Şimdiden teşekkür ederim

    • Samet dedi ki:

      Hocam sorunumu çözdüm, haritanın o kısmını binaları vs. yapmadan önce occlusion culling olayını aktif etmiştim.Sorunla karşılaşacak arkadaşlar için yukarıdaki pencereden Window-rendering-occlusion culling kısmından clear yapmanız gerekiyor.

  88. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam, bayramınız mübarek olsun 😀

  89. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam. Google Play gizlilik politikası URL’si istiyor. Bunun için ne yapmalıyım? Ben kullanıcılardan hiçbir veri istemiyorum oyunumda. Ama Google Ads kullanıyorum.

    • yasirkula dedi ki:

      “free privacy policy generator for mobile game” şeklinde arama yapıp, ürettiğiniz gizlilik poliçesini web sitenizde paylaşabilirsiniz. Web siteniz yoksa, WordPress gibi servisler üzerinden ücretsiz web sitesi açabilirsiniz.

  90. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam, Unity’de sahnede her yer arka plan rengi olarak griye bürünmüş durumda. Ne yapabilirim?

    • yasirkula dedi ki:

      Hierarchy veya Scene panelinin arama kutucuğunda bir şeyler yazıyor olabilir, orayı temizleyebilirsiniz. Aksi taktirde sorunun resmini görsem faydalı olacak gibi.

      • Sıddık Çiçek dedi ki:

        Hocam yeni bir scene oluşturduğum vakit yarısı gökyüzü misali mavi diğer yarısı gri oluyor ya ben de ise her yer gri ondan bahsediyorum.
        Fotoğraf atmam gerekirse nasıl atabilirim?

      • yasirkula dedi ki:

        Window-Rendering-Lighting Settings’te Skybox’un değeri kaybolmuş olabilir. Fotoğrafı istediğiniz bir siteye yükleyip linkini atabilirsiniz.

      • Sıddık Çiçek dedi ki:

        Tamamdır hocam skybox değerinden hallettim çok teşekkür ederim

  91. Ahmet kök dedi ki:

    Hocam unity de çalışırken artık yanlışlıkla bı komuta falan mı deydim bilmiyorum ama birden bazı alanlar aşırı parlamaya başladı bu neden olabilir sizce güneş değil yol olarak kullandığım cisimler parlamaya başladı

    • yasirkula dedi ki:

      Bu sorun sadece Scene panelinde oluyorsa, yukarıdaki ampul ikonuna tıklamayı deneyin. Game panelinde de sorun oluyorsa, Window-Rendering-Lighting Settings’te herhangi bir değişiklik yapmış olabilir misiniz? Veya Directional Light’ı aç/kapa/klonla/düzenle gibi bir şey yapmış olabilir misiniz?

  92. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam. Hayırlı Ramazanlar 🙂
    Hocam, Google Ads hesabı oluşturuyor iken ülkeyi Türkiye seçince TRY cinsinden paranız hesabınıza aktarılacaktır diyor. Benim anlamadığım şu, dolar üzerinden diyelim 1 dolar kazandım bu bana güncel kur fiyatına göre 14 tl olarak mı gelecek? Nasıl olacak?

  93. Samet dedi ki:

    Merhabalar, reskin yapmak istediğim bir oyun var unityde png veya jpeg dosyalarını adını değiştirmeden kendi yaptığım dosya ile değiştirirsem bir sıkıntı çıkarmı? Tekrar Kodlama veya herhangi bir işlem yapmak gerekir mi?

    • yasirkula dedi ki:

      Dosyanın üzerine yazarsanız ve sizin yaptığınız reskin, orijinal görsel ile benzer özelliklere sahip ise (aynı aspect ratio vs.), tekrar bir şey yapmanız gerekmemeli.

      • Samet dedi ki:

        Çok teşekkürler saolun sitede çok yararlı bilgiler mevcut bu arada teşekkürler 🙂

  94. ewoshadow dedi ki:

    Sitenizi yeni keşfettim ve gerçekten elinize sağlık çok güzel bilgiler vermişsiniz. Umarım burada olmaya devam edersiniz. ❤ Oyunlarada save/load sistemi ile ilgili bir makale ya da önerebileceğiniz bir yer var mı? Site içerisinde aradım ancak sonuç bulamadım.

    • yasirkula dedi ki:

      İlginiz için teşekkür ederim 😀 Basit ve güvenliği önemli olmayan değerleri kaydetmek için PlayerPrefs ve gerekirse JsonUtility kullanabilirsiniz. Daha karmaşık şeyler için BinaryFormatter kullanabilir veya hazır bir asset kullanabilirsiniz; örneğin Easy Save bu konudaki en popüler ama pahalı asset’lerden birisi. Ücretsiz alternatifler aramak için, “unity save system github” şeklinde arama da yapabilirsiniz.

  95. Kurt dedi ki:

    https://forum.unity.com/threads/solved-unity-offscreen-target-indicator-little-problem.568027/
    Bu kodu 2d çalıştırabililiyorum ama 3d yaptığım zaman ekranda düzgün çalışmıyor.
    Oku 3d ye nasıl ayarlayabilirim.

    • yasirkula dedi ki:

      Eğer script düzgün çalışmıyorsa, benim önerim onunla uğraşmak yerine “unity offscreen indicator” şeklinde arama yaparak karşınıza gelen hazır 3D alternatiflere yönelmeniz yönünde. Ücretsiz bir asset ve bazı video dersler gördüm ama ne kadar iyiler bilmiyorum.

      • Kurt dedi ki:

        2d düzgün çalışıyor ama 3d sahnede düzgün çalışmıyor ok istediğim gibi hareket etmiyor benim amacım hazır asset kullanmak değil kendim yapmak ve bunun mantığını anlamak istiyorum bunun hakkında makale varmıdır?

      • yasirkula dedi ki:

        Bence bu sistemin mantığı şu şekilde olacak:
        – Ok göstereceğiniz objenin ekran koordinatlarını WorldToScreenPoint ile alın
        – Bu koordinatlar ekranın sınırları içerisinde ise ok göstermeyin
        – Aksi taktirde, ekranın orta noktasından bu koordinatlara giden bir çizgi hayal edin ve bu çizginin ekranın hangi kenarına çarptığını bulun. Bu çizgi ya ekranın alt/üst (yatay) kenarına, ya da sol/sağ (dikey) kenarına çarpabilir. Hangisine çarptığını bulmak için, her iki kenarın da çizgiyle temas ettiği noktayı bulup, bu noktalardan hangisi ekranın orta noktasına daha yakınsa onu çarpma noktası kabul edebilirsiniz
        – Bir önceki adımda bulduğunuz çarpma noktasından ekranın orta noktasına giden doğrunun açısını kullanarak, okun eğimini (yönünü) değiştirin

        Attığınız kodda şu değişiklikleri yapmak belki sorununuzu çözebilir (denemedim):

        Vector3 toPosition = Camera.main.WorldToScreenPoint(targetPosition);
        Vector3 fromPosition = new Vector3(Screen.width / 2, Screen.height / 2, 0f);

      • Kurt dedi ki:

        Cevaplarınız için teşekkür ederim.

  96. Hüseyin dedi ki:

    void PlusButtonOperation(int index)
    {
    Product product = DB.GetQuantity(index);
    ProductItemUI ıtemUI = GetItemUI(index);

    int[,] vs = new int[2, DB.ProductCount];
    for (int i = 0; i < 2; i++)
    {
    for (int j = 0; j < DB.ProductCount; j++)
    {
    product .quantity += 1;
    vs[i, j] = product .quantity;
    ıtemUI.PrintProductQuantity(vs[i, j]);
    }

    }

    }

    Artı tuşuna bastığınızda buradaki fonksiyon çalışır. Yapmak istediğim şey, butona basıldığında her ürünün kendi miktarının 10'ar 10 artmasını istiyorum. Lütfen bana yardım eder misiniz? Burada iki boyutlu dizi kullanarak yapmaya çalıştım. (Ürünler için database oluşturdum. Her ürünün index'i var.)

    • yasirkula dedi ki:

      Ben burda niçin 2 boyutlu bir array kullandığınızı veya 10 artırmak yerine 1 artırdığınızı tam anlayamadım :/

      • Hüseyin dedi ki:

        Kod çalıştığında 10 tur döndüğü için 1 arttırdım. 2 boyutlu bir array kullanmanın sebebi ise 2 sütun oluşturup bir sütuna indexi diğer sütuna ise miktarı atamak istedim. Böylelikle her ürün birbirinden bağımsız olacaktı. Ama istediğimi elde edemedim. Yanlış yaptığımı biliyorum. 😢

      • yasirkula dedi ki:

        Database’ler ile çok çalışmadığım için olayı çözemiyor olabilirim. Bu konuda gerçekten yardımcı olabileceğimi sanmıyorum 🙂

      • Hüseyin dedi ki:

        Anlıyorum. Yinede teşekkür ederim. 😊

  97. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam,

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;

    public class SeviyelerYoneticisi : MonoBehaviour
    {
    public Button seviye1Button, seviye2Button, seviye3Button, seviye4Button, seviye5Button;

    public static bool seviye1, seviye2, seviye3, seviye4, seviye5;

    void Start()
    {
    seviye1 = true; // Seviye1 her daim açık olacak.
    }

    void Update()
    {
    if (seviye2 == true) // başka scriptten ulaşılacak. En aşağıda olduğu gibi.
    {
    seviye2Button.interactable = true;// seviye2 ‘yi açıyor. Aynıları diğerleri için de oluyor.
    }
    if (seviye3 == true)
    {
    seviye3Button.interactable = true;
    }
    if (seviye4 == true)
    {
    seviye4Button.interactable = true;
    }
    if (seviye5 == true)
    {
    seviye5Button.interactable = true;
    }
    }
    }

    SeviyelerYoneticisi.seviye2 = true;

    Ama hocam, ben burada PlayerPrefsleri nasıl yerleştireceğimi bilemedim yapamadım hala. PlayerPrefs öğrendim ama hala olmadı. Bunun yüzünden oyun bitmedi bir türlü. Yardımcı olabilir misiniz?

    • yasirkula dedi ki:

      Aleykümselam. Şu önceki mesajımda anlamadığınız kısım neresi:

      bool levelAcildiMi = PlayerPrefs.GetInt("Level2Unlock") > 0; ve PlayerPrefs.SetInt("Level2Unlock", 1); PlayerPrefs.Save(); kodlarını referans alabilirsiniz.”

      • Sıddık Çiçek dedi ki:

        bool değişkeni doğru ve yanlış döndürüyor. PlayerPrefs.SetInt(“Level2Unlock”, 1); yazarak Level2Unlock Key’i oluşturuyoruz ve sadece 0 ve 1 değerlerini aldığı için 1 değerini verdik. PlayerPrefs.Save(); yazarak set ettiğimiz PlayerPrefs’i kaydediyoruz.
        PlayerPrefs.GetInt(“Level2Unlock”) > 0; yazarak Level2Unlock adındaki KEY 0’dan büyükse levelAcildiMi değişkeni true dönsün istiyoruz. Ben burada eksik veyahut yanlış birşey mi anladım?

      • yasirkula dedi ki:

        Yazdıklarınız doğru. Level açıldığında SetInt(“…”,1) ile bunu pref’e kaydediyorsunuz, daha sonra “GetInt(“…”) > 0″ ile bunu kontrol ediyorsunuz. Bu kodları SeviyelerYoneticisi’nde kullanabilirsiniz.

      • Sıddık Çiçek dedi ki:

        hocam benim oyunumda 1. bölüm bitince bölüm seçiminin yapıldığı sahneye geçiliyor. Ardından karakter seçimine geçiş yapılıyor ondan sonra 2. bölüme geçiyor. Ben bu durumda karakter seçiminin yapıldığı scripte mi eklemeliyim bu durumda?

      • yasirkula dedi ki:

        Bunun belli bir kuralı yok. Oyununuzun gereksinimlerine göre kendiniz karar vermeniz lazım. Bu kilit ekranı kodu olduğu için, ben olsam GetInt’li kodları bölüm seçimi sahnesine, SetInt’li kodları da yeni bölümün unlock olduğu yerlere eklerdim. İsterseniz internette kilitli leveller konusunda video ders bulmaya çalışın, belki kafanızda kalan noktalarda benden daha yardımcı olabilir.

      • Sıddık Çiçek dedi ki:

        Anladım hocam tamamdır teşekkür ederim.

  98. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam, yaptığım proje de bölümden menüye gidildiğinde menü deki butonlar çalışmaz oluyorlar. Ne yapabilirim?

    • yasirkula dedi ki:

      Aleykümselam. Sahnede Event System objesi olduğundan emin olun. Butonların On Click event’ine Inspector’dan değer verdiyseniz, çalışmadıkları anda Inspector’dan değerlerini kontrol edin. Koddan değer verdiyseniz, kodun alakalı kısımlarına Debug.Log’lar koyarak kodun nereye kadar çalıştığını kontrol edin.

      • Sıddık Çiçek dedi ki:

        Hocam baktım. Butonların kodlarının bulunduğu boş bir obje var. Onun içerisine butonları attım. Ama bu attığım butonlar menu sahnesinden ilerlediğim zaman kayboluyorlar. Missing (GameObject) yazıyor ondan dolayı tekrar menu sahnesine girdiğimde butonların çalışmadığını anladım da bu durumda ne yapabilirim?

      • yasirkula dedi ki:

        On Click’te verdiğiniz fonksiyon Missing diyor diye anlıyorum. Bu durumda butonlar DontDestroyOnLoad olup, boş obje DontDestroyOnLoad olmuyor olabilir. Veya bir şekilde o boş objeyi yok ediyorsunuzdur.

      • Sıddık Çiçek dedi ki:

        hımm anladım hocam yardımınız teşekkür ederim.

  99. yuko dedi ki:

    Merhaba hocam öncelikle emekleriniz için teşekkürler. Bir sorum olacaktı.
    Unity de yaptığım projemdeki texture boyutları çok yüksek olduğundan kamera dönüşlerinde donmalar ve takılmalar oluyor. Kalite ayarlarından texture kalitesini düşürünce düzeliyor ama ben kaliteyi bozmak istemiyorum. Acaba texture kalitesi yakından orjinal kalitede gösterip uzak detay seviyesinin otomatik kalitesinin düşmesini nasıl yapabilirim?

  100. Sıddık Çiçek dedi ki:

    Hocam bir soru daha soracaktım. Ben level kilit sistemi yaptım. Ama PlayerPrefs ile kaydetmenin yolunu bulamadım. Yardımcı olur musunuz?

  101. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam, ben Unity ‘de oyun yapmaya çalışırkene pc çok kasıyor ve beni çok yavaşlatıyor. Sizce pc’ de hangi parçaları yükseltirsem daha rahat çalışabilirim?
    PC özellikleri;

    İşlemci Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz 2.39 GHz
    Takılı RAM 8,00 GB (kullanılabilir: 7,90 GB)
    Sistem türü 64 bit işletim sistemi, x64 tabanlı işlemci

    • yasirkula dedi ki:

      Aleykümselam. Eğer dizüstü bilgisayar kullanıyorsanız, Unity’nin tümleşik ekran kartınızı değil de (Intel HD 4000 vb.) harici ekran kartınızı (NVIDIA vb.) kullandığından emin olun. Aksi taktirde, sorun projenin kendisinde çok ciddi bir optimizasyon sorunu olması değilse ve hard diskinizde zaten yeterince boş yer varsa, o zaman ekran kartı ve RAM’i yükseltmek bence de işe yarayabilir. Hard diskinizi de HDD’den SSD’e geçirmek faydalı olabilir.

      • Sıddık Çiçek dedi ki:

        dizüstü pc var bende, harici ekran kartım yok pc de. sadece Intel var. Unity birkaç kez GPU hatası vermişti. Ciddi optimizasyon sorunundan dolayı GPU hatası mı alıyorum yoksa. Hard diskte yeterince yer var. pc de SSD ‘de var. Yine de Ekran kartı ve RAM ‘i yükseltmem bu durumda yine de yeterli olur mu sizce.

      • yasirkula dedi ki:

        Yükseltirseniz ve sonra işe yaramazsa diye ben bir şey diyemiyorum, bunun sorumluluğunu alamam. Profiler kullanarak oyunun niye takıldığına bakın önce bence.

      • Sıddık Çiçek dedi ki:

        anladım hocam tamam teşekkür ederim.

  102. HatamatoSamurai dedi ki:

    Selamın aleyküm hocam,oyunuma ödüllü reklam koymak istedim gerekli Googleads plugin dosyasını indirdim projeme import ettim fakat force resolve yaparken hatayla karşılaştım.Projemden pluginleri sildim ve tekrar denedim fakat bu sefer bu gerekli Google adds pluginlerini seçmeye çalışırken bazılarını seçemedim yani yanına tik koymaya çalışıyorum ama olmuyor.İnternette bakmadığım site kalmadı hocam sizi rahatsiz etmek zorunda kaldım 😦

    • yasirkula dedi ki:

      Aleykümselam. Solunda tik yok derken, import ederken hangi dosyaların import edileceğini seçtiğiniz yeri kastediyorsanız, o solunda tik olmayan dosyalar zaten projede vardır demektir (o konumda veya başka bir konumda). Onları tikleyememenizin bir sıkıntı oluşturmaması lazım.

  103. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam, projemin pc’de kaydedildiği yerden klasör halinde alsam başka bir proje açıp ona atsam herhangi bir zarar gelir mi? Projem şu anda IOS ‘ a uyarlandı. Android ‘e çevirmek çok fazla zaman kaybına yol açacağı için böyle bir şey yapmayı düşündüm de dedim acaba sıkıntı çıkabilir mi sizce?

    • yasirkula dedi ki:

      Proje klasörünü kopyalayıp başka bir yere yapıştırın, akabinde Unity Hub’da Open butonu ile açın. Bence yeni bir proje açıp onun üzerine yapıştırmayın.

      • Sıddık Çiçek dedi ki:

        Anladım hocam, peki IOS ‘tan Android ‘e çevirmek için build settings’ i kullanmak çok zaman kaybına ol açıyor. Farklı bir yoldan projeyi Android’ e çevirebilir miyim? Ve anlamadığım nokta neden direk yeni bir proje üzerine yapıştırmamamı söylediğiniz?

      • yasirkula dedi ki:

        Mevcut projenin üzerine yapıştırınca belki bir sıkıntı vs. olur diye dedim. Platformlar arası geçişi daha hızlandırmanın bir yöntemini bilmiyorum ama projeyi ilk kez açarken, Unity Hub’da hangi platform ile açacağınızı belirleyebiliyorsunuz. O sayede, projenin ilk açılışta önce iOS için hazırlanmasını bekleyip hemen akabinde Android için hazırlanmasını beklemeniz gerekmiyor. Unity Hub’da Android ile açmayı seçerseniz, sadece Android için hazırlanmasını bekliyorsunuz.

      • Sıddık Çiçek dedi ki:

        Hımm bu özelliği bilmiyordum teşşekkür ederim yardımlarınızdan dolayı hayırlı akşamlar 🙂

      • yasirkula dedi ki:

        Rica ederim size de hayırlı akşamlar ^^

  104. Blackjack dedi ki:

    Merhaba hocam bir sorum olacaktı ben bir projeyi açar açmaz build ve key dosyası aldım yani projede hiç birsey yokken.Şimdi oyunumu bitirdim fakat ne yapacağımı bilmiyorum yeni bir build ve key dosyası almalı mıyım yoksa key dosyası kalsın eski buildin üzerine yeni bir build alabiliyorsam almalı mıyım ne yapacağım bilemiyorum.

  105. HatamatoSamurai dedi ki:

    Hocam merhabalar bundan birkaç hafta önce buraya yazdığım bir sorunla tekrar karşılaştım.Hocam 5 tane butonum var ve hepsine aynı kod dosyasına atadım.Hepsinin buton scriptide aynı kod dosyasında.Örnek olarak iki tane butonun scriptini yazıyorum.

    using TMPro;

    int para =100;

    TextMeshProUGUI para_txt;

    public void evinsabir()
    {
    İnt para -=20;
    para_txt.text=para.ToString();
    }

    public void evinsaiki()
    {
    İnt para -=30;
    para_txt.text=para.ToString();
    }

    private void start()
    {
    para_txt=GameObjectFind(“Canvas/birinciev”).GetComponent()
    }

    Hocam bu iki butona sırası ile tıkladığımda paramın 50 olması gerekirken ilk butona tıkladığımda 80 ikinci butona tıkladïğımda param 70 oluyor yani 80 den 30 eksilecegine 100den 30eksiliyor umarım anlatabilmişimdir. yardımcı olursanız çok sevinirim.

    • yasirkula dedi ki:

      “int para -=20;” kodunuzun esasen “para -=20;” olduğunu varsayarsak, ben attığınız kodda halen bir sorun görmüyorum. Bu scripti her butona ayrı ayrı component olarak verdiyseniz ancak o zaman sıkıntı çıkar, bunun için de scripti sadece ama sadece tek bir objeye component olarak vermelisiniz. Ya da para’yı static yapabilirsiniz ama bu ekstra sorunlara yol açar mı kontrol etmeniz lazım.

      • HatamatoSamurai dedi ki:

        Uykusuzluktan hocam:)
        public static int para =100; başka bir kod dosyasına attım lazım olduğunda da
        koddosyasininadi.para-=50;
        Yazarak sorunu çözdüm
        Teşekkürler

  106. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam, bilgi ve tecrübelerinize dayanarak bir soru sormak istiyorum. Yapmak istediğim bir oyunu 2 farklı projede yapmayı düşünüyorum. Ama şu şekilde bir tanesini Android uyumlu, diğerini IOS uyumlu yapmayı düşünüyorum. Her iki projede de aynı anda ilerlemeyi düşünüyorum. Bunu düşünmemin sebebi şu anda üzerinde uğraştığım proje android uyumlu idi IOS ‘a çevirdim 5 saatimi aldı. Ondan dolayı en baştan biri IOS diğeri Android ‘e hazır olacak şekilde en baştan hazırlayıp sonra projeye başlayayım diyorum. Sizce nasıl olur?

    • yasirkula dedi ki:

      Projeyi iOS’a çevirmeniz niçin 5 saat sürmüştü?

      • Sıddık Çiçek dedi ki:

        Valla hocam 3 gün önce size de “unity de Build Settings ‘de IOS ‘a hazır hale getirmek için switch platform’a basarak hazır hale getiriliyor ya bu hazır hale getirilme aşamasında ki süre oyunun boyutunun fazlalığına göre artış gösterir mi? sorusunu bunun için sormuştum. Oun boyutunun fazlalığı süreyi arttırır demiştiniz. Oyun 6 GB yer kaplıyor pc ‘de birde.

      • yasirkula dedi ki:

        Anladım o anlamda çevirmekten bahsediyorsunuz. Tabi size kalmış ama ben kendim asla 2 proje açmazdım. Çok sık platform geçişi yapacaksam, şu tarz bir asset kullanmayı düşünebilirdim: https://assetstore.unity.com/packages/tools/utilities/turbo-switch-pro-60040

      • Sıddık Çiçek dedi ki:

        Hım anladım hocam, peki bu assetin benzeri işlevi gören ücretsiz bir asset var mı bildiğniz?

      • yasirkula dedi ki:

        Maalesef araştırma yapmadım. “unity faster platform switch” şeklinde arama yapıp ne var ne yok kontrol edebilirsiniz.

      • Sıddık Çiçek dedi ki:

        Tamam hocam Allah razı olsun. Çok yardımcı oldunuz. 🙂

      • yasirkula dedi ki:

        Estağfurullah, sizden de 🙂

      • Sıddık Çiçek dedi ki:

        Amin, cümlemizden inşallah 🙂

  107. Sıddık Çiçek dedi ki:

    Sleamun aleküm hocam, samplescene hatası alıyorum. 0234, 0246 hatalarını alıyorum. İstemeden Sample Scene dosyasından bir şey sildim. bu hatayı aldım. Nasıl bir yol izlemeliyim?
    0234 –> Assets\SampleScenes\Scripts\ParticleSceneControls.cs(6,27): error CS0234: The type or namespace name ‘Effects’ does not exist in the namespace ‘UnityStandardAssets’ (are you missing an assembly reference?)
    0246 –> Assets\SampleScenes\Scripts\ParticleSceneControls.cs(40,17): error CS0246: The type or namespace name ‘ParticleSystemMultiplier’ could not be found (are you missing a using directive or an assembly reference?)

    • yasirkula dedi ki:

      Yeni bir proje oluşturup onun SampleScene dosyalarını bu projeye kopyalamayı deneyebilirsiniz. SampleScene ile işiniz yoksa, onunla bağlantılı tüm assetleri silin derim.

  108. Sıddık Çiçek dedi ki:

    Selamun aleykküm hocam, kod ile unity de labirent duvarı nasıl oluşturabilirim?

  109. Sıddık Çiçek dedi ki:

    Selamun aleküm hocam, unity de Build Settings ‘de IOS ‘a hazır hale getirmek için switch platform’a basarak hazır hale getiriliyor ya bu hazır hale getirilme aşamasında ki süre oyunun boyutunun fazlalığına göre artış gösterir mi?

  110. HatamatoSamurai dedi ki:

    Merhabalar hocam bir sorum olacaktı assetstore dan aldığım bir paketi projeme import ettiğim zaman mesela paket 500mb fakat ben 500mb lik paketin 10mb lik kısmını kullandım benim oyunumun boyutu 500mb mi olur 10mb mi?

  111. sıddık çiçek dedi ki:

    Selamun aleyküm hocam, unity de scene ‘ de iken etrafa rahatça bakammıyorum. Böyle tek bir noktadan etrafa bakmaya çalışıyorum ama anlam veremediğim bir halde? Normal şekilde kullanmaya nasıl geçiş sağlayabilirim?

    • sıddık çiçek dedi ki:

      Hocam o sıkıntıyı çözdüm ama unity remote kullanarak telefonda oyunu test ettmek istediğimde telefonda çözünürliğü çok düşük oluyor ama pc de hala normal çözünürlükte ne yapabilirim?

      • yasirkula dedi ki:

        Aleykümselam. Edit-Project Settings-Editor’deki Compression ve Resolution ayarlarını değiştirmeyi deneyebilirsiniz.

      • sıddık çiçek dedi ki:

        Tamamdir hocam tesekkur ederim

      • sıddık çiçek dedi ki:

        Hayırlı akşamlar hocam, IEnumerator, if içerisinde kullanılabiliyor mu bende StartCoroutine yazınca IEnumerator’a ulaşamıyor da ?

      • yasirkula dedi ki:

        Yazdığınız sıkıntılı kodu görebilir miyim?

      • sıddık çiçek dedi ki:

        public void Yildizlar()
        {

        if (toplamaManager1.goldSkor > 10 && toplamaManager1.goldSkor <= 40)
        {
        IEnumerator Yildiz()
        {
        yield return new WaitForSeconds(1f);
        solYildiz.SetActive(true);
        sagYildiz.SetActive(false);
        ortaYildiz.SetActive(false);
        }

        }
        Hocam oyuncu bölümü bitirince karşısına sonuç paneli çıkıyor o anda kazandığı yıldızları hemen değil de mesela 1 saniye bekleyerek görsün istiyorum ama bu IEnumerator fonksiyonunu çalıştıramıyorum. StartCoroutine (Yildiz()); yazdığımda adı geçerli bağlam da yok diyor.

      • yasirkula dedi ki:

        Yaptığınız şey local function olarak geçiyor (fonksiyon içinde fonksiyon tanımlamak) ama eski C# sürümlerinde desteklenmiyor. Bence Yildiz fonksiyonunu Yildizlar’ın içinden çıkarıp dışarıda tanımlayın ve ondan sonra tekrar StartCoroutine ile çağırmayı deneyin.

  112. Blackjack dedi ki:

    Merhaba hocam play store oyun yüklemek istiyorum fakat bilmediğim birkaç husus var.Oyun yüklediğimizde gelir elde edebilmek için şirket kurmamız gerekiyor mu ? İkinci olarak da play store da vergi olayı nasıl oluyor kendimizin gidip vergi vermesine gerek var mı yoksa play store vermemiz gereken vergiyi kendisi devlete veriyor mu? Bu soruları cevaplarsanız çok sevinirim hocam hayırlı günler.

    • yasirkula dedi ki:

      Avukat olmadığım için, bu dediklerime kesin bilgi gözüyle bakmayın. AdMob reklamları veya IAP/paralı oyun satışlarından gelir elde etmeniz için şirket kurmanız veya elle vergi vermeniz gerekmiyor. Para Google tarafından hesabınıza aktarılırken, vergi düşülüyor. Bunlar en azından benim şimdiye kadar aldığım izlenimler.

  113. HatamatoSamurai dedi ki:

    Hocam merhabalar. Unity de bir oyun geliştiriyorum fakat bir sorunum var.Oyunda belli bir param var ve üniversite, ev inşa ettiğimde param eksiliyor fakat şöyle bir sorunum var. Üniversite inşaa ettiğimde 1000 tl olan param 500 e düşüyor fakat sonrasında ev inşa ettiğimde 500 tl den 300 tlye düşmesi gerken param 1000tl den (başlangıç parasından) 800 tl ye düşüyor. Umarım anlatabilmişimdir hocam cevap verebilirseniz çok sevinirim.

    • yasirkula dedi ki:

      Kodunuzu görmeden yardımcı olamayacağım bir sorun ama kodunuz uzunsa da, tamamını maalesef kontrol edemem. İsterseniz kodunuzun ilgili kısımlarından birkaç satırlık yerler paylaşabilirsiniz.

      • HatamatoSamurai dedi ki:

        int para =1000;
        TextMeshProUGUI para_txt;

        private void start()
        {
        para_txt=GameObejctFind(“Canvas/para_txt”).GetComponent<TextMeshProUGUI>();
        }

        public void evinsabutonu(){
        if(para>=200)
        {
        para-=200;
        para_txt.text=para.ToString();
        }
        }

        public void karakolbutonu(){
        if(para>=500)
        {
        para-=500;
        para_txt.text=para.ToString()
        }
        }

        Hocam kodlar bu şekilde bir kısmını attım.

      • yasirkula dedi ki:

        Bu component’ten sadece 1 tane mi var yoksa her eve bu component’i verdiniz mi?

      • HatamatoSamurai dedi ki:

        Hocam bu component’ten bir tane var

      • yasirkula dedi ki:

        Bu sorun oyundan çıkıp girince veya sahneler arası geçiş yaptıktan sonra oluyorsa, parayı kaydetmiyorsunuzdur belki. Aksi taktirde kodunuzda bir sıkıntı görmüyorum.

      • HatamatoSamurai dedi ki:

        İlgilendiğiniz için çok teşekkür ederim hocam.Kolay gelsin.

  114. Emre dedi ki:

    Merhaba hocam. Oyunumun apk’sını telefona yükledikten sonra sadece ilk açıldığında , level başlangıcında aşırı kasma oluyor. Bu kasma daha sonra gidiyor ve hiç olmuyor. Oyunu kapattım açsam dahi o kasma ile karşılaşmıyorum. Bu olay sadece ilk yüklemenin akabinde açılan ilk oyunda oluyor.
    Hocam , bu sorunun çözümü için tavsiyeleriniz var mı?

  115. Ahmet dedi ki:

    Hocam merhabalar. Diyelim ki 100 indekse sahip bir liste alanım var. Kullanıcıdan 100 tane kelime girmesini isteyeceğim. Ardından girilen kelimeleri kaydetmek istiyorum PlayerPrefs.SetString ile.
    Ama her kelime için nasıl PlayerPrefs.Set oluşturacağım. Yardımcı olabilir misiniz?

  116. Sinan dedi ki:

    Merhaba ben animasyon optimizasyonu hakkinda fikir almaya geldim. Oyunumda 300tane küpe animasyon verdim. Animasyonlarda örnegin aynı anda 150 tanesi yukarı cıkıyor sonra diger 150 tanesi basliyor. Haliyle mobil oyunda illaki kasma yaratiyor. Animation controller yerine normal animation yapip ekledim. Gene de buyuk bir etki yaratmadı. Surekli calisacaklarindan pool olusturup render almamasınıda saglayamiyorum.Animasyonu çalışmayanlarda render oluyor. Bu tarz aynı objeler ve ayni animasyonlar icin bilindik bir yöntem var mı?

    • yasirkula dedi ki:

      Öncelikle animasyonları kapatıp sıkıntının animasyonlardan olduğundan emin olun. Eğer öyleyse, animasyonu DOTween ile vermeyi deneyebilirsiniz. Benim anladığım kadarıyla, animasyonunuz basit bir yukarı aşağı hareketten oluşuyor ve bu hareketi DOTween ile kolayca verebilirsiniz.

      • sinan dedi ki:

        Evet animasyonum sprite değiştirme ve sadece yukarı gibi basit bir animasyon.Animasyon kullanmak yerine kodla da yapabilirim.Ama update de 300 tane hareket kodu animasyona göre daha yük bindirir diye düşünmüştüm. Bir de kodla deneyeyim o zaman. Teşekkürler

      • yasirkula dedi ki:

        300 tane Update yerine, kodu ona göre ayarlayarak tek bir Update’te 300 animasyonu oynatabilirsiniz.

  117. Ahmet dedi ki:

    Hocam oyun içinde reklamlar için sadece Unity ads kullanıyorum. Gizlilik sözleşmesine buradaki 2 bağlantı yeterli olur mu

    .Unity–>> https://unity3d.com/legal/privacy-policy

    .Google Play hizmetleri –>> https://policies.google.com/privacy?hl=tr

    • yasirkula dedi ki:

      Bu konuda cevap verebilecek yetkinliğe sahip değilim maalesef. Ben sadece 2 linkten oluşan bir privacy policy görmedim ama dediğim gibi doğru yöntem nedir bilmiyorum.

  118. mehmet07 dedi ki:

    Hill Climb Racing oyunun rpm nasıl çalışır unity de bunu yapmaya çalışıyorum. Rpm yaptım ama hill climb racing gibi çalışmıyor. Bu konuda bilginiz var mı?

  119. Emin dedi ki:

    Hocam merhaba. Ben animator içerisindeki bir state’e dışarıdan duruma göre animation atamak istiyorum. Bu animation’ları “[SerializeField]” ile referans olarak elle ekleyip karakterimin seçimine göre istediğini oynatmasını sağlayacağım.

    1-) Bu animation’ları inspector penceresinde sürükle bırak yapamıyorum. Değişkeni “Animation” olarak yapınca olmuyor. GameObject mi yapayım? Bir problem olur mu?

    2-) Bu değişken olarak atadığım Animation’ları, State içerisindeki mevcut Animation ile yer değiştirmek istiyorum. Nasıl yapacağımı bulamadım. Yardımcı olur musunuz?

    • yasirkula dedi ki:

      Değişken türünüz AnimationClip olmalı. Bunları Animator’e oyun esnasında verebilmek için, Animator Controller’ınızdan bir Animator Override Controller oluşturup Animator component’inize onu vermeniz lazım. Daha sonra Animator Override Controller’ın GetOverrides ve ApplyOverrides fonksiyonlarını çağırabilirsiniz.

  120. Ahmet dedi ki:

    Merhaba,
    Yaptığım projelerde bir süre sonra fps drop yaşıyorum. Bir sahneyi 10-15 kere reload yapınca yada 10-15 bölüm ilerleyince fps drop başlıyor bu konuda ne yapmalıyım ?

  121. mehmet07 dedi ki:

    Google play deki oyunların assetlerini kullansak bir sorun olur mu.

    • yasirkula dedi ki:

      Başka oyunların asset’lerini izinsiz bir şekilde kullanmak sorun olur, o oyunun yapımcısı sizin oyununuzu keşfederse ve size dava açarsa haksız taraf siz olursunuz (avukat olmadığım için %100 kesin böyle olur demiyorum).

  122. wolf dedi ki:

    Oyunumda 2d nesne var bu nesne sağa sola döndükçe karakter animasyonu da ona göre ilerleyebilir mi bu konu hakkında bilginiz var mı?

    • yasirkula dedi ki:

      Biraz daha açar mısınız tam istediğiniz şeyi?

      • wolf dedi ki:

        2d nesne rotation z 0 dan 15’e değere ulaştığında animasyonun da 3. kareye gitmesini istiyorum sonra 2d nesne rotation z 15 den 0 gittiğinde animasyonun da 0. kareye gitmesini istiyorum. Bunu yapmanın bir yolu var mı ?

      • yasirkula dedi ki:

        Rotation 7.5’de iken animasyon 2. karede sabit mi kalacak?

      • wolf dedi ki:

        Yok hayır kalmayak rotation 1 ise animasyon 1. karede olacak
        Rotation 2 ise animasyon 2. karede olacak

      • yasirkula dedi ki:

        Rotation’la keyframe’i elle senkronize edecekseniz aklıma tek bir yöntem geliyor o da Animator’da o animasyonun Speed’ini 0 yapmak ve Update’te animator.PlayInFixedTime (veya animator.Play) fonksiyonu ile, mevcut rotation’a denk gelen keyframe’e elle geçiş yapmak.

      • wolf dedi ki:

        Cevaplarınız için teşekkür ederim

  123. wolf dedi ki:

    12 karelik animasyonum var 3. kareye kadar ilerlemesini istiyorum sonra tekrar en başa geri dönsün.
    Bunu yapmanın bir yolu var mı ?

    • yasirkula dedi ki:

      Aklıma 2 yöntem geliyor. En temizi, sadece o 3 karenin olduğu yeni bir AnimationClip kullanmak. Öbür yöntem ise, Animator Controller’a o animasyonu 2 kere sürükle-bırak yapmak ve bu 2 state arasında Condition’ı olmayan Transition’lar oluşturup bu Transition’ların Exit Time’larını 3. kareye denk gelecek şekilde değiştirmek ve bir yandan da Transition Duration’larını 0 ya da çok düşük bir değer yapmak.

      • wolf dedi ki:

        2. Yöntem karışık gibi geliyor ama 1. Yöntem daha iyi benim aklımda o vardı ama size danışmak istedim sağolun.

  124. ascacaxcasd dedi ki:

    Hocam oyunda sahneyi tekrar yüklediğimde ışıklandırma da kararmaya gidiliyor. Ne yapabilirim?

  125. mehmet07 dedi ki:

    2d araba oyunu yapıyorum da araba bir tümsekten atladığında sürücünün sarsılmasını istiyorum bunu nasıl yaparım asset var ama 3d

    • yasirkula dedi ki:

      Araba yarım saniye boyunca yere değmediyse tümsekten atlamış varsayıp karakteri sarsma kodunuzu çalıştırabilirsiniz.

  126. Emin dedi ki:

    Hocam kolay gelsin. Ben oyunuma birden fazla karakter koymak istiyorum ancak kendim tasarım konusunda bilgili değilim internetten ücretsiz bulabildiklerimi oyunuma ekleyeceğim. Tam da burada sorum var size; mixamo dan mesela eklediğim karakterleri oradaki animasyonları kullanarak güzel bir şeyler çıkartabiliyorum ancak ben dışarıdan bir 3D model bulduğumda onları mixamodaki karakter-iskelet-animasyona entegre edebilir miyim bilmiyorum. Yani şöyle; mixamodan indirdiğim karakterlere animasyonlara dışardan bulduğum 3D modelleri monte edebilir miyim bir şekilde boyutuyla vs. oynayıp veya sizin önerebileceğiniz bir yöntem araştırma başlığı var mı? Birden fazla karakter koymayı düşünüyorum oyunuma ondan dolayı böyle bir durum şart ve animasyon olarakta mixamoda istediğim çoğu şey var o yüzden oradan temin edip süreci kolaylaştırmak istiyorum.

    • yasirkula dedi ki:

      Unity’nin Humanoid sistemi bu yüzden var. Dışarıdan import ettiğiniz modeller Humanoid desteklediği sürece, Mixamo animasyonlarını çalıştırır. Yapmanız gereken, hem karakterin hem animasyonların Inspector’dan Rig’ini Humanoid yapmak ve hata olmadığından emin olmak.

  127. asdsadsadas dedi ki:

    Selamun aleyküm hocam. Ben yapmaya çalıştığım labirent oyunumda bulunan altınları ve elmasları bir yerde toplamak istiyorum yani şöyle ki oyuncu 3 bölümden toplamda 120 altın 23 elmas topladı mesela bunların hepsini bir yerde göstermek için playerprefs kullanmayı düşündüm ama sonrasına Prefer Binary Serialization ‘ın daha güvenli olduğunu öğrendim ama Prefer Binary Serialization ‘ı anlamadım ne yaptığını. Ben bu durumda sizce PleyerPrefs mi kullanmalıyım yoksa Prefer Binary Serialization ‘ı mı kullanmalıyım?

    • yasirkula dedi ki:

      Para gibi, hack’lenmesinin çok kolay olmamasını istediğiniz şeyler için binary serialization daha güvenilir. Bunun için “unity binary serialization” şeklinde arama yaparsanız, karşınıza çok sayıda kaynak çıkar.

  128. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam. Ben bu hatayı aldım da bana herhangi bir sıkıntı çıkartır mı? Ne yapabilirim?
    SerializedObject target has been destroyed.
    UnityEngine.StackTraceUtility:ExtractStackTrace ()
    Unity.Notifications.NotificationSettingsProvider:b__18_0 () (at C:/Users/carel/TheMazeGenerator/Library/PackageCache/com.unity.mobile.notifications@1.4.1/Editor/NotificationSettingsProvider.cs:70)
    UnityEditor.EditorApplication:Internal_CallGlobalEventHandler ()

    • yasirkula dedi ki:

      Bilinen bir hataya benziyor, bence sizle alakalı değil. “unity mobile notifications SerializedObject target has been destroyed” şeklinde arama yaparak görebilirsiniz.

  129. Emin dedi ki:

    Merhaba hocam. Ben Unity’de ekrana bir Image koyup, mouse ile o image’in üzerine tıkladığım zaman 3den geriye sayan bir sayaç yapmak istiyorum. Ancak mouse basılı iken image’n üzerinden mouse kaydırılırsa yani image sınırları dışına imleç kaydırılırsa veya parmak çekilirse iptal olması gerekiyor. Bunu normal kod olarak ekranın tümünde yazabiliyorum. Ancak, image üzerinde bu işlemi yapmayı beceremedim. Yardımcı olur musunuz? Teşekkürler.

  130. mehmet07 dedi ki:

    Unity 2d esneyen sopa nasıl yapılır esnediğinde eski haline geri dönebilen örnek verecek olursak tankın anteni gibi bunun hakkında tutorial var mı cevaplarınız için teşekkür ederim.

    • yasirkula dedi ki:

      Anten esnediğinde bile düz bir çizgi şeklinde olacak ve boyutu değişmeyecekse, bu bir Joint kullanarak mutlaka çözülebilir (ama hangi joint ve hangi ayarlarla bilmiyorum). Aksi taktirde, bu konuda benim bildiğim ücretsiz bir plugin yok, araştırmasını yapmadım. Siz araştırmasını “unity elastic rod” gibi bir aramayla yapabilirsiniz.

  131. Muhammet dedi ki:

    Merhaba,
    Sahnede Rigidbody ile duran objelerim var, başka bir obje animasyon ile bu objelere random olarak çarpmasını istiyorum, fakat animasyonla hareket verdiğim obje ilk önce diğer objelerin içine giriyor anlık olarak sonra itliyor, bu iç içe geçme sorununu nasıl çözerim ?
    Teşekkürler.

    • yasirkula dedi ki:

      Animation veya Animator kullanıyorsanız, obje fizik motorundan etkilenmeden verdiğiniz animasyonu takip eder. Objenizin çarptığı diğer objelerin daha gerçekçi tepki vermesini istiyorsanız, Animator’un “Update Mode”unu “Animate Physics” yapabilirsiniz. Aksi taktirde Animation/Animator kullanmak yerine normal Rigidbody fonksiyonlarını ve/veya NavMeshAgent fonksiyonlarını kullanmanız lazım.

  132. Muhammet dedi ki:

    Merhaba, build hakkında bir sorum olacak,
    Arm 64, arm7 ve Net 4.0 seçiyorum build alırken fakat çok azda olsa bazı 64 ve 32 bit cihazlarda oyun açılmıyor bunun sebebi ne olabilir. neyi araştırmam gerekiyor çözmek için.
    Teşekkürler.

  133. vaadddii dedi ki:

    Selamun aleyküm hocam. Ben canvas ‘ı prefab olarak ayarlayıp bu prefab ‘ı 2 farklı sahnede kullandım. Ama 3. sahne de artık kullanamaz oldum. Yani şöyle ki mesela pause canvası oluşturdum. Bu canvasta butonlar var. işlevselliğini filan hepsini ayarladım. ama çalışmaz oldular. Ne yapacağımı bilemedim kaç gündür.

    • yasirkula dedi ki:

      Aleykümselam; 3. sahnenizde Event System olduğundan emin olun. Eğer zaten varsa, butonlara tıklayabiliyor musunuz? Tıklayınca bir hata alıyor musunuz? Tıklayınca çalışan kodun en başına Debug.Log yazınca konsolda görüyor musunuz?

      • vaadddii dedi ki:

        Event System yokmuş hocam. şimdi oldu çok sağolun. hata da vermiyordu kullanılmaz haldeydi. Sağolun hocam

      • vaadddii dedi ki:

        hocam şimdi de Event System de var hata da yok ama oyun oynandığı sırada Pause butonuna basılmıyor. Debug.Log(); ekledim denedim, ama işlemiyor buton. Ne yapabilirim?

      • yasirkula dedi ki:

        Öncelikle EventSystem’î Hierarchy’den kapat aç yapmayı deneyin. İşe yaramazsa, tüm ekranı kaplayan görünmez bir UI objeniz var olabilir. EventSystem objesini seçerseniz Inspector’da imlecin altındaki obje hakkında bilgi edinebilirsiniz. Hangi obje tıklamalarınızı yiyor ona bakın.

      • vaadddii dedi ki:

        Hocam EventSystem ‘i açıp kapamak filan işe yaramadı ama Canvas ‘ın ayarını Screen Space – Camera olarak ayarlamıştım. Çalışmıyordu. Ama normal ayarına Screen Space – Overlay olarak ayalayınca çalışmaya başladı. Ben de anlamadım nası oldu bu iş ama teşekkür ederim hocam.

  134. Onur dedi ki:

    Iyi günler, neredeyse 10 gündür uğraşıp bir türlü çözemediğim bir sorun var. Benim bir oyunum var, tek sahneden oluşuyor ve reklam eklemeye çalışıyorum.

    Oyunu oynaması 10-15 saniye sürüyor. Oyuncu ölünce Restart butonu ile tekrar oynamaya başlıyor. Restart butonunda sadece sahneyi yeniden yükleme kodu bulunuyor. Bu şekilde sahneyi yeniden yükleyerek tekrar oynuyor.

    Fakat oyun çok kısa sürdüğü için (bazı durumlarda daha banner yüklenmeden oyuncu ölüp oyunu tekrar başlatabiliyor) Admob koduma singleton eklemeye karar verdim. Admob koduma singleton eklediğimde oyuna ilk başlayınca banner dummyler oluşuyor. Buraya kadar bir sorun yok. Fakat oyuncu ölüpte restart butonuna basarsa, banner dummyler kayboluyor. Çünkü kodum singleton ve bannerı sadece bir defa request ediyorum. Banner dummyler hiyerarşideki DontDestroyOnLoad objesinin altında gözükmüyor, sadece Admob kodu orada kalıyor ve bu yüzden kayboluyorlar. Fakat Android telefonda test ettiğimde bannerlar kaybolmuyor(Zaten bende bannerların kaybolmamasını istiyorum). Yani Android telefonda problemsiz çalışıyor gibi.

    Kod singleton olduğunda, RequestBanner fonksiyonunu bir defa çağırmam yeterli midir? Yani oyuna başlayınca ilk oluşan Bannerdummylerin, Sahneyi yeniden yükleme kodu ile sahneyi yeniden başlattığımda kaybolması normal midir? Yoksa orada da gözükmesi gerekli mi ?

    Sorun dediğim gibi, oluşan banner dummylerin DontDestroyOnLoad un altında gözükmemesi. Belki sadece editorde bu şekilde oluyor. Fakat telefonda, direk reklam geldiği için oyunun en tepesinde kalıp, müdahele edilmezse de oyun sonuna kadar, sahne geçişlerinde bile kalıyor. Umarım açıklayabilmişimdir.

    • yasirkula dedi ki:

      Bu sorun sadece editörde olur, bence bir değişiklik yapmanız gerekmiyor. ShowBanner fonksiyonunu 1 kere çağırdıktan sonra, HideBanner’ı çağırana kadar banner hep ekranda gözükür, sahne geçişlerinden etkilenmez (editör harici).

      • Onur dedi ki:

        Cevap için çok teşekkürler. Yani bu sadece editörde oluyor. Sadece kafamdaki soru işaretini gidermek adına bir sorum daha olacak.

        O zaman, ben 20 sahnelik bir oyun yaptım diyelim ve sadece ilk sahnesine Admob kodu koydum (singletonsuz) ve bu ilk sahneden banner request edip gösterttim. Diğer sahnelerde admob kodu olmasada telefona atarsam ilk sahnede oluştuğundan telefonda o banneri her sahnede göreceğim. Fakat editörde kod ilk sahnede olduğundan,sadece ilk sahnede göreceğim.

        Kodu eğer singleton yapsam yine aynı şekilde olacak. Editörde ilk sahnede, telefonda her sahnede banner oluşacak.

        Fakat singletonsuz her sahneye koysam bu sefer telefonda da editorde de her sahnede görebileceğim. Sorular saçma olabilir kusura bakmayın ama kafamda oturması için soruyorum, 1 haftadır bu sorunla uğraşıyorum.

      • yasirkula dedi ki:

        Yaptığınız varsayımların hepsi bence de doğru. AdMob editördeki reklam objesini DontDestroyOnLoad yapsaymış bu tarz bir sorun hiç olmazmış. İleride belki düzeltirler.

  135. Ali dedi ki:

    Merhaba, aşamadığım bir sorunum var:
    sahnede 2 tane 3d obje var ikisindede aynı script var.
    iki top çarpışınca tagları aynıysa başka bir scripte erişerek yeni bir obje oluşturmak istiyorum.
    ancak ikisindede OnCollisionEnter fonksiyonu çalıştığı için diğer scripte iki kere erişiyor ve 2 tane yeni obje oluşuyor.
    coroutine kullanarak yapmaya çalıştım fakat bu seferde aynı anda olan diğer çarpışmalarda obje oluşturamadım.
    bu sorunu nasıl aşarım ?

    (oyun türü: 3D 2048)
    teşekkür ederim.

    • yasirkula dedi ki:

      OnCollisionEnter’da gameObject.GetInstanceID() < collision.gameObject.GetInstanceID() koşulu true ise yeni objeyi oluşturabilirsiniz. Her objenin GetInstanceID()’si farklı bir int döndürür ve bu değerleri kıyaslayarak, kodun sadece bir objede çalışmasını sağlayabilirsiniz.

  136. MR. Sızz dedi ki:

    Selamin aleykum Yasir Bey, sizin görüşünüzü almak istiyorum bir konuda. Ben Unity üzerinden örnek amaçlı 2 tane oyun yaptım. Ardından şimdi bir başka oyun üzerinde uğraşmaktayım. Sorum şu olacak. Sizce örnek oyun devam ederek sadece kullanılan oyun kodlarını mı anlamaya çalışmalıyım yoksa Vector3 nedir ne değildir gibi araştırmalar yapıp, bu araştırmaları not alıp, aldığım notlarla kendi oyunumu yapmaya çalışmak mı daha faydalı olur?

    • yasirkula dedi ki:

      Bence ikisini de yapabilirsiniz. İzlediğiniz video derslerde öğrendiğiniz şeyleri not alıp, derste çok açıklanmayan kodları kendi başınıza araştırabilirsiniz. Aldığınız notları ara ara yeniden okumayı es geçmeyin, başlangıçta bu epey yardımcı oluyor. Ama eğer 2. seçenekten kastınız, Unity’nin dokümantasyonunu açıp tüm class’ların üzerinden tek tek geçmekse, bence öyle bir şey yapmayın. O class’ları yeri geldiğinde zaten öğrenirsiniz (ya takip ettiğiniz derste o class kullanılır ya da yaşadığınız bir problemi google’da aratınca o sınıfa denk gelirsiniz).

  137. Sıddık Çiçek dedi ki:

    Selamun aleyküm hocam ben labirent oyununda küreyi player olarak kullanıyorum. Kamerayı player ‘ı takip edecek şekilde ayarladım ama kamera tek açıdan bakıyor. Ama player sağa döndüğünde kamera da aynı yönde dönsün istiyorum. Nasıl yapabilirim?

    • yasirkula dedi ki:

      Player’ın gittiği yönü “Vector3 playerYon” değişkeninde tutuyorsunuz diyelim. Bu durumda, playerYon’ün değeri Vector3.zero olmadığı sürece, “Quaternion.LookRotation(playerYon).eulerAngles.y” ile kameranın Y ekseninde alması gerektiği açıyı bulabilirsiniz.

      • Sıddık Çiçek dedi ki:

        Hocam ben bu yazdığınız kodu
        [SerializeField]
        private GameObject kamera;

        [SerializeField]
        private GameObject player;

        private Vector3 mesafemiz;
        void Start()
        {
        mesafemiz = kamera.transform.position – player.transform.position;
        }

        void Update()
        {
        kamera.transform.position = player.transform.position + mesafemiz;
        }
        buraya nasıl uyarlayacağım. Çünkü kullanmış olduğunuz kod ile ilgili bir bilgim yok.

      • yasirkula dedi ki:

        Öncelikle “Vector3 playerYon” değişkenini bu script’e bir şekilde yedirmeniz lazım. Şu anda script player’ın gittiği yönü bilmiyor.

      • sıddık çiçek dedi ki:

        hımm tamam hocam sağolun.

  138. akncn57A dedi ki:

    Hocam Unity için bir forum oluşturma planınız var mı ? Gerçekten çok güzel olur. Yada böyle bir platform bilişyor musunuz ? Amatürkçe olursa iyi olur.

    • yasirkula dedi ki:

      Forum planım yok çünkü bence yeterince Türkçe forum var. “oyun programlama forum” veya “unity programlama forum” şeklinde aratırsanız, bu forumlardan bazılarını bulabilirsiniz (ben forumların hiçbirinde aktif üye değilim o yüzden şahsen önerebileceğim bir forum maalesef yok).

  139. sıddık çiçek dedi ki:

    Hocam bir şey daha soracağım. Unity ‘i 3d olarak kullanırken yanlışlıkla 2d olarak ayarlamış oldum klavye üzerinden nasıl düzeltebilirim ?

  140. Igrahiga dedi ki:

    Merhaba Yasir! Uzun yillardir senin sitenin takipcisiyim. Lutfen daha fazla ders icerikleri getir. Oldukca iyi anlamli ve bilgilendirici. Yeni dersleri sabirsizlikla bekliyorum. Mesela unity ile online/multiplayer oyun yapimi…
    Sunucu programlama gibi

    • yasirkula dedi ki:

      İlginize teşekkür ederim. Online oyun ile ilgili bir içerik yakın zamanda beklemeyin çünkü bu konuda kendimi geliştirmedim, yakın zamanda da geliştireceğimi sanmıyorum. Eskiden Numan Kaan Karataş’ın tam bu konularda dersleri vardı ama sonra kaldırdı sanırım. Bu konuda yabancı dersler izlemeye açıksanız, YouTube’da çok sayıda eğitim bulabilirsiniz.

  141. sıddık çiçek dedi ki:

    Selamun aleyküm Yasir hocam. Ben
    Animator animator;

    void Start()
    {
    animator = GetComponent();
    }

    void Update()
    {
    if(Input.GetKeyDown(KeyCode.W))
    {
    animator.SetTrigger(“YurumeyeBasla”);
    }
    if(Input.GetKeyUp(KeyCode.W))
    {
    animator.SetTrigger(“YurumeyiBitir”);
    }
    bu kodlar ile animasyon oynatmaya çalışıyorum. oluyor da ama bunu yaptığımda karakter olduğu yerde yürümekte. Benim asıl amacım ise

    public int speed = 10;

    Rigidbody rigb;

    void Start()
    {
    rigb = GetComponent();
    }

    void FixedUpdate()
    {
    float moveHorz = Input.GetAxis(“Horizontal”);

    float moveVert = Input.GetAxis(“Vertical”);

    Vector3 movement = new Vector3(moveHorz, 0.0f, moveVert);
    rigb.AddForce(movement * speed);
    }
    bu kodu kullandığımda GameObje’ nin hareketini sağlıyorum ama bunu animasyon karakterime uygulamak ve normal bir şekilde W ‘ye basıldığında ilerlemesini sağlamak istiyorum. Sizce ne yapabilirim?

  142. duman61 dedi ki:

    Merhaba Yasir Hocam android oyunuma admob ekledim, UnityEditorde hiç sorun yok ama build alıp telefonda deneyince bu hatayı alıyorum:

    AndroidJavaException: java.lang.ClassNotFoundException: com.google.unity.ads.UnityInterstitialAdCallback

    FORCE RESOLVE denedim ama işe yaramıyor ne yapabilirim acaba

  143. Erdinç dedi ki:

    Merhaba Yasir Bey, Unity ile hazırladığım oyuna AdMob ile reklam ekledim ancak APK’yı Play Console yüklediğim zaman “APK’nız veya Android App Bundle’ınız, gizlilik politikası gerektiren izinler kullanıyor: (android.permission.READ_PHONE_STATE). hatası alıyorum. Bir kaç yıl önce de reklam eklemiştim ama böyle bir şey çıkmamıştı. Yapabileceğim bir şey var mı?

  144. Barış Biltekin dedi ki:

    Yasir Bey, Unity kullanarak bir tarım uygulaması yapmayı düşünüyorum fakat doğru yöntemi, algoritmayı bir türlü bulamadım. Çünkü yapmayı düşündüğüm uygulama çok hassas gerçek dünya konum bilgisine ihtiyaç duyuyor ve yanılma payı 1m veya daha az olması gerekiyor. (GPS kullanmayı düşündüm ama GPS ‘in 15-20m yanılma payı olduğunu okudum.)

    Yapmayı düşündüğüm uygulama bir örnekle açıklamak gerekirse şöyle çalışıyor. Misal bir çiftçi içinde 1.000 adet meyve ağacı bulunan bahçesinde dolaşıyor. 50 numaralı ağacın yanında durup android cihazındaki uygulamadan o ağaç ile ilgili gerekli verilere ulaşıyor.

    Uygulama çiftçinin 50. ağacın yanında durduğunu nasıl tespit edebilir?

  145. JEEMSilver dedi ki:

    Yasir Bey selamlar 2 sorum olacak;

    1)

    Mobil oyunumda ekrana şu kodlar ile dokunarak player objemi hareket ettirebiliyorum.

    private void Update()
    {
    if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
    {
    Vector2 touchPosition = Input.GetTouch(0).deltaPosition;
    transform.Translate(touchPosition.x * movementSpeed * Time.deltaTime, touchPosition.y * movementSpeed * Time.deltaTime, 0);
    }
    }

    Sorun şu ki her telefonda farklı farklı çalışıyor. Benim telefonumda akıcı iken Başka telefonlarda parmağımı 3-4 kere kaydırarak hareket ettirmem gerekiyor. Sebebi ne olabilir?

    2)
    Farklı farklı telefonlarda kameranın gösterdiği alan değişiyor. Kendi telefonumda herşey normalken başka telefonda sanki Background image ler zoom yapılmış gibi. Kod ile düzelir denildi ama hiç bir fikrim yok.

    Çok teşekkür ederim

    • yasirkula dedi ki:

      1) Ekran çözünürlüklerine göre değişir. Sizin telefonunuzun ekran çözünürlüğü yüksekse, parmağınızı biraz kaydırarak 100 piksel touchPosition elde ederken, düşük çözünürlüklü cihazlarda aynı miktar parmak kaydırmanız 50 piksele denk gelebilir. Her cihazda aynı olması için, deltaPosition’ı Screen.width’e bölebilirsiniz. Akabinde sonucu büyük bir sayı ile çarpın (deneme-yanılma ile sayıya karar verebilirsiniz).
      2) Normalde kameraların dikey görüş alanı sabittir ama siz yatay görüş alanını sabit tutmak istiyor olabilirsiniz. O zaman: https://yasirkula.com/2020/09/12/unity-cerez-ders-kameranin-yatay-gorus-alanini-sabitlemek/

  146. NF dedi ki:

    İyi pazarlar,
    Bir konuda fikrinize ihtiyacım var.

    İki takımlı bir multiplayer proje oluşturdum,daha önce de sormuştum takımları sırasıyla kırmızı ve mavi gibi atacak o kısmı yaptım.Şimdi ise mavi takımda veya kırmızı takımda puan alan oyuncuların skorlarının toplamını herkesin görmesini sağlayacak bir UI oluşturmak istiyorum bunu nasıl yapabilirim.Kırmızı takım 5 puan,Mavi takım 7 puan vs… takım oyuncuları puan aldıkça o arayüze eklenecek bunu bütün oyuncular görecek(host,client).

    Teşekkürler.

    • yasirkula dedi ki:

      Skor olduğunda mutlaka server’da bir kod çalıştırıyorsunuzdur. Server’da aynı zamanda 2 adet int tutun, bunlar iki takımın skoru olsun. Server’daki skor kodu çalıştığında, ilgili takımın int’ini 1 artırın ve bu değişikliği tüm oyunculara bildirin. Oyuncular da UI’larındaki skoru o int ile değiştirsinler.

  147. Enes dedi ki:

    İyi akşamlar,
    Multiplayer bağlantıda sırasıyla giriş yapan oyuncuların birini bir takıma(mavi takım) birini bir takıma(kırmızı takım) atama işlemi yapmak için nasıl bir yol izlemeliyim sizce,desteğinizi rica edebilir miyim ?

    1.Oyuncu(Host)Mavi Takım – 2.Oyuncu(Client)Kırmızı Takım – 3.Oyuncu(Client)Mavi Takım – 4.Oyuncu(Client) Kırmızı Takım…gibi

    Teşekkürler.

    • yasirkula dedi ki:

      Teknik anlamda yardımcı olamam çünkü multiplayer bildiğim bir şey değil. Problemin özünde yapmanız gereken şey, (oyuncu sayısı % 2)’nin değeri 1 ise oyuncuyu mavi takıma vermek, yoksa kırmızı takıma vermek.

  148. Yasin Yürek dedi ki:

    Hocam merhaba, 2D bir projede karakterimin joystickten elimizi çektikten sonra hafif süzülmesini istediğim için rb.addforce kullandım. Rigidbody2D üzerinde gerekli lineerdrag – mass ayarlarınıda yaptım. gravity = 0 , oyunumda yerçekimi yok. İstediğim hareketi elde ettim. Kod aşağıdaki gibi.

    Vector2 force = new Vector2 (joystick.Horizontal() * joystickSpeed, joystick.Vertical() *joystickSpeed);
    rb.AddForce(force);

    Sorun şu ki bazen oyunu başlattığımda aşırı derecede hızlı hareket ediyor. Yaptığım ayarlar yok sayılıp sanki bir anda karakterin hızı 10 iken bir anda 50 yapılmış gibi oluyor. Sebebi ne olabilir? Şimdiden çok teşekkür ederim hocam.

    • yasirkula dedi ki:

      Oyunun başında velocity’i ve angularVelocity’i Vector3.zero yapmayı deneyebilirsiniz.

      • Yasin Yürek dedi ki:

        Malesef hocam işe yaramadı. Sorun sadece oyun başladığında değil yanlış belirttim yukarıda sanırım. Oyunu başlattım hareket normal. Sonra oyun çalışır vaziyette iken herhangi bir pencereye tıkladım (örn: inspector) sonra tekrar oyun penceresine tıklayıp hareket ettirdiğimde karakter aşırı hızlanıyor. Apk da bu sorun oyunu aşağı indirip geri açıldığında oluyor.

      • yasirkula dedi ki:

        Sonsuza kadar mı çok hızlı oluyor birkaç saniye sonra düzeliyor mu? Joystick’ten parmağınızı çekmeden oyunu aşağı alınca mı böyle oluyor yoksa hiçbir yere dokunmazken oyunu aşağı alınca da mı? Hiçbir yere dokunmazken aşağı alınca da oluyorsa, aşağı aldığınız oyunu tekrar açınca karakter kendiliğinden mi jet gibi gitmeye başlıyor yoksa sadece joysticki hareket ettirince mi jet gibi gitmeye başlıyor?

    • Yasin Yürek dedi ki:

      Hocam yine başka bir pencereye tıklayıp geri dönünce normale dönüyor. Başka bir pencereye tıklamazsak hep hızlı kalıyor. Hiçbir yere dokunmazken oyunu aşağı alınca oluyor. Karakter kendiliğinden hareket etmiyor hocam. Sadece joystick i hareket ettirince jet gibi oluyor.

      • yasirkula dedi ki:

        Projenizde OnApplicationPause ve OnApplicationFocus fonksiyonlarının kullanıldığı her yeri kontrol edin. Time.timeScale veya Time.fixedDeltaTime’ın değerlerini değiştirdiğiniz her yeri de kontrol edin, gerekirse bu değerleri Debug.Log ile yazıp konsoldan kontrol edin. Onun haricinde aklıma bir şey gelmiyor maalesef.

      • Yasin Yürek dedi ki:

        Anladım hocam. Çok teşekkür ederim.

  149. eYYUP dedi ki:

    HOCAM VERİ TABANI OLARAK HANGİ PROGRAMI ÖNERİRSİNİZ. UNİTY MYSQL DESTEĞİ DEVAM EDİYOR MU

  150. Emre dedi ki:

    Merhaba hocam. Script’imin içinde ArrayUtility.Contains(correctAnswers, slots[i].text) şeklinde kodum var. Bu kodla yapmaya çalıştığım şey, slots[i].text’in correctAnswers array’ının içinde olup olmadığını kontrol ediyorum.
    Gayette çalışıyor fakat build alırken The name ‘ArrayUtility’ does not exist in the current context şeklinde hata alıyorum araştırdığımda ArrayUtuility’nin Editor için kullanıldığını öğrendim.
    Yapmaya çalıştığım şey’i başka ne gibi yollarla yapabilirim? tavsiyelerinize ihtiyacım var.

    • yasirkula dedi ki:

      ArrayUtility sınıfı UnityEditor namespace’inde gözüküyor. O namespace sadece editörde çalışır, build alırken çalışmaz. System.Array.IndexOf(correctAnswers, slots[i].text) >= 0 kodunu deneyin.

  151. kmumcu dedi ki:

    Yasir Hocam Merhaba,

    Öncelikle verdiğiniz bilgiler için teşekkür ederim. Oyun yazılımcılığında yeniyim ve yazılarınızdan çok faydalandım.

    Yakın zamanda bir oyun yayınladım. Reklam olarak Admob kullanmıştım ancak hesabım askıya alındı. Özellikle ödüllü reklamlardan kazanılan hakların devam edebilmesi ve kullanıcıların sorun yaşamaması için Unity ads ile değiştirmeye karar verdim.
    Unity Ads’i eklerken sizin yönergelerinizden de faydalandım. Test reklamı olarak deneyip sorun olmadığını görünce, Test modunu false yapıp editör menüsündeki test kutucuğunun da seçili olmadığına emin olduktan sonra güncelleme yaparak yayınladım ancak halen test reklamı gösteriliyor. Nerede yanlış yapmış olabilirim? Yorum yapabilirseniz sevinirim.

    GameID yi ve test modunun doğru olduğunu birkaç kez kontrol ettim.
    Ancak Ads SDK için package manager dan son sürümü (SDK 3.7.1) güncellediğimde;

    GUID [4ac5b631b96354c75a98bb07d468da16] for asset ‘Packages/com.unity.ads/Plugins/iOS/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h’ conflicts with:
    ‘Assets/Plugins/iOS/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h’ (current owner)
    We can’t assign a new GUID because the asset is in an immutable folder. The asset will be ignored.

    Gibi çok sayıda hata alıyorum. Paketi silip asset Storedan SDK3.6.0 ı indirip kullandığımda bu hatalar olmuyor.
    Oyunu Asset Store’dan indirdiğim SDK ile derledim. SDK dan dolayı sorun yaşamış olabilir miyim?

    • yasirkula dedi ki:

      Unity Ads’i ya Asset Store’dan ya da Package Manager’dan import edin. İkisinden aynı anda import edince bahsettiğiniz hataları alırsınız. Package Manager’dan indirmeden önce, Asset Store’dan indirdiğiniz halini silmeniz lazım. Sorun bundan değildir bence ama bir süre beklemenize rağmen sıkıntı devam ediyorsa ve gerçekten de attığınız sürümde test modunun kapalı olduğundan %100 eminseniz maalesef benim aklıma bir şey gelmiyor 😦 İsterseniz Unity Dashboard’dan yeni bir project ve yeni reklam kimlikleri oluşturup onları kullanarak build alın.

      • kmumcu dedi ki:

        Yorumunuz için teşekkürler,
        Aslında ikisini aynı anda import etmiyorum Asset storedan indirdiğim paketi sildikten sonra package managerdan yüklüyorum. Ama bahsettiğim hataları alıyorum. Ama ilginç tarafı hataları console dan sildikten sonra build ederken ya da oyunu çalıştırırken tekrar almıyorum. Unity ilk açıldığında veya başka bir programa geçip tekrar unity ekranına geri geldiğimde hatalar geliyor.

      • yasirkula dedi ki:

        Window-Services’ta Ads açıksa kapatın.

  152. mehmet07 dedi ki:

    Unity’de Ekran Dışı Hedef Gösterge Oku nasıl yapılır

  153. Junior Developer dedi ki:

    Merhaba Yasir Bey,

    Öncelikle içerikleriniz çok kaliteli tebrik ederim. != null kullanımı hakkında bir yazınız var mı? null hakkında pek bilgi bulamıyorum. Kafama oturmadı. 🙂 Bu işlerde yeniyim. Şimdiden teşekkürler

    • yasirkula dedi ki:

      “!= null”, bir objenin null olup olmadığını kontrol ediyor. Değeri hiç verilmemiş değişkenler null olurlar, elle değeri null yapılan değişkenler null olurlar ve Unity’e özel olarak, Destroy ile yok edilen veya sahne geçişinde otomatik olarak yok olan objeleri depolayan değişkenler null olurlar.

      • acespoly1 dedi ki:

        Merhaba Yasir Bey, kusura bakmayın nereye yazacağımı bilemedim. Ben unity de bir oyun yaptım ve play console ‘a attım. Bazı hatalar var, rapor olarak göründü. Düzeltme yaptım, fakat oyunu silemiyorum, aktif de olmuyor. Düzeltmeyi de atamıyorum. 3 gündür hala incelemede diyor. Ne yapabilirim? Teşekkür ederim.

      • yasirkula dedi ki:

        Oyunların ilk kabulü 1 haftaya kadar sürebiliyor o yüzden en azından 1 hafta beklemenizi öneririm. Belki bazı güncellemeler de artık o kadar uzun sürüyordur. Oyun incelemedeyken şuradaki “Mevcut Bir Uygulamayı Güncellemek” adımları ile güncellemek işe yaramıyorsa, maalesef bir bilgim yok: https://yasirkula.com/2014/04/17/unity-android-oyununuzu-google-playe-yuklemek/

  154. Arif Cem Selçuk dedi ki:

    Yasir Bey Merhaba,

    Level sonundaki Boss’u yendiğimde tetiklenen finisih animasyonunda playerin o anki kaldığı pozisyondan (Ör: -2.48,3.25,0) 0,0,0 pozisyonuna gidip birkaç animasyon yapıp level complete ekranını yazdırmak istiyorum. Fakat animasyondan player’ı 2 saniye sonra 0,0,0 pozisyonuna aldıktan sonra play yapınca playeri hiç bir şekilde scene ekranında hareket ettiremiyorum. Boss’u yendikten sonra finish animasyonu çalıştığı için kendi kendine 0,0,0 pozisyonuna gidiyor. Fakat finish animasyonu tetiklenmeden öncesinde de playeri hareket ettiremiyorum.

    Sebebi ne olabilir sizce?

    • yasirkula dedi ki:

      Biraz karmaşık anlatmışsınız tam anlamamış olabilirim. Eğer animasyonda player’ın pozisyonu 0,0,0 olarak keyframe’lendiyse, o zaman animasyon player’ı oraya zıplatır. O transform.position keyframe’ini silerseniz düzelir. Ya da belki başka bir kod Update’te pozisyonu 0’a ayarlıyordur bilmiyorum.

      • Arif Cem Selçuk dedi ki:

        Haklsınız karışık olmuş şöyle anlatayım;

        Player karakterim Bossu öldürdüğü anda hangi koordinatta olursa olsun (atıyorum -2.5,-3.5,0) öldürdükten sonra 0,0,0 pozisyonuna nasıl getirebilirim?

        Bunu yapması için animasyonda finish klibi oluşturdum ve bu klip bool ile boss öldükten sonra true yaparak tetiklenerek çalışmasına rağmen unity de play tuşuna basara basmaz daha boss bile ortada yokken karakteri hiç hareket ettiremiyorum.

        Apply Motion diye bir tuş var bunu tikli hale getirince karakter hareket etmeye başlıyor fakat o zamanda 0,0,0 pozisyonuna gitmiyor.

      • yasirkula dedi ki:

        transform.position’ı Vector3.zero’ya eşitlemeyi denediniz mi?

  155. efe dedi ki:

    Yasir Hocam selamlar,

    Hocam yaklaşık 1 aydır Google Aile politikalarıyla uğraşıyorum internette bir bir çözüm bulamadım.
    Acaba siz yardımcı olabilir misiniz ?

    Hocam yaptığım uygulama herhangi bir bilgi istemiyor ve toplamıyor fakat yinede politika sorunu yaşıyorum. Google sorunu bu şekilde açıklıyor… bu sorunu nasıl çözebiliriz. Çoğu kaynakta Unity ile ilgili olduğu yazıyor ama bir cevap yok.

    ”İnceleme sırasında, uygulamanızın Aile Politikası Gereksinimlerini ihlal ettiğini tespit ettik . Uygulamanızın çocuklardan kişisel ve hassas bilgiler topladığını tespit ettik, ancak bu, Play Console’unuzun Hedef kitle ve içerik bölümünde açıklanmadı .

    Hedef kitlede çocukları içeren uygulamalar, uygulamanızda aranan veya kullanılan API’ler ve SDK’lar dahil olmak üzere, uygulamanızdaki tüm kişisel ve hassas bilgilerin toplanmasını ifşa etmenizi gerektiren tüm Aile Politikası gereksinimlerine uymalıdır. Daha fazla ayrıntı ve yaygın ihlal örnekleri için Aile Politikası Gereksinimleri sayfasını okuyabilirsiniz .

    Örneğin, uygulamanızın aşağıdaki kişisel ve hassas bilgileri topladığını tespit ettik:

    Reklam kimliği
    Android Cihaz Kimliği’

    • yasirkula dedi ki:

      Reklam veya analitik SDK’leri bu sorunu çıkarıyordur. Bu sorunla tam olarak nasıl başa çıkılır maalesef bilmiyorum, bilmediğimden atıp sallamak istemiyorum. Facebook’taki oyun geliştirici gruplarında veya oyun geliştirici forumlarında bu soruyu sormanızı öneririm (google’dan çözümü bulamazsanız).

  156. Arif Cem Selçuk dedi ki:

    Merhaba,

    2D Shooter oyunu yapıyorum ve şu şekilde sürekli ateş etmesini tanımladım;

    public float bulletRespawnTime;

    void Start()
    {
    StartCoroutine(ShootDelay());
    }

    IEnumerator ShootDelay()
    {
    while (true)
    {
    yield return new WaitForSeconds(bulletRespawnTime);
    Shoot();
    }
    }

    Fakat düşmanlardan random çıkan ateş hızı sıklığını arttırıcı bir boost ile trigger ettirdiğimde, trigger içerisine yazdığım yeni bulletRespawnTime değeri çalışmıyor. Sürekli start’ta verdiğim değer olarak kalıyor. Player, Boost’a trigger ettiğinde bu değeri nasıl değiştirebilirim? hatam nerededir.

    Teşekkürler

    • yasirkula dedi ki:

      Boost script’inden, Player script’indeki bulletRespawnTime’ı değiştirmeniz lazım: https://yasirkula.com/2019/07/27/unity-bir-scriptten-baska-bir-scriptteki-degiskene-ulasmak

      • Arif Cem Selçuk dedi ki:

        private void OnTriggerEnter2D(Collider2D collision)
        {
        if (collision.tag == “Player”)
        {
        PlayerManager.instance.bulletRespawnTime = 0.15f;
        }
        }

        0.15f saniye aralıklarla shoot fonksiyonunu çalıştırması için Boost scriptine üstteki triggerı yazdım fakat maalesef oyun başlamadan önceki girdiğim değer sabit kalıyor. Start fonksiyonunda Coroutine olarak çalışan bir değişken acaba değiştirelemiyor mu? Öyle birşey var mı ?

      • yasirkula dedi ki:

        Sahnede birden çok Player objesi olabilir mi? Player’ın tag’inin Player olduğuna emin misiniz? “if” koşulunun içine Debug.Log koyunca o log konsolda gözüküyor mu? Değiştirdiğiniz Bullet Respawn Time’ı Player’ı seçince Inspector’da görüyor musunuz?

      • Arif Cem Selçuk dedi ki:

        Çok enteresan ya 2 gündür çözemiyorum.

        Triggerin içerisine başka şeyler yazıyorum yada Debug.Log alıyorum sorunsuz çalışıyor. Playe demeden önce inspectorde atadığım değer neyse play dedikten sonra o sabit kalıyor. Kendim manuel değeri bile oynayamıyorum.

        çok enteresan ya. çözemiyorum yardım please.

      • yasirkula dedi ki:

        Değeri manuel değiştiremiyorsanız o değer mutlaka bir script’in Update’inde resetleniyordur. Aksi taktirde Inspector’dan değiştirememeniz mümkün değil.

      • Arif Cem Selçuk dedi ki:

        Haklıymışsınız. Gerçekten çok teşekkürler. Valla böyle bir sayfanız iyi var. Teşekkürler. Daha öncede faydanız dokunmuştu propertylerde. Saolun

  157. Ali dedi ki:

    Merhaba, iphone5s ve iPhone 6 da xcode da bu crash geliyor. Profiler dersinizi okuyarak tavsiye ettiğiniz optimizasyonları yaptım fakat garbage collector çok az fark etti. Sorum şu, hata mesajındaki 650 mb, neyi temsil ediyor ? kodlar mı grafikleri mi vs… bunu çözmem içi nereye bakmam gerek onu anlamak için soruyorum.
    Notlar;
    -Oyun 2D,
    -8k spritesheetler barındırıyor.
    -next level geçişlerinde alıyorum bu hatayı her zaman yapmıyor.
    -iphone 6 sonrası hiç bir cihazda bu sorun olmadı.

    Job.Worker 0 (9): EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=650 MB, unused=0x0)

    • yasirkula dedi ki:

      Unity’nin Memory Profiler paketini kullanabilirsiniz.

      • Ali dedi ki:

        Teşekkür ederim, spritesheet tarafında sorun yaşıyorum gibi duruyor. düşük cihazlarda çözünürlüklerini düşürebilir miyim? yani 5s ve 6 da 2k çözünürlük olsun, daha üst cihazlarda 8k olsun diye bir seçeneğimiz var mı acaba ?

      • yasirkula dedi ki:

        Asset Bundle veya Addressables ile olabilir (yalnız kendim kullanmadım, hiç tecrübem yok). Quality Settings’te de Texture Quality ayarı var, oyundaki TÜM texture’ların boyutunu düşürmeye yarıyor. Belki o da işinize yarar.

  158. ealgames dedi ki:

    Hocam iyi geceler aşamadığım bir problem var. Apk geri plana alınınca çalışmasını istemiyordum oyunumda Timera bağlı işleyişler bir hayli fazla ekran kitlendiğinde veya ana ekrana geçildiğinde aplication.quit kodunu işleyerek sorunu aştım ama şimdide admob eklediğim için oyun ads açıldığı zaman haliyle pause oluyor bu sefer oyunum kapanıyor Google ads üzerinden time.scale 0 değerini işleyen yeri keşfettim sildim ama yine bir sonuç elde edemedim bool ile çözmeye çalıştım ama reklam booldan önce işlediği için sonuç alamadım

    • yasirkula dedi ki:

      Reklam objesinin OnAdOpening event’i belki işinize yarar.

      • ealgames dedi ki:

        OnAdOpening bool gibi mi kullanmam gerekiyor kullanımı hakkında hiç bir fikrim yok

      • yasirkula dedi ki:

        OnAdOpening bir event. AdMob’un resmî Unity dokümantasyonunda kullanımını görebilirsiniz: https://developers.google.com/admob/unity/interstitial

      • ealgames dedi ki:

        Hocam oyunu yayınlayacağım bunu halledersem onadopening eventi gerçekleşince ReklamAcildi Bool u true işlesin istiyorum 3 gündür denemediğim yol kalmadı

        public void ReklamAcikIsle(object sender, EventArgs args)
        {
        ReklamAcildi = true;
        reklamObjesi.OnAdOpening+= ReklamAcikIsle;

        }

      • yasirkula dedi ki:

        Attığım linkte de göreceğiniz üzere, “reklamObjesi.OnAdOpening+= ReklamAcikIsle;” satırını “reklamObjesi = new …” satırının altına taşımanız lazım.

    • ealgames dedi ki:

      çok teşekkür ederim hocam bool true olarak aldım fakat işe yaramadı pause ile aynı anda bool kullanılmıyor sanırım reklamı gösteriyor uygulamayı kapatmadan fakat bu seferde reklam yokken koşul sağlanmasına rağmen uygulamayı kapatmıyor

      • yasirkula dedi ki:

        Reklamın OnAdClosed event’inde veya Unity’nin OnApplicationFocus/OnApplicationPause fonksiyonunda bool’u false yapmak gibi deneme-yanılmalar yapın derim.

      • ealgames dedi ki:

        Onadclosed eventinde bool u false yaparak denedim hocam zaten olmadı application quiti if içerisine alıp denedim, pause & & ReklamAcildi==false olarakta denedim sonuç vermedi unity fonksiyonlarıyla deneyeceğim şimdi ilginiz için çok teşekkür ederim sonucu yazarım belki başka birinin daha işine yarar.

      • ealgames dedi ki:

        hocam OnAplicationFocus !focus içinde bool ile istediğim verimi aldım çok çok çok teşekkür ederim

  159. Ali dedi ki:

    Merhaba,
    ilginç bir sorunum var bir çözüm bulamadım,
    Oyun projemi build&run ile çalıştırdığımda bir sorun olmadan çalışıyor, apk aldığımda bazı katmanlar gözükmüyor oyun içinde bir fikriniz var mı bu sorun ile ilgili ?

  160. Furkan dedi ki:

    Hocam iyi günler. Benim bir ok görselim var (pivotu görselin en alt kısmında) ve bu okun oyuncunun oyun sırasında fare ile tıklayıp açısını/rotation değiştirebilmesini istiyorum. Bunu nasıl sağlayabilirim.şimdiden çok teşekkürler

  161. disking dedi ki:

    merhabalar, unity hakkında bir sorum olacaktı oyuna admob reklamları ekledim samsung oppo gibi cihazlarda reklamlar gözüküyor herhangi bir sorun yok fakat xiaomi cihazlarda reklamlar gözükmüyor daha önce böyle bir sorunla karşılaştınız mı?

    şimdi telefonu bilgisayara bağlayıp baktım şu iki hatayı veriyor

    the webview is destroyed ignoring action
    not retrying to fetch app settings

    Test reklamları da gerçek reklamlar da xiaomi cihazlarda gözükmüyorlar diğer cihazlarda hiçbir sorun yok.

    Günlerdir bu sorunu arıyorum ve çözebilen olmadı en son bilgisayara format atıp sıfırdan kurulum yapacağım o duruma geldim yardımcı olursanız çok sevinirim.

    • yasirkula dedi ki:

      Ben yaşamadım ama bilgisayarla alakası olduğunu düşünmüyorum. Logcat’te “ad failed to load” şeklinde bir hata mesajı aramanızı öneririm. Bulursanız o hatayı google’da aratın.

      • disking dedi ki:

        Şöyle bir durum fark ettim ki reklam yükleniyor onda bir sorun yok fakat ekrana çıkmıyor. Bunu da şuradan fark ettim; benim bir ödüllü reklamım var o yüklenirse ekrana bir panel geliyor ve reklam izlenip oyuna devam ediliyor. Eğer yüklenmezse yani internet vs. olmama durumunda o panel hiç ekrana gelmiyor ve oyun bitiyor. Bu reklamın çıkmadığı telefonlarda o panel ekrana geliyor, yani reklam yükleniyor. Fakat sorun reklamın ekrana gelmemesi, yani yüklendiği halde gösterilmemesi. Bunu çözemedim önerebileceğiniz her hangi bir şey var mı?

      • yasirkula dedi ki:

        Tam reklam göstermek istediğiniz anda ekrana gelen başka hata mesajları var mı? Reklam gösterme kodunuzdan bir satır önce ve bir satır sonra Debug.Log koyduğunuzda onlar gözüküyor mu?

    • disking dedi ki:

      dediğiniz gibiymiş yüklemede sorun var diyor yani OnAdFailedToLoad giriyor. Ama sadece belirli cihazlarda bunu yapması mantıksız değil mi?

      • yasirkula dedi ki:

        Teoride garip; pratikte AdMob niye bu tarz hatalar verir hiç fikir üretemiyorum. AdMob dersimi yorumlara kapatarak AdMob’la ilişiğimi kestikten beridir kafam rahat.

      • disking dedi ki:

        Sanırım yapacak bir şeyim kalmadı. Her şeyi denedim denemediğim bir şey yok bu sorunu sanırım çözemeyeceğim başkalarının oyunlarında ve uygulamalarında aynı cihazda reklam gözükürken bende gözükmüyor pes edeceğim muhtemelen.

  162. Furkan dedi ki:

    Hocam öncelikle merhabalar. Uzundur çabaladığım ama bir türlü sonuca erişemediğim bir olay var. İki sahnemiz ve iki scriptimiz var. İlk sahnemizde bir topumuz var. Bu top aynı zamanda prefab olarak da kayıtlı. İlk sahne başlatıldığında bizi bir panel karşılıyor bu panelde bir çok image var. Hangi image a tıklanırsa topun SpriteRenderer compenentine o image gidiyor. Bu ilk sahne için işliyor. İkinci sahneye geçildiğinde bu topa ilk sahnede seçilen image nin aynısının eklenmesini istiyorum. Bu olayı nasıl gerçekleştirebiliriz hocam? Oyun çalışıyorken prefabdaki değişiklikleri prefaba anlık olarak kaydedebileceğimiz bir kod dizini var ise bu bizim işimizi görecektir. Araştırdım denedim ama maalesef başaramadım. Şimdiden teşekkür ederim.

    • yasirkula dedi ki:

      Image’lar listesinden kaçıncı sıradaki Image’ı oyuncunun seçtiğini PlayerPrefs’te tutabilirsiniz (SetInt). Ardından 2. sahnede bu indexi GetInt ile çekip o sıradaki Image’ı o sahnedeki topa verebilirsiniz.

      • Furkan dedi ki:

        Hocam çok teşekkürler fikriniz için. Dediğiniz gibi yaptım ve takır takır çalışıyor. 🙂

  163. mehmet07 dedi ki:

    public void Restart()
    {
    SceneManager.LoadScene(sceneIndex);
    }

    Oyun ilk açıldığında normal çalışıyor ama restart butonuna bastığım zaman oyunu yüklüyor ve daha sonra çalışmıyor.
    Oyunu duraklattığım zaman ve daha sonra resume butonuna bastığım zaman oyun normal şekilde çalışıyor.
    Bunun sebebi ne olabilir.

    • yasirkula dedi ki:

      Belki bir objenin OnDisable veya OnDestroy fonksiyonunda timeScale’i 0 yapıyorsunuzdur ve sahne kapanırken bu kod çalışıyordur.

      • mehmet07 dedi ki:

        Bu hatayı çözdüm. Şimdi bu hatayı alıyorum unity is already in list. you cannot locate the same versiyon. Bu hatayı nasıl çözebilirim.

      • yasirkula dedi ki:

        Unity Hub’ı silip tekrar kurarak veya Denetim Masası’ndan Ethernet/Wi-Fi’ı devre dışı bırakıp tekrar devre içi yaparak çözenler olmuş ama daha fazla çözüm yolu için hatayı google’lamanız lazım.

      • mehmet07 dedi ki:

        Hatayı unity ve hub tekrar install yaparak çözdüm cevaplarınız için teşekkür ederim.

  164. abdulmuttalip dedi ki:

    iyi akşamlar admob geçiş reklamında gerçek reklam id si kullanılmasına rağmen test reklamı çıkmasının sebebi ne olabilir.

    • yasirkula dedi ki:

      AddTestDevice fonksiyonunu kullanmadığınızdan emin olun ve oyunu silip tekrar kurmayı deneyin.

      • abdulmuttalip dedi ki:

        yani sorun kesinlikle yazılan kodlardan mı kaynaklanır

      • yasirkula dedi ki:

        Benim dersimde gösterdiğim 2 metot arasından sadece script’te AddTestDevice fonksiyonunu bırakmak bu soruna sebep olabilir. Mediation kullanıyorsanız ve ilgili reklam servisinin sitesinden test reklamlarını aktif hale getirdiyseniz, o zaman o ayarı tekrar kapatmalı ve biraz beklemelisiniz. Eğer sadece sizin cihazınızda test reklamları gözüküyorsa, belki şurada bahsettiği gibi AdMob arayüzünden cihaz ID’nizi test cihazı olarak eklemişsinizdir: https://support.google.com/admob/answer/9691433

  165. teknosy8 dedi ki:

    Merhaba,
    Admobta yeni reklam birimleri de çıktı. Native reklamlar gibi bunları singleton scriptinize eklemeyi düşünüyor musunuz?

  166. konfasaksimet dedi ki:

    Yasir Bey Merhaba,

    Emekleriniz ve yardımlarınız için çok teşekkürler, benim de kısa bir sorum olacaktı.

    2D shooter oyunu yapmaya çalışıyorum. Bölüm sonu çıkan bossunu prefabtan instantiate olarak tüm düşmanlar bittikten sonra türetiyorum ve sizin söylediğiniz gibi property ile bossun sağlıgını sürekli kontrol ettirebiliyorum. Fakat boss öldükten sonra animatik bir Level Complete ekranı çıkarmam gerekiyor. Haliyle boss’a atasam scripti boss ile birlikte yok oluyor. Başa bir gameobject’ten çağırsam da boss instantiate edilmediği zamanlarda null hatası alıyorum. Sizce ne yapmalıyım. Teşekkürler.

    • yasirkula dedi ki:

      Aklıma gelen iki yöntem var:

      – Boss objesini bir “public static Boss instance;” değişkeninde tutuyorsanız, boss.Saglik property’sine erişmeden önce if(boss) yaparak, boss’un henüz spawn olup olmadığını kontrol edin
      – Level Complete menüsünü çıkaran fonksiyonu GameManager gibi bir objeye verip, boss öldüğünde bu fonksiyonu çağırın

      • Arif Cem Selçuk dedi ki:

        Cevabınız için teşekkürler.

        İlk söylediğinizi deneyeceğim, inşallah becerebilirim.

        2. Söylediğiniz de bossun ölüp ölmediğini kontrol etmem için update fonksiyonundan sürekli kontrol etmem gerekli. Bu durumda Boss instantiate olmadığı zamanlarda nullexpect.. hatası veriyor.

      • yasirkula dedi ki:

        İlk cevabımda söylediğim if(boss)’u burada da kullanabilirsiniz. Daha güzel bir alternatif, boss’un sağlık property’sinin set fonksiyonunda değerin 0 veya altına inip inmediğine bakmak, inmişse level complete menüsü çıkarmak.

      • Arif Cem Selçuk dedi ki:

        Yasir Bey,

        Şu şekilde deniyorum ve update de bu fonkisyonu çalıştırdığım zaman prefab halindeki level1boss’u instantiate edilmediği zamanlarda (tüm düşmanlar yok olduktan sonra spawn oluyor) NullReferanceException hatası alıyorum.

        Not: health property Level1BossHealth scriptinde tanımlı.

        void LevelComplete()
        {
        if (Level1BossHealth.instance.HealthPoints <= 0 && Level1BossHealth.instance.gameObject!=null)
        {
        KillBoss();
        }
        }

      • yasirkula dedi ki:

        if (Level1BossHealth.instance && Level1BossHealth.instance.HealthPoints <= 0)

      • Arif Cem Selçuk dedi ki:

        Çok çok çok teşekkür ederim.

        if (Level1BossHealth.instance && Level1BossHealth.instance.HealthPoints <= 0)

        Dediğiniz bu işe yaradı. Boss gameobje'si yok oluyor ve Level Complete ekranı çıkıyor. Fakat boss gameobjesi yok olduktan sonra fonkiyon update hala çalıştığı için bu sefer de obje yok oldu diyip yine MissingReferenceExpection hatası veriyor. Sanırım burada ….!=null gibi birşeyler yazacağım? yada başka bir metod var mıdır?

      • yasirkula dedi ki:

        Açıkçası daha önce bahsettiğim property yolunu izlerseniz bu sorunların hiçbiri başınıza gelmez ve bunun doğru yolu da o. Ama Update kullanmak istiyorsanız da, hatanın geldiği satırın bu satır olduğuna emin misiniz?

      • Arif Cem Selçuk dedi ki:

        Property’i oluşturup kullanıyorum ama sadece set fonksiyonunda health i kontrol etmek için kullanıyordum. Destroy komutunu da oraya yazmayı hiç denememiştim. Şimdi deniyorum.

  167. ertugrul dedi ki:

    iyi günler Yasir bey.
    size bir sorum vardı.
    https://yasirkula.com/2014/05/26/unity-3d-android-oyunlariniza-admob-reklamlari-eklemek-resimli-anlatim/
    burada her ne kadar bu dersi artık güncellemeyi düşünmüyorum desenizde tekrar sormak istedim.
    Admob un yeni reklamı Rewarded interstitial ads (https://developers.google.com/admob/unity/rewarded-interstitial) “5) Singleton Reklam Scripti (Son Güncelleme 29.10.2019)” daki reklam scriptinize eklemeyi düşünüyor musunuz. ben biraz uğraştım ama başaramadım.
    kolay gelsin.

  168. ertugrul dedi ki:

    Yasir bey merhaba.
    Herşeyden önce bu siteniz ve yardımseverliğiniz için teşekkür ederim. Sizin gibi birisini bulmak zor.

    soruma gelecek olursam. sitenizde ayrıntılı bir şekilde lightingin anlatıldığı bir yer bulamadım. Acaba bu konuda bilginiz var mı?
    tünel gibi bir şeyin içinde ilerlerken içerdeki objelerin ve tünelin homojen bir şekilde aydınlanmasını istiyorum ama bir türlü yapamadım. directional light kullandığımda bir taraf gölge kalıyor. pointte ise yakın yer çok parlak oluyor. areayı ise yapamadım.
    bu konuda yardımcı olabilir misiniz?
    nasıl bir şey denemeliyim yada önerebileceğiniz bir kaynak var mı?
    şimdiden teşekkür ederim.
    iyi günler

    • yasirkula dedi ki:

      Kapalı alanların ışıklandırması konusunda benim de tecrübem yok ama point light’ın Intensity’sini kısıp Range’ini artırsanız, yeterli olmazsa bir de sahnenin Lighting Settings’indeki Ambient ışığın şiddetiyle oynasanız nasıl olur?

      • ertugrul dedi ki:

        zaman ayırdığınız ve cevap verdiğiniz için teşekkür ederim.
        dediğinizi yaptım ve ambient ışığını daha beyaz yapınca sorunum biraz düzeldi.
        teşekkür ederim.

  169. Yasin dedi ki:

    Abi selamün aleyküm.

    Abi bolt (visual scripting) daki gibi bir node editor yaptım. flow yapısı filan tamam. Kendi Inspector ümü nasıl yaparım. Kaynak var mıdır ? Şuan deneme yanılma ile bir şeyler deniyorum. İki farklı editor yapıp birbirine bağlamak mümkün mü? biri node editor olacak diğeri inspector editor? Ve hasıl kelam kendi inspectorumu yapıp node editordeki nodeları kontol etmek, yönetmek, companent eklemek vb istiyorum.

    • yasirkula dedi ki:

      Şu dersin OnInspectorGUI fonksiyonunda kendi Inspector’unuzu yazmaktan basitçe bahsettim ama editör script’leri aşırı derecede kapsamlı bir konu olduğu için, büyük olasılıkla “unity custom editor” şeklinde google araması yapıp karşınıza çıkan tonla derse bakmanız gerekecek 😀

      • yasin dedi ki:

        Abi inspector’den editorler windowu içinde bulunan node lara ulasmak mumkün mü ? Custom editor de var olan inspector’e buton vb. eklemeler yapılıyor. Inspector’den Editör panelindeki bir node’a ulaşabilir miyim ? Ben ulaşmak mümkün olmadığı için kendi inspector’ümü yazmak istiyorum. Var olan inspector dışında. iki editör windowu arasında ilişki kurmak istiyorum diğer bir deyişle. birinde node lar olacak. diğerinde nodun üzerine tıkladığımda o node’a buton text filan ekleme yapabileceğim. project paneli ile inspector paneli gibi.

      • yasirkula dedi ki:

        GetWindow fonksiyonu ile başka bir editör penceresine erişebilirsiniz. Ardından o pencerenin public değişken ve fonksiyonlarını kullanabilirsiniz.

      • yasin dedi ki:

        Diğer editördeki public değişkenlere ulaştığın, GetWindow fonksiyonu için örnek kod yazabilir misin abi rica etsem ?

      • yasirkula dedi ki:

        DigerEditor diger = GetWindow<DigerEditor>();
        diger.birPublicDegisken = true;

  170. Emre dedi ki:

    Merhaba hocam. Oyunlardaki oyun parası tutma işlemi(sahneler arası geçişlerde, oyunu kapatıp açınca vs.) nasıl yapılıyor. Araştırdığımda PlayerPrefs i buldum fakat bir yabancı kaynakta da önemli veriler için asla kullanmayın kolay hacklenebilir yazıyor. Sizce bu işlem için en doğru yol hangisi?

    • yasirkula dedi ki:

      Online oyunlarda paranın sunucularda tutulması gerekiyor ama offline oyunlarda PlayerPrefs’ten biraz daha güvenli olması için binary serialization (google BinaryFormatter) kullanabilirsiniz. Dosyayı persistentDataPath’e kaydedebilirsiniz.

  171. Ayse dedi ki:

    meraba
    benim objem çok hızlanınca duvarın arkasına geçiyor bunu nasıl çözerim acaba. hareketini transform.translate olarak verdim. hızı fazla yaparsam duvarı geçiyor. duvarı baya kalın yaptım collider de kalın yaptım yine de duvarı geçiyor hızı fazla olunca

    • yasirkula dedi ki:

      Rigidbody’nin Collision Detection ayarlarıyla oynayıp hareket kodunu rigidbodyComponenti.MovePosition olarak değiştirmek işe yaramıyorsa, “unity fast moving object goes through” şeklinde aramanız gerekecek.

  172. Anıl dedi ki:

    Maze Spawn On Mirror Network
    Yasir Hocam Merhaba. Ben script ile maze generate ediyorum ve oluşturduğum maze in aynısını servera join olan clientta göremiyorum. Orada farklı bir maze oluşuyor. Hem serverda hem clientta aynı maze i nasıl generate edebilirim? Network için Mirror kullanıyorum. Teşekkürler

    • yasirkula dedi ki:

      Maze generator’unuza elle seed girebiliyorsunuzdur diye düşünüyorum. Seed’in olayı, aynı değer için her zaman aynı maze’in oluşturulmasıdır. Yapmanız gereken, client’ta maze’i oluşturmadan önce, maze’in seed’ini server’dan çekmek ve maze generator’a aktarmak.

      • Anıl dedi ki:

        Geri dönüşünüz için teşekkürler hocam. Unity’de biraz amatörüm açıkçası. Bahsettiğiniz aşamaları hangi fonksiyonların içinde yapmam gerekiyor? Tekrar teşekkürler.

      • yasirkula dedi ki:

        Kullandığınız plugin’lerin kullanımını bilmiyorum, ben maalesef yardımcı olamayacağım. Maze generator plugin’ini yapan kişiden destek almanız lazım.

    • Anıl dedi ki:

      Plug-in kullanmıyorum hocam. Kendim generate ediyorum

      • yasirkula dedi ki:

        Maze generate etmeye başlamadan hemen önce Random.InitState fonksiyonunu çağırarak ile belli bir seed kullanabilirsiniz.

    • Anıl dedi ki:

      Network objesi olarak mı spawn etmek gerekiyo peki hocam yoksa scene de mi kalmalı maze objesi?

  173. Fatih dedi ki:

    Merhaba, 10 tane obje var oyunda diyelim. Bu objelere dokununca renkleri kırmızı oluyor diyelim. Buton özelliği olarak yani. 2. objeye dokununca kırmızı oluyor, 3. objeye dokununca da kırmızı olacak ancak 2. obje normal haline gelsin istiyoruz veya 8. objeye dokununca o kırmızı olsun önceki dokunduğumuz biri varsa o eski haline gelmiş olsun. Aklınıza gelen bir çözüm var mı

    • yasirkula dedi ki:

      Bir önceki dokunulan objeyi tutan “private static Obje oncekiObje;” değişkeniniz olur. Bir objeye tıklayınca, öncelikle oncekiObje’nin değerinin null olup olmadığına bakılır ve null değilse, oncekiObje’nin rengi normal haline getirilir. Ardından tıklanan obje kırmızı olur ve oncekiObje’ye değer olarak tıklanan obje verilir.

  174. Semih dedi ki:

    Merhaba. Yapmaya çalıştığım oyunda market bölümü var burada 5 sekme mevcut. (Altın, elmas, yakut, zümrüt …) Oyunun herhangi bir yerinde yukarıda bu mevcut sahip olduğu madenler gösteriliyor. Sahip olduğu altının yanında (+) işareti olduğunu düşünün. İstiyorum ki buna dokunduğunda marketteki altın sekmesi açılsın, elmasın yanındaki (+) dokunduğunda elmas sekmesi açılsın. Çok genel sordum farkındayım benim aklıma gelen şu, daha kolay yolu olmalı diye düşündüm.

    Altın (+) dokunduğunda kod olarak diyeceğim ki işte, altın kısımlarını aç, elması kapat, zümrütü kapat, yakutu kapat vs. Elmas(+) dokunursa da elması aç, altını kapat, zümrütü kapat gibi. Yani birini açmak isteyince diğerlerini de tek tek kapalı tutması gerektiğini söylemek zorunda mıyız.

    Veya buna da gerek yok sanırım. Markette 5 sekme var. (A B C D E). Şimdi ben A kısmını görünür yapmak için diyorum ki
    if A sekmesine dokunduğumda..
    {
    A.setactive(true)
    B.setactive(false)
    C.setactive(false)
    ..
    }
    Her kısım için böyle yapıyorum normal mi

    • yasirkula dedi ki:

      Tüm sekmeleri bir array’e koyup for döngüsü içinde hepsini kapatabilirsiniz ama yine aynı kapıya denk geliyor. Bence normal.

  175. Emre dedi ki:

    Merhaba hocam. İki buton var birinde mevcut sahneyi açıyor. Diğer butona basınca bir sonraki sahneyi açıyor. Sorunum şu; sonraki sahneyi açan butona basarsam seçilmeyen mevcut sahne 3 sahne sonra geri gelsin istiyorum. getActiveScene.buildIndex ile sahnenin indexi alıyorum ama onun indexin +3 e nasıl eşitleyebilirim. Böyle bir method var mı acaba?

    • yasirkula dedi ki:

      SceneManager.LoadScene’e mevcut sahnenin index’inin 3 fazlasını parametre olarak verebilirsiniz ama sanırım soru bu değil. Seçilmeyen mevcut sahneden ve bunun 3 sahne sonra geri gelmesinden bahseder misiniz? 1 sahne sonra ve 2 sahne sonra bir ileriki sahneyi açacak ama 3 sahne sonra 3 sahne geri mi gidecek? Oyunu 1 sahne sonra kapatıp tekrar açınca 2 sahne sonra 3 sahne geri mi gidecek? Tam anlamadım anlayacağınız.

      • Emre dedi ki:

        Hocam ilk dediğiniz isteğime daha uygun ama 3 sahne geri giderse aradaki yapılan sahneler sonradan tekrar karşımıza çıkar. Eğer sahne indexlerini kod içerisinde oynatabilme şansımız varsa ilk seçilmeyen sahnenin index[x]ini , [x+3].indexe atamak istiyorum ki seçilen sahneler tekrar karşıma çıkmasın.

      • yasirkula dedi ki:

        Elimizde 0,1,2,3,4 index’lerine sahip 5 sahne olsun. Bu index’ler üzerinden “şu şöyle olacak sonra şu index’e şöyle şey yapılacak” şeklinde gösterebilir misiniz?

      • Emre dedi ki:

        Hocam öncelikle her sahnenin açılışında panel geliyor.Panelde iki tuş var eğer kabul tuşu seçilirse panel deaktif olup mevcut sahneye giriyorsun mevcut sahne bittikten sonra bir sonraki sahneye geçiyorsun.Eğer reddet tuşunu seçersen bir sonraki sahneye atıyor aynı işlevi gören panel orada da var.
        5 Sahneleri örnekte şöyle anlatayım; Oyuna 0. indexten başlıyoruz kabul tuşuna bastık sahne bitti sonraki sahne(1.index) seçimine geçtik. 1.index panelinde reddet tuşuna bastık 1.indexli sahneyi göremeden. 2.index seçimine geçiyoruz. Bu reddedilen sahne(1.indexli) boşa gitmesin diye ((1+3) 4.index de tekrar görünmesini istiyorum.)

      • yasirkula dedi ki:

        Hangi index’teki sahnelerin reddedildiğini ve reddedildikten itibaren kaç sahne geçtiğini bir veri türünde tutmanız ve bunu her sahne geçişinde güncelleyip kaydetmeniz lazım. Kaydetmek için JsonUtility ile PlayerPrefs.SetString fonksiyonlarını beraber kullanabilirsiniz. Örnek bir veri türü:

        public class ReddedilenSahneler {
        public List sahneIndexleri = new List();
        public List gecenSahneSayilari = new List();
        }

        1. index’teki sahne reddedildiğinde sahneIndexleri’ne 1 eklenir ve gecenSahneSayilari’na 0 eklenir. Her sahne geçişinde gecenSahneSayilari’ndaki değerler 1 artırılır. Diyelim 2. sahne kabul edilir 3. sahne reddedilirse sahneIndexleri’ne 3 eklenir ve gecenSahneSayilari’na 0 eklenir. Yani şimdi sahneIndexleri [1,3] ve gecenSahneSayilari [2,0] değerlerinden oluşuyor. Bir sonraki sahneye geçtiğimizde gecenSahneSayilari [3,1] oldu. Buradaki ilk değer >= 3 olduğu için, sahneIndexleri’nden ve gecenSahneSayilari’ndan 0. index’teki eleman çıkarılır ve sahneIndexleri’nin eskiden 0. index’inde olan 1. index’teki sahne tekrar görünür.

      • Emre dedi ki:

        Sağolun hocam.Deneyeceğim

  176. mehmet07 dedi ki:

    Merhaba android uygulamada kullanıcı oyunu arka plana aldığında oyunu durdurmak işlemi nasıl olur

  177. Semih dedi ki:

    Selamlar, kodla değil de unity ile ilgili bir sorum var size. Yani öyle olduğunu düşünüyorum.

    Bir 3d küre objesi mevcut elimde. Bunu joystickle hareket ettiriyorum. Hızla duvara çarptığımda ve joystick’i bıraktığımda, küre kendi kendine dönmekte ve döndüğü için hareket etmekte. Anlaşılmadıysa farklı şekilde deniyorum şimdi, anlaşıldıysa okumayın lütfen vaktinizi çalmayım

    Duvara dönerek gidip çarptığımda sanki uzayda gibi bir etki oluyor sanırım, etki tepki gibi oradan çarpıp geri dönüyor ama ben olduğu yerde kalsın istiyorum. Dönüşünü engellemek çözüm değil hareket ederken dönmeli küre. Ancak bir yere çarpıp joystick bıraktığımda sekip geri gelmemeli. Bu sekme dediğim şey, duvara çarptığında dönüş olduğu için. Yani dönüşleri engellediğimde böyle bir problem yok. Ancak dönüşleri aktif ettiğimde çarpma hızıma bağlı top ters yönde dönüyor ve geri geliyor.

    • yasirkula dedi ki:

      Topun Rigidbody’sinin angularVelocity’si dönme hızını belirler. angularDrag ise bu değerin ne kadar hızlı bir şekilde 0’a döneceğini belirler. Joystick’i bırakınca angularDrag’i yükseltip joystick’e dokununca angularDrag’i düşürebilirsiniz.

  178. Ahmet Yılmaz dedi ki:

    Merhaba size ulaşabileceğim bir mail adresi var mı?

  179. Mustafa dedi ki:

    Hocam Merhaba ben bir karakter moment i yapmak istiyorum ama rotasyonu da dönsün yani unity standard assets ti Third Person Character karakter gibi sadece hareketi nasıl yaparım

    • yasirkula dedi ki:

      Karakterin rotation’ına Quaternion.LookRotation ile değer vermek bence en basit seçenek. Eğer karakterin dönüşünün yumuşak olmasını istiyorsanız, mevcut rotation’dan LookRotation’a Quaternion.Lerp ile lerp yapabilirsiniz.

      • Mustafa dedi ki:

        Hocam bir ornek verebilirmisinz

      • yasirkula dedi ki:

        Transform kamera;
        void Awake() { kamera = Camera.main.transform; }
        void Update()
        {
        Vector3 yon = kamera.forward * Input.GetAxis(“Vertical”) + kamera.right * Input.GetAxis(“Horizontal”);
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(yon), 10f * Time.deltaTime );
        }

      • Mustafa dedi ki:

        hocam tamam rotasyonu dönüyor istediğim gibi ama hareket ettirmediğim zaman eski rotasyonuna geri dönüyor

      • yasirkula dedi ki:

        Input.GetAxis’lerin ikisinin de değeri 0 ise Update’te yazdığım kodu çalıştırmayın.

      • Mustafa dedi ki:

        hocam tamam çözdüm sorunu Teşekkürler istediğim yöntem buydu
        if (Input.GetAxis(“Horizontal”) != 0 || Input.GetAxis(“Vertical”) != 0)
        {
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(new Vector3(Input.GetAxis(“Horizontal”), 0, Input.GetAxis(“Vertical”))), 10f * Time.deltaTime);
        transform.position += new Vector3(Input.GetAxis(“Horizontal”), 0, Input.GetAxis(“Vertical”)) * 3 * Time.deltaTime;
        }

  180. Ahmet A dedi ki:

    selamlar hocam
    benim bir joystick değişkenim var.
    Joystick joystick; olarak isimlendirdim. Yani Joystick diye bir tür var sanırım paket indirdim.
    Bunu public olarak atayamıyorum, çünkü prefabs dosyası olması gerekli. Prefabs dosyasını çağırdığımda da public olarak atadığım joystick yok oluyor.

    Joystick objesine tag verdim.
    Bunu awake fonksiyonunda joystick = GameObject.FindGameObjectWithTag(“JoyStick”);
    Fakat joystick ismini verdiğim şey sanırım bir gameobject değil de joystick olarak algılandığı için bu kodu kabul etmiyor.

    Bu joystick objesini nasıl public olmadan kod içinde tanıtabilirim.

  181. Semih dedi ki:

    Küre şeklinde 10 tane topum var diyelim. Bunlar 3 boyutlu. Farklı şekil ve desenlerde toplarım var. Bunları markette göstermek istiyorum nasıl yapabilirim. Market haliyle bir canvas olacak. Canvas üzerinde de 3d bir obje gösteremiyorum. Elimdeki toplar material şeklinde yani bir desen olarak atamıyorum. 3d objeleri canvas üzerinde nasıl gösterebiliriz mümkün müdür aklınıza bir çözüm geliyor mu bu topları markette sergilemek için. Cevaplarınız için teşekkür edemiyoruz meşgul etmemek adına sizi, her biri için çok teşekkürler

    • yasirkula dedi ki:

      Canvas’ın Render Mode’u Screen Space-Camera veya World Space olursa, canvas ile kamera arasında kalan objeler canvas’ın üzerine çizilir. Ancak scroll view’larda bu düzenin işe yarayacağını sanmıyorum çünkü 3D objeler, scroll view ile otomatik olarak hareket etmeyecek. Benim önerim, her topun screenshot’ını alıp png resim olarak kaydetmeniz ve UI’da bu screenshot’ları göstermeniz. Daha zorlu bir alternatif ise, her topu farklı bir kamera ile farklı bir RenderTexture’a render alıp bu RenderTexture’ları UI’da göstermek ama bu performansı çok etkiler. Başka çözüm yolları varsa da araştırmadığım için maalesef bilmiyorum.

      • Semih dedi ki:

        Ekran görüntüsü benim aklıma gelen tek çözümdü. Canvas Render Mode değiştirmem pek mümkün değil sanırım 3d objeleri göstermek adına. Akıl akıldan üstündür diye size de danışmak istedim sanırım en sorunsuz ekran görüntüsü almakla olacaktır. Bu şekilde oyunun boyutunu yükseltmek istememiştim. Şimdilik tek yol bu sanırım teşekkürler

  182. Semih dedi ki:

    İnternette videolar izlerken çoğu kişide inspector panelinde Image(Script) yazmakta. Farklı bir script mi mevcut acaba yani mutlaka indirilmesi gereken bir şey var da ben mi kaçırdım. Bende normal Image yazmakta.

    • yasirkula dedi ki:

      Belki sadece bazı Unity sürümlerinde (Script) yazıyordur. İzlediğiniz videolardaki Image’lar ile sizdeki Image aynı component’tir.

  183. mehmet07 dedi ki:

    Unity 2020.1.6 sürümünde android build ederken çok uzun bekliyorum. Diğer sürümlerde bu kadar zaman beklemedim. Graphics api düzenlenmesi nasıl olmalıdır?

    • yasirkula dedi ki:

      Belki Scripting Backend olarak Mono yerine IL2CPP seçilidir. Graphics API’den olduğundan emin misiniz?

      • mehmet07 dedi ki:

        Mono seçtim bu şekilde denedim ve bug dan dolayı hata verdi 2019 4 10 sürümünde başarılı Apk aldım cevabınız için teşekkür ederim.

  184. Emre dedi ki:

    Merhaba hocam. Tavsiyenize ihtiyacım var. Update içerisindeki bir fonksiyonumun sadece UI Buttonuna bastığımda çalışmasını nasıl sağlayabilirim? Input.GetKeyDown ile bunu başardım ama ben klavye tuşuna değilde ekrandaki Button a bastığımda olmasını istiyorum.

    • yasirkula dedi ki:

      Sadece butona basınca bir kod çalışacaksa bunun Update’te olmasına gerek yok. Butonun On Click event’ine verdiğiniz fonksiyonda ilgili kodu çalıştırabilirsiniz.

      • Emre dedi ki:

        Hocam ilgilendiğiniz için teşekkürler ama halihazırda Butonun on clickinde bir Coroutine var, kod da onun içine ekleyeceğim fonksiyonda update te olması lazım ama update coroutine in içine atınca görmüyor. update in ismin değiştirince de fonksiyon çalışmıyor ,update çalışan bir kod.

      • yasirkula dedi ki:

        public void ButonaBasildi() fonksiyonunuz olur ve bunu butonun On Click’ine eklersiniz (aynı anda 2 fonksiyon eklenebiliyor). Update’te de GetKeyDown olunca bu fonksiyonu çağırırsınız. Butona basılınca yapılacak şeyleri de fonksiyonun içine yazarsınız. İlla Update’in dışına taşmamalıyım diyorsanız, yazdığım SimpleInput plugin’ini kullanıp butonunuza Key Input UI component’i ekleyebilirsiniz.

  185. Semih dedi ki:

    Bir online oyunda oyuncunun kazandığı altın, elmas, ses seviyesini nerede tuttuğu, örneğin sessize almış oyunu, satın aldığı veya sahip olduğu eşyalar ve daha onlarca veri belki. Hepsini playerpref olarak bir yerde kayıt altına mı almak gerekiyor tek tek. Yani ses seviyesini en son nerede bırakmış bunu bir playerprefs içinde saklamamız mı gerekiyor.

    Animasyonlar dotween ile çok daha kolay örneğin, öncesinde gereksiz yere yormuşuz kendimizi. Bunun da bir kolay yolu veya işlemi var mıdır kayıt altına alınsın. Oyuncunun seçtiği ayarları, aldığı eşyaları, ilerlediği exp vb bilgileri kayıt altına alabileceğimiz bir sistem biliyor musunuz siz ne yapardınız

    • yasirkula dedi ki:

      Ses seviyesi gibi gameplay’e etkisi olmayan ayarları PlayerPrefs’te tutabilirsiniz ama bu bir online oyun olduğu için, altın sayısı gibi diğer tüm değerleri bir online veritabanında tutmalısınız yoksa oyuncular kolaylıkla hile programları vasıtasıyla altın sayılarını artırabilir. Ben nasıl yapardım emin olun bilmiyorum, hiç online oyun düşünmediğim için nereden araştırmaya başlardım onu hiç düşünmedim.

  186. Semih dedi ki:

    Unity üzerinde instantiate olarak prefab bir objeyi çağırıyoruz. (Photon ile online oyun yapmak için) ancak online kısmıyla çok alakalı olmadığını düşündüğüm bir problem var. Bu “player” prefabı içinde bir joystick ekli scriptinde. Efektler de ekli inspectorda görüyorum. Ancak bunu prefab olarak çağırdığımızda bu eklenen şeyler özelliğini yiritiyor. Yani joystick kullanılmaz hale geliyor efektler de gitmiş oluyor.

    Prefab olarak çağırılan dosyanın scriptine atanmış şeyleri nasıl birlikte çağırabiliriz.

    • yasirkula dedi ki:

      Prefab Instantiate olunca prefab’ın script’lerindeki değerler kaybolmaz. Ama diyelim sahnedeki bir prefab instance’ının bir değişkenine değer olarak sahnedeki bir objeyi verip sonra bu değişikliği prefab’a uygulamaya çalışırsanız, prefab’daki değer null olur çünkü asset’ler sahne objelerine referans bulunduramazlar. Bu sorunu çözmenin yolu, script’in Awake veya Start fonksiyonunda sahnedeki objeleri kod vasıtasıyla bulmak (örneğin GameObject.Find).

  187. Semih dedi ki:

    Az önce bir canvası açıp kapatmayı kodlamada setactive false true şeklinde yazmaktansa, buton içine istediğim objeyi atarak setactive kısmını açıp kapatabileceğimi öğrendim. Gerçekten bazı kısayolları bilmemek insana çok uzun zaman kaybettiriyor. Şu an menüleri açıp kapatma işlemini herhangi bir kod dosyasına ihtiyaç olmadan yapabiliyorum.

    Şöyle bir sorum olacak size. Market menüm var, burada 5 sekme var (altın, elmas, eşya…). Altına dokunduğumda altınla ilgili bilgiler geliyor ekrana, elmasa dokunduğumda altın kapanıp elmas bilgileri geliyor. Bu sekmelerden “altın” olana buton ekledim. OnClick{} özelliğine de bu 5 sekmeyi ekledim ve setactive kısımlarına altın detayları aktif, diğerleri kapalı olacak şekilde komut verdim. Benzerlerini diğer sekmeler için de yaptım. Fakat ileride yeni bir sekme eklendiğinde tekrar diğer 5inde de işlem yapmak istemiyorum. Şöyle bir şey var mı; Altın sekmesine dokunduğumda, diğer sekmeler kapansın. Bunu kodlama olmadan bir şekilde çözmenin yolunu biliyor musunuz acaba?

    • yasirkula dedi ki:

      Bence bu kod yazmadan mümkün değil.

      • Semih dedi ki:

        Anlıyorum, peki sizce kod yazmayla direkt olarak tuşa görev atama arasında bir fark görüyor musunuz. Kodlamada Menu.SetActive true yerine, buton özelliğinde menüyü oraya atıp setactive true yapmamız arasında.

      • yasirkula dedi ki:

        İşlevsel olarak bir farkı yok. Başta ben de butonlara Inspector’dan fonksiyon ekliyordum ama artık kod ile yapıyorum çünkü Visual Studio’da bir fonksiyonun kullanıldığı yerleri arattığımda, o fonksiyonun atandığı butonlar varsa onları da görmek istiyorum. Inspector’dan fonksiyon ekleyince bu mümkün değil.

  188. Emre dedi ki:

    Merhaba hocam.Dört triggerin doğru objeler tarafından tetiklenmesi ile tek bir sonuç çıkarmasını istiyorum. Bunu OnTrigger da Debug.Log ile denediğimde sonuçları ayrı ayrı gösteriyor. Eğer 4 tetiklenme de doğru ise tek bir sonuç(örneğin: kazandınız) göstermesini nasıl yapabilirim?

    • yasirkula dedi ki:

      Her trigger’ın bir bool’u olur, o trigger’ın doğru objeyle temas edip etmediğini tutar. Ardından tüm 4 trigger da bir List veya array’de tutulur ve Update’te bu dizideki tüm trigger’larının bool’unun true olup olmadığına bakılır.

  189. Emre dedi ki:

    Merhaba hocam tavsiyenize ihtiyacım var. Bir obje grubumun hiyerarşideki sıralamasıyla(listedeki sıralama da olabilir) kendi oluşturacağım sıralama ile aynı olup olmadığını kıyaslamak istiyorum.Aynı ise Win ekranı yazdıracağım. Bu kıyaslama işlemini nasıl yapabilirim?

  190. Mehmetcan dedi ki:

    Hocam selamlar, score++; yaptığımda score sürekli artıyor bunu nasıl çözebilirim.

    • yasirkula dedi ki:

      Sadece skorun artmasını istediğinizde o kodu çalıştırmanız lazım. Eğer kodu olduğu gibi Update’in içine koyarsanız, kod sürekli çalışır.

  191. Mehmetcan dedi ki:

    Hocam merhabalar. Rastgele konumlandırdığım şeylerin çakışmaması için ne yapmam lazım

  192. Furkan dedi ki:

    Hocam biliyorum siz unity kullanıyorsunuz genel olarak ama yine de sormam gereken bir olay var. Ben visual studioda windows form üzerinden bir oyun yapıyorum. Bir karakterimiz var ve sahneye rastgele labeller oluşuyor bu labellarda da rastgele sayılar var. Oyuncu ekrana rastgele çıkan sayıları en küçüğünden başlayarak üstlerine gitmek suretiyle en büyüğe doğru ilerleyecek. Sıkıntı şu ki, randomize oluşturduğumuz sayıların küçük veya büyük olarak toplanıp toplanmadığını nasıl anlayabiliriz? Ne tür bir kod gerekiyor? (Örneğin ekranda 5 8 9 varsa ilk başta 8 e giderse yanlış yaptığı için elenmeli) Şimdiden çok teşekkür ederim hocam 🙂

    • yasirkula dedi ki:

      Tüm sayılar bir List<int>’te tutulup tıklanan sayının bu List’teki en küçük sayıdan büyük olup olmadığına bakılır.

  193. Semih dedi ki:

    Merhaba, sitenizde animasyonlarla ilgili içerik göremedim geniş bir anlatım arşiviniz mevcut belki gözümden kaçmıştır kusura bakmayın öyleyse eğer.

    Kafatopu oyununu biliyor musunuz bilmem. Burada tüm kartların üzerinden parlama efekti geçmekte belirli bir süreyle. Sanki kartlar parlıyor gibi. Bunu nasıl sağlayabiliriz çok merak ediyorum. Veya sattıkları elmas, altın gibi yerlerde, bu kartların içinde rastgele olduğunu düşündüğüm ufak parlamalar yapıyorlar.

    Bu oyunda akıllara zarar bir şekilde sürekli bir hareketlilik, bir animasyon var gerçekten. Sabit herhangi bir şey hiç görmedim her şey oynuyor 🙂 Merakımı bu 2 animasyon çekti. Bunları kodla mı yoksa animasyonla mı sağlarız çözemedik.

    Özetlemek gerekirse: Bir dikdörtgen kart üzerinde rastgele yıldız parlamaları gibi belirip kaybolan bir animasyon veya kartın tamamının üzerinden geçen bir yansıma animasyonu oluşturmak istiyoruz. Sanki parlak bir cam gibi

    • yasirkula dedi ki:

      Elmastaki rastgele parlama için elmasın üzerinde bir parlama Texture’u oluşturmuşlar, buna sürekli saat yönünün tersine rotation vermişler ve arada bunu saydam yapıp sonra görünmez yapmışlar bence. Kartların parlaması için ise bir yöntem, karta Mask verip ardından beyaz gradient bir texture’u ara ara kartın alt kenarından üst kenarına doğru hareket ettirmek. Kartta Mask olduğu için, child objeleri Mask’ın dışında çizilmez.

  194. yücel dedi ki:

    Yasir Bey merhaba. Unity oyuna admin panel eklenebilir mi? nasıl? benim amacım oyuna güncelleme göndermeden admob reklamları panel üzerinden değiştirebilmek. Bununla ilgili yardımcı olursanız, siteniz için yazı hazırlarsanız sevinirim. Mutlu Yıllar.

  195. abdulmuttalip dedi ki:

    iyi günler yasir bey;
    ben bir uygulama yapıyorum bu uygulama için telefonun sıcaklık ve barometre (yükseklik sensörü) verisine ulaşmam gerekiyor bunun için de çok araştırma yaptım fakat ne tr kaynaklarda ne asset store de ne yabancı kaynaklarda ne youtubede kaynak bulamadım nasıl yapılacağına dair.
    bunu nasıl yapabilirim bu sensör verilerine nasıl ulaşabilirim.

  196. Semih Solak dedi ki:

    Merhaba iyi çalışmalar.
    Unity üzerinde bir oyun geliştirmeye çalışıyorum. ScreenManager scripti açtım ve burada nereye basınca hangi ekranlar açılacak, kapanacak, neye tıkladığımda hangi animasyonlar olacak gibi şeyleri atıyorum. Her şey bağlantılı olduğu için yeni script açmak istemiyorum çünkü orada tekrardan anaekran hangisi, menü ekranı hangisi tanıtmam gerekecek. Bu sebeple aynı scrip üzerinde birçok public değişkeni oldu. private yapmak istemiyorum. Haliyle unity üzerinde 30 40 adet belki public ataması görünüyor. Bu normal midir? Kapsamlı bir oyun düşünüyoruz böyle olması normal mi sizce bir yerde yanlışlık mı yapıyoruz.

    Eğer normalde bunları biz düzene nasıl sokarız. Yani inspector üzerinde 40 tane public görmek istemiyorum bunları böyle collapse gibi açılır pencereler yapamaz mıyız veya yanlışımız varsa öneriniz nedir.

    • yasirkula dedi ki:

      Zaman zaman çok fazla public değişken olması mümkün, ben sıkıntı görmüyorum. Düzene sokmanın en kolay yolu, bazı değişkenlerin başına [Header(“Bir Grup”)] attribute’ü eklemek. O değişkenlerin hemen üstünde Header’da yazan metin gözükecek ve böylece kısmen gruplara ayrılacak. Açılır pencere için ya kendiniz editör script’i yazmalı ya da hazır bir asset kullanmalısınız. Asset Store’daki en popüler asset Odin Inspector ama ücretsiz pek çok alternatife “unity inspector attributes github” şeklinde arama yaparak da erişebilirsiniz.

  197. Aşkın Yılmaz dedi ki:

    Merhaba unityde bitirmek üzere olduğum koşu oyununda takıldığım bir nokta var umarım bana güzel bir fikir verebilirsiniz. Sorunum şu karakter kontroller bir nesneye çarptığı zaman oyun sona eriyor ama atlama eğilme gibi durumlarda bazen nesneye ufak bir temas yapıp devam ediyor yada kalıyor. Tökezleme gibi yani.. Karakterin her bir uvzuna farklı colliderlar ekledim bir çok yol denedim ama tam istediğim gibi olmuyor. Mesela subway surfde trenlerın üstünden atlarken tam trene atladığın anda trenin ucuna çarparsan otomatik olarak seni üste koyup devam ettiriyor. Bunu nasıl yapabilirim sizce teşekkürler.

    • yasirkula dedi ki:

      Subway Surfers’da muhtemelen karakterde Capsule Collider vardır. Bu collider’ın üst ve alt yüzeyleri küre şeklinde olduğu için, temas anında obje otomatik olarak yukarı yükselir. Temas kodunda da temas edilen noktanın karakterin ayaklarına olan mesafesine bakıp bu değer belli bir değerin altındaysa game over yapmıyorlardır. Sizin durumunuzda nasıl olur bilemiyorum :/

  198. kgok639 dedi ki:

    Öncelikle iyi günler. Ben bir alım-satım oyunu yapıyorum. Pazarlık sistemi yapmak istiyorum fakat bir türlü yapamadım. İnternetten de araştırdım fakat yok. Yardım eder misiniz acaba nasıl pazarlık sistemi yapabilirim.

    • yasirkula dedi ki:

      Benim de tecrübemin olmadığı bir konu maalesef.

      • kgok639 dedi ki:

        Peki ya nasıl aldığım ürünü envanterimde listeleyip sattığım ürünü o listeden çıkarabilirim?

      • yasirkula dedi ki:

        Görsel bir envanterden bahsediyorsanız, bunun için GitHub veya Asset Store’daki hazır asset’leri kullanarak işinizi hızlandırabilirsiniz. Backend’den bahsediyorsanız, en basitinden envanterdeki tüm objeleri bir List’te tutabilir ve bu List’i kaydedebilirsiniz (serialization).

  199. Muhammet dedi ki:

    Merhaba,

    Unity store da bulunan size ait native share eklentisini kullanıyorum bir projemde,
    Whatsapp kodları yorum satırı olarak geldi, onları aktif ettim.
    ios platformunda whatsapp seçeneği gelmiyor nasıl yapabilirim, veya bununla ilgili bir dersiniz var mı bulamadığım için buradan yazdım.

    Teşekkür ederim.

  200. Abdullah Erdönmez dedi ki:

    Merhabalar. 2D bir oyun yapmaya çalışıyorum ve yeni başladım. Bir sorunla karşılaştım ve çözümünü bulamadım. Sorunum bir karaktere hareket scripti ve ateş scripti atadım ve düzgün bir şekilde çalıştı unity içine döndüğümde karakteri hareket ettirdiğim bölümde ateş ettiğim görünüyordu fakat main kamerada görünmüyordu. Hatta sol tarafa giden ateş topları görülüyor sağ taraftakiler görünmüyor. fotoğraflar var isterseniz atabilirim.

    • yasirkula dedi ki:

      Sprite Renderer’ın Sorting Layer ve Order in Layer değişkenleri, hangi sprite’ların diğerlerinin üzerine çizileceğini belirler. Aynı Sorting Layer’daki objelerden Order in Layer’ı yüksek olanlar, diğerlerinin üzerine çizilirler.

  201. Muhammet dedi ki:

    Merhaba, uzun süredir aşamadığım bir sorunum var fikir verirseniz sevinirim.

    3D sahnede Plane oluşturarak rpg modunda obje sürükleme yapıyorum. (Script içinden Plane plane)
    Ayrı bir script ilede touch fonksiyonları ile kamerayı hareket ettiriyorum.
    Dokunduğum objenin üstünde popup çıkartıyorum. sorunum şu UI dokunmalarının algılatamıyorum butona basınca plane e dokunmuş olduğum için popup’ı kapatıyorum. bu ayrımı yapabilmemin bir yolu var mı?

    Şöyle bir script kullanarak tekli bir obje üzerinde kontrol sağlayabiliyorum ama tüm UI objeleri için bunu yapabilmem gerekiyor.

    public bool checkCanvasTouch=false;
    public void OnPointerDown(PointerEventData data)
    {
    checkCanvasTouch = true;
    }
    public void OnPointerUp(PointerEventData data)
    {
    checkCanvasTouch = false;
    }

    Diğer scriptlerden;
    FindGameobject fonksiyonu ile eriştiğimde başka bir objedeki, yine bu koda eriştiğinden doğru sonucu alamıyorum.

    Teşekkür ederim.

  202. Murat Ünlü dedi ki:

    Merhaba, rica etsem Unity için Scrollview’de yerel reklam (native) veya banner reklamı Scrollview’de gösterme içeren bir makale hazırlayabilir misiniz.

    Referans;
    https://yasirkula.com/2020/04/04/unity-3d-oyunlariniza-unity-ads-reklamlari-eklemek-resimli-anlatim/

    • yasirkula dedi ki:

      Native reklamlar bildiğim kadarıyla Unity Ads’te bulunmuyor, o yüzden bu mümkün değil. Banner reklamları ScrollView’da göstermek de mümkün değil maalesef.

      • sedatcemk dedi ki:

        Hocam selamlar büyük bir problemim var
        Tasarladığım ve ilk kez Google Playde yayınladığım oyunum da çok ciddi bir problem var.
        oyunun eski sürümlerinde bu problem olmamıştı ama Yılbaşı diye yeni tema yapmış ve yayımlamıştım.
        oyun içinde banner ve geçiş reklamları da var.
        internetle oynadığınız zaman(oyunumda internete ihtiyaç yok düz bir zeminde hareket 3d bir platform oyunu ) oyunda her hangi bir problem olmuyor, fakat interneti kapatıp oyuna girdiğimiz zaman oyuna ilginç şeyler oluyor. kimi telefonlarda oyun başlayıp saniyeler içinde nesneler bozuluyor ve absürt hal alırken kimi telefonlarda oyun başlayıp 20-30 saniye içinde sıfırdan başlıyor. oyun genel olarak menü ve game sahneden oluşuyor internet kapalıysa kendi kendine menüden oyuna atıyor ve oyunu başlatıyor ve sorun devam ediyor.
        dediğim gibi internet açınca her hangi bir problem olmadan çalışıyor.
        daha net görebilmeniz için oyunun google play linkini bırakıyorum yardım ederseniz çok sevinirim.

      • yasirkula dedi ki:

        Tüm SceneManager.LoadScene fonksiyonlarınızın başına Debug.Log koymanızı ve hangi log’un konsola basıldığını kontrol etmenizi öneririm. Konsolu görmek için: https://yasirkula.com/2015/10/13/unity-android-oyunlarinizi-debug-etmek/

  203. Can dedi ki:

    Merhabalar. Oyun yapımı hakkında uzun süredir bir araştırma içerisindeyim fakat kendimi tatmin edici bir cevap bulamadım. O yüzden size soruyorum. Genel olarak Java bilgisine sahibim yani programlama konusunda hakim sayılırım. Fakat oyun yapımına nereden başlamalıyım bilmiyorum. Java oyun yapımı için pek kullanılan bir dil değil, biliyorum. Zaten C#’a alışmamda uzun sürmez, syntax farkına alışırım 3-4 günde. Önemli olan nereden başlamam gerektiği. Oyun yapımı hakkında hiçbir bilgim yok. Sizin sitenizde olan tutoriallar ile başlasam olur mu? Bu ilk arayüz için olan tutorialdan başlayıp devam etsem nasıl olur? Bu konu hakkında bilir kişi olarak sizden bilgi almak istiyorum. Yardım ederseniz sevinirim.

    • yasirkula dedi ki:

      Şu dersimde çizdiğim yol, olası seçeneklerden birisi; ancak bahsi geçen dersler oldukça eskidiği için verimi biraz azalacaktır. İngilizce’niz varsa, Unity’nin web sitesindeki dersleri öneririm: https://learn.unity.com/. Tabi Youtube ve Udemy’de de “unity beginner” şeklinde aramalar yaparak da çok sayıda derse erişebilirsiniz ve ardından bu derslerden popüler olanlarına göz atabilirsiniz.

  204. Alpay dedi ki:

    Merhabalar,

    Benim sorum daha çok kariyer ile ilgili. Ben normalde inşaat mühendisliği okuyorum. Yazılım alanına Unity üzerinden geçiş yaptım. Yani oyun programcılığı yapmak istiyorum ve Unity öğrenmeye başladım. Yalnız benim sorum sektörde para kazanabilmek mümkün mü ? Yani Türkiye’de bu sektör sanırım yaygın değil (sadece kendi gözlemim doğru olmayabilir aydınlatırsanız sevinirim). Tecrübeli bir oyun programcısı olarak bu konuda ki görüşleriniz neler ? Örneğin siz bağımsız game developer olarak geçiminizi nasıl sağlıyorsunuz ? Çünkü benim kafamda şuan game developer olarak iki şekilde para kazanma yöntemi mevcut. (yanılıyorsam lütfen düzeltin) ;

    1) Bağımsız oyun geliştiricisi olarak oyun üretip mobil platformlara koyup satılmasını beklemek(ki bence bu ihtimal çok zayıf)
    2) Bir şirkete bağlı olarak çalışmak (bu da Türkiye’de ne durumda sizce? benim gördüğüm pek fazla firma mevcut değil.)

    Yorumlarınız gerçekten önemli. İlginize teşekkür ediyorum. İyi çalışmalar

    • yasirkula dedi ki:

      Ben bir şirkette çalışıyorum. Tek başınıza bir oyun yapıp onu bir publisher ile çalışmadan store’a koyarsanız, oyunun internette tanıtımını/pazarlamasını çok iyi yapmadıysanız oyununuzun tutma ihtimali zayıf. Bence freelance işlerle daha çok para kazanabilirsiniz ama freelance tecrübem yok onu belirteyim.

      Şirketlere geçecek olursak, LinkedIn’de sürekli yeni startup firmaların ilanlarını görüyorum. Özellikle hypercasual alanında epey firma var ancak çalışma koşulları ve maaşları konusunda bilgim yok. Bu firmaların yetiştirmek üzere Unity’ci alacaklarını düşünmüyorum, sizi şu an çoğunlukla stajyer olarak kabul ederler gibime geliyor. Full time çalışmak için biraz CV kasmanız gerekecek. Bence hypercasual için en iyi CV kasma yöntemi ise, piyasadaki popüler hypercasual oyunların temel mekaniklerini kendi başınıza klonlayıp, oluşturduğunuz bu projeleri GitHub’ınıza koymak. Ardından CV’nizin başında GitHub’ınıza link koyabilirsiniz. Yaptığınız projelerde kodunuzun temiz olmasına dikkat edin.

  205. Kaan dedi ki:

    Merhaba. Bir sorunum var ve hiç yardım alamadım ve sayfanızı gördüm. Umarım göz atarsınız
    Game manager scriptimi yazarken her seferinde bu hatayı alıyorum.

    NullReferenceException: Object reference not set to an instance of an object GameManager.Start () (at Assets/GameManager.cs:20)

    Kodlarım aşağıdaki gibidir.
    Burada bir diğer sorunum ise text i “using UnityEngine.UI;” kodu elle girdim çünkü Microsoft Visual Studio Text imi görmedi.
    Elle yazmam sorunu çözer mi yoksa başka bir şey mi yapmam gerekir?

    Yabancı kaynaklarda da bu sorunu yaşayan çok kişi gördüm ama bir cevap yoktu.

    Kafayı yedim yiycem:) Neyi görmüyor olabilirim? Aslında c# ı öğrenmek ve kod yazmak konusunda oldukça ilerlemeye başladım ama böyle bir sorunda takılı kaldım. Öğrenmek istiyorum ve yurt dışında yaşıyorum. Maalesef bir kursa gitmem de mümkün değil. Online derslerden tırnaklaya tırnaklaya öğrendim ne lazımsa.

    Şimdiden teşekkür ederim.
    Saygılar.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;

    public class GameManager : MonoBehaviour
    {
    public Text mainText;
    public Button option1;
    public Button option2;

    void Start()
    {
    mainText.text = “Giriş Metni!”;
    option1.GetComponentInChildren().text = “Birincil Buton”;
    option2.GetComponentInChildren().text = “İkincil Buton”;
    }

    • yasirkula dedi ki:

      Text için “using UnityEngine.UI;” eklemeniz lazım, yani elle ya da otomatik olarak eklemiş olmanızda bir sıkıntı yok. Aldığınız hatanın çeşitli sebepleri olabilir: Inspector’dan component’in public değişkenlerine değerlerini vermemiş olabilirsiniz, script’i başka bir objeye de yanlışlıkla vermiş olabilirsiniz veya Button’larınızda Text child objesi yer almıyor olabilir. Örneğin mainText’in değerini kontrol etmek için, “Debug.Log(mainText, this);” satırını Start’a ekleyebilirsiniz. Eğer konsolda Null yazarsa, değişkenin değeri atanmamıştır. İkinci parametre olarak verdiğimiz this, konsolda o log’a tıklayınca log’u çıkaran objeyi Hierarchy’de seçmeye yarar. Bu şekilde, hangi objede o değerin Null olduğunu bulabilirsiniz.

      • Kaan dedi ki:

        Hızlıca geri dönüş yaptığınız için çok teşekkür ederim. Önerilerinizi deneyeceğim. Çok ama çok teşekkür ederim. Eğer çözemezsem ve sorun hala devam ederse değerli vaktinize tekrar salça olurum 🙂 Uygun olursanız cevap dönmeniz beni çok mutlu eder. Olmazsa da canınız sağolsun. Saygılarımla.
        İyi akşamlar.

  206. aliuygun dedi ki:

    Hocam iyi akşamlar.
    Benim yardıma ihtiyacım var. Bir projemde dropdown var. Bu dropdownda dil kodlarım mevcut, options kısmında bulunuyor. Kodlarım çalışıyor options kısmında dili değiştirince değişiyor geri butonuna bastıktan sonraki gelen ekranda yazılarımızın dili değişmiyor.

    Projeyi açıp kapatınca dil değişmiş oluyor.

    Kodlarımızı uptade fonksiyonun içine yazınca doğru çalışıyor ama çok kasma yapıyor.

    Yani geri butonuna basınca arka planda bir kere yenlemesi gerekiyor bunu nasıl yapabilirim ?

    • yasirkula dedi ki:

      Genelde dil plugin’lerinde bunun için bir event bulunur ve dil değiştiğinde bu event çağrılarak, arayüzün dilinin tekrar güncellenmesi sağlanır.

      • Çağrı dönmez dedi ki:

        Hocam iyi akşamlar aynı sorun bendede var dil için unity assetsten ücretsiz language ayalarını ımport ettim text mesh pro kullandığım için kodları buna göre tmp ye göre uyarladım kodlar çalışıyor arkadaşta olduğu gibi ama ana menü ve oyunun başladığı 2, sahneye geçmeden diğer yazılar değişmiyo sadece dropdownın bulunduğu bölümdeki textler değişiyor event bahsetmişssiniz kodlama kısmında o kadar iyi değilim plugin diye bir yerde bulamadım detaylı şekilde açıklama yapabilir misiniz? Rica etsem

  207. NFGA dedi ki:

    İyi akşamlar.
    Admob ile ilgili ilginç bir problem yaşıyorum.
    Ödüllü reklam kullanıyorum,reklam ayarlarında ödül değerini “1” olarak ayarladım fakat 10’ar 10’ar puan veriyor.
    Nerede hata yapıyor olabilirim acaba ?
    Reklam kodlarını sizin siteden aldım bu arada.

    • yasirkula dedi ki:

      Reward parametresinin Amount değişkeninden faydalandığınız halde ve değişikliğin ardından bir süre beklediğiniz halde böyle oluyorsa, maalesef bir bilgim yok.

      • NFGA dedi ki:

        Tekrar merhaba,şöyle bir şey geldi aklıma,Reklam ID orjinal ama reklam kodu olarak ödüllü reklamın örnek kodunu kullanıyorum deneme amaçlı ondan kaynaklı bir durum olma ihtimali var mı ? (Bu sebepten gibime geliyor,1 defa denesem ban yemem herhalde :))

      • yasirkula dedi ki:

        Evet olabilir. Kendi reklam kimliğinizle test etmek için de bir yöntemden bahsetmiştim, ondan faydalanın derim. Ancak dersin başında da bahsettiğim gibi, artık AdMob konusunda daha fazla destek vermiyorum.

  208. Kubilay dedi ki:

    2d Karakterim var ve sağa sola hareket ettiriyorum. Sağa giderken sağa baksın , sola giderken sola baksın istiyorum. Benim karakter yön değiştirince kafa aşşağı gidiyor. Yardımcı olabilir misiniz?

  209. ahmet dedi ki:

    Merhaba,
    Unity mobil “runtime” da Seçili GameObject’i FBX olarak alma şansım var mı ?
    https://github.com/KellanHiggins/UnityFBXExporter şundan başka bir kaynak bulamadım.
    teşekkürler.

  210. Enes dedi ki:

    Merhaba kolay gelsin.
    Bir konuda yardımınıza ihtiyacım var.
    Unity 2019.4.13 versiyonunu kullanıyorum,5-10 tane küp’ün instantiate edildiği bir oyunda bile telefonlarda kasma yapıyor,bunun sebebi acaba Unity versiyonundan kaynaklanan bişey mi yoksa ben mi bir hata yapıyorum anlayamadım.

    Grafik ayarlarını düşürdüm,kamera zaten solid color,bu oyunun en düşük özellikli telefonda bile rahat rahat oynaması lazım,sahnede toplasan 20 tane küp oluşuyor.

  211. user dedi ki:

    Hocam merhaba, ben basit bir oyun yapıyorum düz zemin üzerinde giden bir küp var ben bu küpü market sistemi ile değiştirmek istiyorum. Mesala yeşil küpü sarı, mor gibi renklerle değiştirmek. Bunun seçimini de oyuncuya yaptırmak istiyorum fakat bir türlü konu hakkında bir yazı veya video bulamadım. Yardımcı olur musunuz?

    • yasirkula dedi ki:

      Bu market, oyun içi parayla çalışacak diye tahmin ediyorum. Aksi taktirde “unity in app purchase” şeklinde arama yapmanız lazım. Oyun içi para ile alınan eşyaları bir yere kaydetmeniz lazım. Bunun için kullanacağınız yöntem size kalmış. En basitinden PlayerPrefs kullanabilirsiniz ama güvenliği en az tercih bu olur. Kırmızı küp için PlayerPrefs.SetInt("KirmiziKup", 1); fonksiyonunu çalıştırırsınız, daha sonra da PlayerPrefs.GetInt("KirmiziKup") == 1 ile kırmızı küpün satın alınıp alınmadığına bakarsınız. Daha güvenli bir save formatı için BinaryFormatter kullanabilirsiniz (unity binaryformatter diye arayın).

      Aynı kullanıcı ismi ile bir daha yorum atarsanız artık yorumunuzu cevaplamayacağım.

  212. aliuygun dedi ki:

    Merhabalar kolay gelsin.
    Benim yardım isteyeceğim konu şu;
    Yapmış olduğum projeme admob ile reklam eklemek istiyorum. Geçişli reklam koymak istiyorum projem oyun, ve bu oyun 3 defa tekrar oyna butonuna tıklanınca rekalmın gelmesini istiyorum. Bu 3 defa saydırma ve reklam gösterme kodlarında yardımcı olurmusunuz ?

  213. Ali dedi ki:

    Hocam merhaba

    Bir haftadır çözemediğim ve araştırıp bulamadığım bir konu var. Swerve mechanic kullanarak bir duvar boyamam lazım ve bu duvarın ne kadarının boyalı olduğunu da yüzde olarak göstermem lazım. Google playde bu tarz uygulamalar yeni yeni çıkıyor. Restorasyon uygulamaları olarak. Arabayı boyama veya evi temizleme gibi oyunlar bu mekanikle yapılıyor. Fakat eskiden yaptığımız bir mataryeli sahnede klonlayarak yaptığımız işlem gibi değil onda zaten ne kadar boyadığımızın yüzdelik verisini alamıyoruz. Bunu sadece yazılımla yaptıklarını da düşünmüyorum. Unity 2019 lts nin yeni bir eklentisi ile alakalı olabilir mi? Sizin paylaşımlarınızı takip ediyorum sürekli hiçbir kaynaktan bulamayınca sizinle paylaşmak istedim sorunumu.

    Teşekkürler

    • yasirkula dedi ki:

      Bence boyama oyunlarında genel olarak şu asset kullanılıyor, % bulmayı da destekliyor: https://assetstore.unity.com/packages/tools/painting/paint-in-3d-26286. Ücretsiz alternatifleri “unity paint github” diye arayarak bulabilirsiniz ama bunlarda % bulmak var mıdır bilmiyorum. Kendiniz % bulmak için Texture2D’nin GetPixels32 fonksiyonunu çağırıp, döndürülen renklerin ne kadarının hedef renge eşit olduğuna bakabilirsiniz.

      • Ali dedi ki:

        Paylaştığınız assestteki duvarı boyama kısmı aslında tam da benim aradığım şey hocam. Fakat 500 tl gibi bir miktar veremiyorum maalesef 🙂 Bir de kendim ayarlamak istiyorum. Dediğiniz gibi GetPixels32 komutuyla yaparsam sizce de ciddi performans problemi oluşturmaz mı? Fakat görünen o ki başka çare de yok. https://ibb.co/WWPCGvP bu linkteki gifte aslında net olarak gösteriyor yapmam gerekeni. Bunlarda GetPixels32 fonksiyonunu kullanıyorlar sanırım. Başka seçenek yoksa GetPixel32 komutunu araştıryorum. Bilgilendirmeniz için çok teşekkür ederim.

        İyi akşamlar 🙂

      • yasirkula dedi ki:

        Belki linkteki oyun da paralı/parasız hazır bir asset kullanıyordur. Texture’un boyutuna göre GetPixels32 yavaş olabilir. O fonksiyonu her frame çağırmayarak süreci biraz optimize edebilirsiniz.

  214. Enes dedi ki:

    Merhabalar Süleyman Bey,
    Sitenizi uzun zamandır takip ediyorum çok faydalı bilgiler paylaşıyorsunuz,başarılar dilerim.

    Şirketim için bir uygulama ve oyun geliştiriyorum,veritabanına ve bazı api lere ihtiyacım var.
    Bunun için Firebase kullanmak istiyorum fakat sorun şu ki;
    Firebase kurulumunda sorun yaşıyorum,eksik birşey mi yapıyorum yoksa bir uyumsuzluk veya bug mı var bilemedim.

    1- Firebase consol’da projemi oluşturuyorum sdk’yı indiriyorum player settings’den package name vs. entegre ediyorum.FirebaseDatabase paketini import ediyorum.
    Veri tabanı işlemlerine başlamak için;

    DatabaseReference referans = FirebaseDatabase.DefaultInstance.RootReference;

    kodunu yazınca,play tuşuna basatığım anda Unity tamamen çöküyor kapanıyor.

    Teşekkürler.

    • yasirkula dedi ki:

      Firebase kullanmadığımdan sorun şundandır diyemiyorum ama Unity’nin neden çöktüğünü görmek için crash log’larına bakabilirsiniz. Unity çökünce gelen diyalogda “Send Bug Report” dedikten sonra aşağıda birkaç .log dosyasının konumunu görürsünüz. O dosyaların içinde Unity’nin neden çöktüğü yazar. Ardından o hatayı google’da “firebase unity crash” kelimeleri ile birlikte arayabilirsiniz

  215. Met dedi ki:

    Selamlar, sitenizden bolca faydalanıyorum.
    Tesadüfen bulduğum ve çok ihtiyaç duyduğum pivot noktası değiştirme assetiniz harika. Asset store da bulunan bu assetiniz hakkında Türkçe kaynak bulamadım nasıl kullanılacağı ile ilgili Türkçe bir kaynak var mı ?

    • yasirkula dedi ki:

      İlginiz için teşekkür ederim. Pivot asset’imle ilgili ders yazmadım; yazmayı düşünmüyorum çünkü bana çok ihtiyaç duyulan bir ders gibi gelmedi.

  216. Tarkan dedi ki:

    Yasir hocam merhaba
    Bir kaç yıl önce bana game maker’da oyun yapmayı öğretmiştin
    Mobil oyun yazmak için gam maker yeterli olurmu ?
    GameMaker Studio 2 deneme sürümü yükledim önerilerin doğrultusunda satın alacağım.
    tavsiyelerini bekliyorum.

    • yasirkula dedi ki:

      GameMaker kullanalı çok çok uzun zaman oldu o yüzden böyle ciddi bir konuda satın alın veya almayın diyemem. GameMaker ile yapılmış mobil/PC oyunların ufak bir listesini şuradan görebilirsiniz: https://www.yoyogames.com/showcase

      • Tarkan dedi ki:

        Yasir hocam,
        cevabın için teşekkür ederim.
        Soruyu şöyle sorayım, Gamemaker veya Unity’de yapılan oyunlar mobil ortamlar için (Android, IOS işletim sistemlerinde) oynanabilirler mi? Hangisi mobil oyun için daha uygun?

      • yasirkula dedi ki:

        Hem Unity hem de GameMaker’da oyunu Android ve iOS’a çıkarabiliyorsunuz. Unity ücretsiz ama GameMaker konusunda bilgim yok. Bence hangi programı seçeceğinize karar verirken, şu 3 şeyi göz önünde bulundurun:

        – 3D oyun yapacaksanız Unity bu konuda kesinlikle daha avantajlı
        – GameMaker ücretli ise bu ücreti göz önünde bulundurun
        – Üstteki maddelere göre hâlâ GameMaker da olur Unity de olur diyorsanız, hangi programı daha rahat kullanabiliyorsanız onu tercih edin

  217. Muhammed Sarıgül dedi ki:

    Selamlar. Sizlere bir şey sormak istiyorum eğer yardımcı olursanız sevinirim. Basit bir top oyunu üzerinde çalışıyorum ancak bir konuda takıldım. Topun bir nesne aldığında hızlanmasını sağlayabildim ancak 3 saniye içinde bu etkinin sonlanmasını istiyorum. Bir türlü beceremedim.

    if (other.gameObject.tag == “SpeedDebuff”)
    {
    speed = 5f;
    hizText.text = “HIZ 5X”;
    Destroy(other.gameObject);
    if (speed == 5f)
    {
    Timer -= Time.deltaTime;

    if (Timer == 0f)
    {

    speed = 3f;
    hizText.text = (“HIZ 3X”);
    }
    }

    }

    nasıl bir yol izlemem gerekiyor ?

  218. metehancekic dedi ki:

    Yasir çok iyi site, bunun benzerini makine öğrenmesi için yapmayı planlıyoruz.

    • yasirkula dedi ki:

      Teşekkür ederim 😀 Yapacağınız sitede Unity ile ML kullanımından bahsedecekseniz, tahminimce Unity’nin ML-Agents plugin’ini kullanacaksınız. Site açıldığında linkini paylaşırsan sevinirim 🙂

  219. abdulmuttalip dedi ki:

    iyi günler hocam Yanlışlıkla Yapılan Tıklamaları Teşvik Eden Düzen – Beklenmedik Şekilde Başlatılan Geçiş Reklamları şeklinde politika ihlali alıyorum ne yapsam düzeltemedim geçiş reklamlarını tamamen kaldırdım sadece banner var şimdi ama gine de düzelmedi 6-7 sefer itiraz gönderdim ama sorun hala devam ediyor diyorlar. ne yapmalıyım sizce.

  220. Selami Kekeç dedi ki:

    Unity Ads hesabımızda kullanılanilir 120 dolar var ama otomatik ödemeyi hala aktif hale getiremedik. Nasıl aktif hale getiririz acaba yardımcı olur musunuz?

  221. Umut dedi ki:

    İyi günler herkese
    yaptığım oyunda save sistemi olarak .bin formatını kullanacağım. Mobilde .bin dosyasını hangi dosya dizinine kaydetmem lazım acaba?

  222. mete dedi ki:

    Faydalı içerikler. Teşekkürler.

  223. EMRE YEMEZ dedi ki:

    Dostum merhaba öncelikle yazdığın her şey için kendim ve arkadaşlarım adına teşekkür ederim. Unity için tek Türkçe kaynak sen olabilirsin umarım bu işe devam edip bizi yarıyolda bırakmazsın 🙂 Şimdi bir sorunum var eğer vakit bulabilirsen bana yardımcı olmanı dileyeceğim. Hazır bir android oyununa reskin yapıp google playde paylaştım. Ancak leaderboard eklemek için oyuna buton eklemeyi denedim. Butonu ekliyorum unity ekranında ve scene bölümünde görünmesine rağmen apk build alınca adeta yok oluyor buton. Mevcut bir butonu da copy-paste yapınca da yine build alınca görünmüyor. Yardımcı olursan çok sevinirim günlerdir çözemedim.

  224. Enes Kekeç dedi ki:

    Benim play console hesabım banlandı. Başka hesaplardan da hesap açamıyorum. Nasıl hesap açabilirim?

    • yasirkula dedi ki:

      Aynı IP adresi ile hesap açarsanız yine banlanabilir. Aklıma gelen tek yöntem VPN kullanarak hesap açmak ancak büyük ihtimalle hesaba daima VPN ile girmek zorundasınız, VPN’siz girince IP’niz tespit edilip hesabınız yine banlanabilir. Tabi tedbir için mail adresi olarak yeni bir mail kullanmalı ve hesabın 25$ ücretini farklı bir banka hesabı ile ödemelisiniz. Geçmiş olsun.

  225. Enes Kekeç dedi ki:

    Unity ads hesabımda şuan 140 dolar var ama 60 doları bu ay kazandığım için daha gözükmüyor ödeme profilinde yani şuan 80 dolar gözüküyor. ayın 1 inde de para yattığına göre ayın 1 inde benim profili güncelleyip mi atarlar parayı yoksa öbür ayı beklemek zorunda mı kalırım 100 dolar olmadığı için?

    • yasirkula dedi ki:

      Bu kadar detaylı bilmiyorum ama bence ayın 1’inde hesabınızda ödemeye hazır miktar olarak 140 dolar gözükürse ödemeniz yapılır, yoksa sonraki aya sarkar.

  226. Umut dedi ki:

    hocam yaptığım oyun play storea koymak istiyorum ama artık önerilen api seviyesinin 29 olmasını istiyorlar unityde önerilen api leveli 29 yaptığımda bu api levelinin bende olmadığını yüklemem gerektiğini söylüyor yüklemeye çalıştığımda ise https://hizliresim.com/DIzjBZ bu hatayı veriyor.sdkları ayrıca kurup unitye gösterdim bu seferde unity komple build almamaya başladı.28 ve altında hiçbir sıkıntı yok ama onuda play console kabul etmiyor

    • yasirkula dedi ki:

      Ben Android Studio’nun SDK Manager’ını kullanıyorum. Unity Hub’dan indirilen hazır SDK’i kullanıyorsanız, o nasıl güncellenir bilmiyorum. Android Studio veya başka bir yerden API 29’u indirince build hatası alıyorsanız, bu build hatasını Google’da aramanızı öneririm.

      • Umut dedi ki:

        googleda yazanlar hep başka yerden indirmeyi söylüyor ki indirdimde ama çalışmıyor yinede teşekkürler

  227. Enes Kekeç dedi ki:

    Hocam isterseniz birlikte uygulama geliştirebiliriz. Aklımda çok çılgın fikirler var. Bir tane uygulamam 1 ay içinde 6000 indirme almıştı. ama sizin oyunlarınız 2 yıliçinde 5000 indirme almış.

  228. Enes Kekeç dedi ki:

    Puanımız sıfır olunca oyundan çıkıp tekrar girince puanımız yine 25 oluyor. Ama puanımız 1 olunca çıkıp girdiğimizde bir kalıyor.
    Hocam bu sorunu nasıl çözerim?

    • yasirkula dedi ki:

      Emin olun bilmiyorum ama sanki bir sorun yaşayınca direkt bana yazıyormuşsunuz gibi hissetmeye başladım. Biraz kendiniz deneme-yanılma yapın, Google’a bakın. Bu konuşmayı daha önce de yaptım yanlış hatırlamıyorsam, insaf artık.

  229. Enes Kekeç dedi ki:

    Google play’de uygulama veya oyunlarınız var mı?

  230. Enes Kekeç dedi ki:

    peki şundan olabilir mi?
    Please consider upgrading to the Packman Distribution of the Unity Ads SDK. The Asset Store distribution will not longer be supported after Unity 2018.3
    UnityEngine.Advertisements.Advertisement:Initialize(String, Boolean)
    UnityAds:InitAds() (at Assets/scripts/UnityAds.cs:106)
    UnityAds:b__12_0(Boolean) (at Assets/scripts/UnityAds.cs:37)
    d__20:MoveNext() (at Assets/scripts/UnityAds.cs:131)
    UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) (at C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

  231. Enes Kekeç dedi ki:

    hocam böyle bir hata alıyorum. sanırım bu yüzden reklamlar çalışmıyor:
    Failed getting available Android API levels. Make sure your android sdk tools version is 25 or higher and you have internet connection.
    System.Threading.ThreadHelper:ThreadStart()

  232. Enes Kekeç dedi ki:

    Hocam bu reklam gösterme sorunu sdk’lerden kaynaklanıyor olabilir mi?

  233. umut dedi ki:

    hocam unity de resimleri nasıl kod ile parçalara bölebilirim? Bir kaç tane bitmap ile bölme gördüm ama unity içinde bitmap kullandığımda hata veriyor. Eğer bölünmüyorsa kod ile dosya içlerine nasıl erişebilirim

  234. Mustafa dedi ki:

    Merhaba. Ben hazır vaktim varken YouTube üzerinden unity derslerine bakıyorum da. Eğer becerebileceğim gibi bir şeyse udemy’den kurs falan alıyım diyorum. Sizin dosyaları da inceleyeceğim aynı zamanda. Ama daha ilk dakikadan patladım.. denemeyi codecanyon üzerinden aldığım bir oyun üzerinde yapiyim dedim, import – custom package diyince hiç bir dosya görünmedi unitynin açabileceği. Bunu nasıl bulabilirim? Teşekkürler.

    • yasirkula dedi ki:

      Aldığınız dosya zip ise, içindeki dosyaları boş bir klasöre çıkarıp o klasörü File-Open Project ile açmanız lazım. “.unitypackage” ise mutlaka içindeki dosyalar gözükür, gözükmüyorsa konsolda konuyla alakalı hata mesajları olması muhtemel.