Ezber yapmak bir işe yaramaz. Eninde sonunda ezberi unutursun.
2-Yorum satırı kullanmamak
Şimdi ezber yapmayacağız. E o zaman kodları nasıl aklımızda tutarız. Mesela unity için kodlama öğreniyorsunuz. 2 hafta ara verdiniz geri döndüğünüzde kodları tekrar hatırlamanız için yorum satırları ekleyin.
3-Pratiğe geçirmemek
Eğitim videolarınızda izlediklerinizi uygulayınız. Aksi taktirde öğrenmiş olmazsınız.
WordPress Bakım Modu Hatası ve Çözümü bu yazımızın konusu olacak. WordPress sitenize girmeye çalışırken ‘Briefly unavailable for scheduled maintenance. Check back in a minute.’ yani Zamanlanmış bakım dolayısıyla site uygun değil birkaç dakika içinde tekrar kontrol edin hatası mı alıyorsunuz ? O halde sizler için hazırladığımız bu kılavuzu takip ederek, ‘Briefly unavailable for scheduled maintenance. Check back in a minute.’ hatasının nedenlerini öğrenebilir ve aşağıda yer alan yöntemleri uygulayarak kolay bir şekilde çözebilirsiniz.
WordPress bakım modu hatası olarak da isimlendirilen ‘Briefly unavailable for scheduled maintenance. Check back in a minute.’ hatası ve çözümü; ‘Briefly unavailable for scheduled maintenance. Check back in a minute.’ WordPress Bakım Modu Hatası ve Çözümü nedir?
Türkçe anlamı “planlanmış bakım modu” olarak çevirebileceğimiz bu durum teknik olarak bir hatadan ziyade aslında bir uyardır. Bu hata WordPress sitelerdeki eklenti ve temalar güncellenirken ortaya çıkar.
Normal prosedür WordPress’in güncelleme işlemi sırasında gerekli güncelleme dosyalarını sunucuya indirmesi, açması ve yüklemesi ile sona erer. Tüm bu süreçler devam ederken WordPress sitenizi bakım moduna geçirir ve “Briefly unavailable for scheduled maintenance. Check back in a minute. ” yani Zamanlanmış bakım dolayısıyla site uygun değil birkaç dakika içinde tekrar kontrol edin uyarısı ortaya çıkar. Bu uyarı, sitede planlı bir bakımın yapıldığını ve bu yüzden kısa bir süre kullanılamayacağı anlamına gelir.
WordPress sistemi, bakım modu bildirimini oluşturabilmek için, web sitenizin kök klasöründe geçici bir .maintenance yani bakım dosyası oluşturur. Güncelleme sırasında her şey normal bir şekilde ilerlediğinde , bu bildirim sadece birkaç saniye boyunca görüntülenir. Başarılı bir güncelleme işleminin ardından bakım modunu devre dışı bırakmak için .maintenance isimli bakım dosyası wordpress sistemi tarafından otomatik olarak silinir.
Fakat bazen sitenizin barındırıldığı hosting hizmetinde oluşan bir hata yüzünden WordPress sitenizin arka planında .maintenance dosyası silinemez. Bu durumda, WordPress siteniz bakım modunda kalır ve ilgili dosya otomatik olarak silinmediği için, “Briefly unavailable for scheduled maintenance. Check back in a minute. ” uyarısı gösterilmeye devam eder. Bu problem devam ettiği sürece sitenize erişemezsiniz ve bu sorunu çözmek için hosting üzerinden elle müdahele etmeniz şart olur.
WordPress Bakım Modu Hatası Nasıl Çözülür? WordPress Bakım Modu Hatası ve Çözümü
Zamanlanmış bakım dolayısıyla site uygun değil birkaç dakika içinde tekrar kontrol edin ‘Briefly unavailable for scheduled maintenance. Check back in a minute.’ hatasının en temel çözümü, FTP kullanılarak sitenin kök dizininde yer alan .maintenance dosyasının silinmesidir. Şayet .maintenance dosyasını WordPress kök dizininizde bulamazsanız, FTP istemcinizin gizli dosyaları gösterdiğinden emin olun. Eğer Filezilla kullanıyorsanız, bunu menü çubuğundan Sunucu » Gizli dosyalar görüntülensin seçeneği ile gerçekleştirebilirsiniz.
.maintenance dosyası kaldırıldıktan sonra siteniz bakım modundan çıkar ve ilgili uyarı artık gösterilmez. Şayet FTP’yi nasıl kullanacağınızı bilmiyorsanız, Cpanel üzerinden dosyalarınıza erişebilir ve buradan da aynı şekilde ilgili dosyayı silerek, hatayı ortadan kaldırabilirsiniz.
Cpanel ve FTP konusunda bilginiz kısıtlıysa ve wp-admin paneline erişim sağlayabiliyorsunuz, File Manager eklentisini ekleyip, panel üzerindeki dosyalarınıza erişip gerekli işlemi kolaylıkla yapabilirsiniz.
WordPress Bakım Modu Hatasının Sebepleri Nelerdir?
“Briefly unavailable for scheduled maintenance. Check back in a minute.” hatası, sitenin barındırıldığı hosting veya sunucunun ağır ve düşük güçte bir işlemciye sahip olmasından kaynaklanır. Bu tarz hatalarla karşılaşmamak için wordpress için özel olarak optimize edilmiş bir hosting öneririz.
Ayrıca sitenize yapılacak olan hız optimizasyonu sayesinde hosting firmanızın size sağladığı kısıtlı imkanları en verimli şekilde kullanabilirsiniz. Konu hakkında detaylı bilgi için WordPress Hızlandırma sayfamıza göz atmanızı tavsiye ediyoruz.
Şu an için daha yüksek bir sunucu veya hosting planına geçmek bütçeniz için uygun değilse, eklenti ve tema güncellemelerinizi birer birer yapmanızı öneririz.
EK ÖNLEM VE ÇÖZÜMLER
WordPress Bakım Modu Hatasını Çözmek İçin Yapılabilecek Diğer İşlemler
Şayet yukarıda yaptığınız işlemlere rağmen web sitenizde çıkan “Briefly unavailable for scheduled maintenance. Check back in a minute. ” hatasına bir çözüm sağlayamadıysanız aşağıdaki ek adımları takip edebilirsiniz.
WordPress, yukarıdaki güncelleme ve düzeltme işleminden sonra hala bakım modunda kalıyorsa, WordPress klasörünüzde bulunan wp-activate.php dosyasını güncellemeniz gerekir. Bu dosyaya, .maintenance dosyasını bulduğunuz ve sildiğiniz aynı yerden ulaşabilirsiniz.
Dosyayı hosting şirketinizin sağladığı panelde yer alan dosya yöneticisini kullanarak veya FTP üzerinden bilgisayarınıza indirmeniz, ardından, aşağıdaki kodu bulup ‘true’ kısmını ‘false’ olarak değiştirmeniz gerekmektedir.
define ('WP_INSTALLING', true)
Değiştirdikten sonra şu şekilde gözükecektir:
define ('WP_INSTALLING', false)
Bundan sonra değişiklikleri kaydetmeniz ve dosyayı FTP kullanarak veya hosting paneliniz üzerinden aldığınız yere geri eklemeniz gerekmektedir.
WordPress Bakım Modu Hatasını Düzelttikten Sonra Sitem Bozuldu. Nasıl Düzeltebilirim?
Tamamlanmamış veya yarıda kesilmiş bir güncelleme, sitenizde çeşitli problemlerin ortaya çıkmasına sebep olabilir. Şayet böyle bir problemle karşılaşırsanız yapmanız gereken FTP veya dosya yöneticisini kullanarak tüm WordPress eklentilerini geçici olarak devre dışı bırakmaktır.
Ardından, hangi eklentinin ilgili soruna neden olduğunu görmek için WordPress kontrol panelinize giriş yapmanız ve her seferinde bir eklentiyi etkinleştirip sitenizi kontrol edin. Sorunlu eklentiyi tespit ettikten sonra güncellemeyi manuel olarak yapabilir veya eklentiyi silip sıfırdan yükleyebilirsiniz.
Bu yazımızda sizler için WordPress Bakım Modu Hatası ve Çözümü konusunda detaylı bilgiler vermeye çalıştık. Konu hakkında görüşlerinizi yorum olarak belirtebilirsiniz. WordPress siteniz için profesyonel yardıma ihtiyacınız varsa iletişim formu üzerinden bize ulaşabilirsiniz.
Unity’de karma gerçeklik uygulamalarının performansını iyileştirmenin en önemli ilk adımı, Unity için önerilen ortam ayarlarını kullanmaya dikkat etmektir. Bu makalede, yüksek performansa sahip Karma Gerçeklik uygulamaları oluşturmanın en önemli sahne yapılandırmalarından bazılarına sahip içerikler yer almaktadır. Bu önerilen ayarlardan bazıları da aşağıda vurgulanmıştır.
Unity ile profil oluşturma
Unity, belirli bir uygulama için değerli performans içgörüleri toplamak için harika bir kaynak olan Unity Profiler yerleşik uygulamasını sağlar. Profil işleyiciyi düzenleyicide çalıştırabilirsiniz ancak bu ölçümler gerçek çalışma zamanı ortamını temsil etmese de sonuçların dikkatli bir şekilde kullanılmalıdır. En doğru ve eyleme değiştirilebilir içgörüler için cihazda çalışırken uygulamanın profilini uzaktan oluşturmanızı öneririz. Ayrıca Unity’nin Çerçeve Hata Ayıklayıcısı da güçlü ve içgörü aracıdır.
Unity Profiler bağlı ve GPU profilleyicisini ekledikten sonra (sağ üst köşedeki ProfilLeyici Ekleme’ye bakın), profil oluşturmanın ortasında sırasıyla CPU GPU’da ne kadar süre harcanıyor olduğunu görebilir. Bu, uygulama CPU veya GPU sınırlandı ise geliştiricinin hızlı bir yaklaşık değeri elde ed işlemesini sağlar.
CPU performans önerileri
Aşağıdaki içerik, özellikle Unity C# geliştirmesi için hedeflenen daha ayrıntılı & performans uygulamalarını kapsar.
Önbellek başvuruları
GetComponent T () ve Camera.main gibi işlev çağrılarını yinelemek, işaretçiyi depolamak için bellek maliyetine göre daha pahalı olduğundan, başlatma sırasında tüm ilgili bileşenlere ve GameObjects’e başvurular önbelleğe alınmasını öneririz. . Camera.main yalnızca altında FindGameObjectsWithTag() kullanır ve bu da “MainCamera” etiketine sahip bir kamera nesnesi için sahne grafını pahalı bir şekilde arar.CSKopyala
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
private Camera cam;
private CustomComponent comp;
void Start()
{
cam = Camera.main;
comp = GetComponent<CustomComponent>();
}
void Update()
{
// Good
this.transform.position = cam.transform.position + cam.transform.forward * 10.0f;
// Bad
this.transform.position = Camera.main.transform.position + Camera.main.transform.forward * 10.0f;
// Good
comp.DoSomethingAwesome();
// Bad
GetComponent<CustomComponent>().DoSomethingAwesome();
}
}
Not
GetComponent’den kaçının(dize) GetComponent() kullanırkenbirkaç farklı aşırı yükleme vardır. Tür tabanlı uygulamaları her zaman kullanmak ve dize tabanlı arama aşırı yüklemesini hiçbir zaman kullanmak önemlidir. Sahneniz içinde dizeye göre arama, Türe göre aramadan çok daha maliyetlidir. (İyi) Bileşen GetComponent(Tür türü) (İyi) T GetComponent < T > () (Hatalı) Bileşen GetComponent(dize)>
Pahalı işlemlerden kaçının
LINQ kullanımından kaçınınLINQ temiz ve okuması kolay olsa da, genellikle algoritmayı el ile yazmadan daha fazla hesaplama ve bellek gerektirir.CSKopyala// Example Code using System.Linq; List<int> data = new List<int>(); data.Any(x => x > 10); var result = from x in data where x > 10 select x;
Ortak Unity API’leriBazı Unity API’leri kullanışlı olsa da yürütülse de pahalı olabilir. Bunların çoğu, tüm sahne grafındaki eşleşen GameObjects listesini aramanızı içerir. Bu işlemler genellikle başvuruları önbelleğe alma veya GameObjects için çalışma zamanında başvuruları izlemek için bir yönetici bileşeni uygulanarak engel olabilir.C#Kopyala GameObject.SendMessage() GameObject.BroadcastMessage() UnityEngine.Object.Find() UnityEngine.Object.FindWithTag() UnityEngine.Object.FindObjectOfType() UnityEngine.Object.FindObjectsOfType() UnityEngine.Object.FindGameObjectsWithTag() UnityEngine.Object.FindGameObjectsWithTag()
Not
SendMessage() ve BroadcastMessage() tüm maliyetler ortadan kaldırılacaktır. Bu işlevler, doğrudan işlev çağrılarının sırasına göre 1000 kat daha yavaş olabilir.
Boxing’e dikkat edinBoxing, C# dili ve çalışma zamanı için temel bir kavramdır. , , vb. gibi değer türüne sahip değişkenleri başvuru türüne sahip charintbool değişkenlere sarmalama işlemidir. Değer türüne sahip bir değişken “kutulanmış” olduğunda, yönetilen yığında depolanan bir System.Object içine sarmalar. Bellek ayrılır ve sonunda atılması gereken zaman atık toplayıcı tarafından işlenmeli. Bu ayırmalar ve ayırmalar bir performans maliyetine neden olur ve birçok senaryoda gereksizdir veya daha ucuz bir alternatifle kolayca değiştirilebilir.Kutulamanın önüne geçerek sayısal türleri ve yapılarını depolayanın değişkenlerin, alanların ve özelliklerin (dahil) nesne kullanmak yerine , veya gibi belirli türler olarak yazılması Nullable<T>intfloat?MyStruct gerekir. Bu nesneleri bir listeye alıyorsanız, veya yerine gibi kesin olarak türü kesin olarak girilen bir List<int> liste kullanmaya emin List<object>ArrayList olun.C’de kutulama örneği #C#Kopyala// boolean value type is boxed into object boxedMyVar on the heap bool myVar = true; object boxedMyVar = myVar;
Kod yollarını yineleme
Saniye başına ve/veya çerçevede birçok kez yürütülen tüm yinelenen Unity geri çağırma işlevleri (yani Update) dikkatli bir şekilde yazmalıdır. Buradaki pahalı işlemlerin performans üzerinde büyük ve tutarlı bir etkisi olur.
Boş geri çağırma işlevleriAşağıdaki kod, özellikle de her Unity betiği bir Update yöntemiyle otomatik olarak başlatılacağı için uygulamanıza bırakmak zor görünse de, bu boş geri çağırmalar pahalıya görünebilir. Unity, UnityEngine kodu ile uygulama kodunuz arasında yönetilemeyen ve yönetilen bir kod sınırı arasında ileri ve geri çalışır. Yürütülecek bir şey yoksa bile bu köprü üzerinden bağlam değiştirme oldukça pahalıdır. Bu durum özellikle, uygulamanıza Unity geri çağırmalarını tekrarlayan boş bileşenlere sahip 100’lerlik GameObjects varsa sorunlu hale gelir.CSKopyalavoid Update() { }
Not
Update() bu performans sorununa en sık rastlanan sorundur, ancak aşağıdakiler gibi yinelenen Unity geri çağırmaları da aynı derecede kötü olabilir: FixedUpdate(), LateUpdate(), OnPostRender”, OnPreRender(), OnRenderImage() vb.
Çerçeve başına bir kez çalıştırmayı tercih etmek için işlemlerAşağıdaki Unity API’leri birçok Holographic Apps için yaygın işlemlerdir. Her zaman mümkün olsa da, bu işlevlerin sonuçları genellikle bir kez hesaplanmış ve sonuçlar uygulama genelinde belirtilen bir çerçeve için yeniden kullanılabilir.a) Raycast’inizi sahnede işlemek için ayrılmış bir Singleton sınıfına veya hizmetine sahip olmak ve ardından bu sonucu her bileşen tarafından yinelenen ve aynı Raycast işlemleri yapmak yerine diğer tüm sahne bileşenlerinde yeniden kullanmak iyi bir uygulamadır. Bazı uygulamalar farklı kaynaklardan veya farklı LayerMask’lara karşı yayın gerektirir.C#Kopyala UnityEngine.Physics.Raycast() UnityEngine.Physics.RaycastAll() b) Start() veya Awake() içinde başvuruları önbelleğe almak için Update() gibi yinelenen Unity geri çağırmalarında GetComponent() işlemlerden kaçınınC#Kopyala UnityEngine.Object.GetComponent() c) Mümkünse, başlatma sırasında tüm nesnelerin örneğini oluşturma ve nesne havuzu kullanarak GameObjects’i uygulamanın çalışma zamanı boyunca geri dönüştürme ve yeniden kullanma iyi bir uygulamadırC#Kopyala UnityEngine.Object.Instantiate()
Arabirimlerden ve sanal yapılardan kaçınınİşlev çağrılarını arabirimler ve doğrudan nesneler aracılığıyla çağırma veya sanal işlevleri çağırma genellikle doğrudan yapıları veya doğrudan işlev çağrılarını kullanmaya göre çok daha pahalı olabilir. Sanal işlev veya arabirim gereksizse kaldırılmalıdır. Ancak, bu yaklaşımların performansı, bunları kullanmanın geliştirme işbirliğini, kod okunabilirliğini ve kod sürdürülebilirliğini basitleştirmesini kolaylaştırıyorsa, bu yaklaşımların performansının düşük olduğu bir değerdir.Genel olarak, bu üyenin üzerine yazılacak net bir beklenti olmadığı sürece alanları ve işlevleri sanal olarak işaretlemeniz önerildi. Bir yöntem gibi çerçeve başına birçok kez, hatta çerçeve başına bir kez çağrılarak yüksek frekanslı kod yolları konusunda özellikle dikkatli UpdateUI() olunması gerekir.
Yapıları değere göre geçirmeyi önlemeSınıfların aksine, yapılar değer türleridir ve doğrudan bir işleve geçirildiklerinde içerikleri yeni oluşturulan bir örneğine kopyalanır. Bu kopya cpu maliyetinin yanı sıra yığında ek bellek ekler. Küçük yapılarda etki minimum düzeydedir ve bu nedenle kabul edilebilir. Ancak, her karede tekrar tekrar çağrılan işlevlerin yanı sıra büyük yapılar alan işlevler için mümkünse işlev tanımını başvuruya göre geçecek şekilde değiştirebilirsiniz. Daha fazla bilgi için buraya tıklayın
Çeşitli
Fizika) Genellikle fiziği geliştirmenin en kolay yolu, Fizik için harcanan zamanı veya saniye başına yineleme sayısını sınırlamaktır. Bu, simülasyon doğruluğunu azaltır. Bkz. Unity’de TimeManagerb) Unity’de harmanlama türleri büyük ölçüde farklı performans özelliklerine sahiptir. Aşağıdaki sıra, soldan sağa en az performansa neden olan colliders’a en iyi performansı sergilemektedir. İlkel harmanlamalardan çok daha pahalı olan Mesh Colliders’dan kaçınmak önemlidir.Sphere < Capsule Box Mesh <<<< (Convex) < Mesh (Convex olmayan)Daha fazla bilgi için bkz. Unity Fizik En İyi Yöntemleri
AnimasyonlarAnimator bileşenini devre dışı bırakarak boşta animasyonları devre dışı bırakma (oyun nesnesini devre dışı bırakmak aynı etkiye sahip olmaz). Bir animasyonu bir döngüde yer alan ve bir değeri aynı şey olarak ayaran tasarım desenlerini önle. Bu teknik için önemli bir ek yük vardır ve uygulama üzerinde hiçbir etkisi yoktur. Burada daha fazla bilgi edinebilirsiniz.
Karmaşık algoritmalarUygulamanız ters kinematik, yol bulma gibi karmaşık algoritmalar kullanıyorsa, daha basit bir yaklaşım bulmak veya performansları için ilgili ayarları ayarlamak için bakın
CPU’den GPU’ya performans önerileri
Genellikle, CPU-GPU performansı, grafik kartına gönderilen Çizim çağrılarına gelir. Performansı artırmak için, en iyi sonuçlar için yeniden yapılandırılmış olan çizim çağrılarının, azaltılmış veya b)azaltılmasına gerek kalmaz. Çizim çağrılarına kaynak kullanımı yoğun olduğundan, bunları azaltmak gereken genel işi azaltır. Ayrıca, çizim çağrıları arasındaki durum değişiklikleri grafik sürücüde maliyetli doğrulama ve çeviri adımları gerektirir ve bu nedenle, uygulamanızın durum değişikliklerini sınırlamaya yönelik çizim çağrılarını yeniden (farklı malzemeler, vb.) yeniden yapılandırma performansı artırabilir.
Unity ‘nin, bir genel bakış sunan harika bir makaleye sahiptir ve bunların platformu için toplu olarak çizim çağrılarını ele alır.
Unity ‘de tek geçiren bir Işleme, her bir gözle, bir tek bir çizim çağrısına indirgenecek çizim çağrılarına izin verir. İki çizim çağrısı arasındaki önbellek bütünlüğü nedeniyle, GPU üzerinde de bazı performans geliştirmesi de vardır.
Unity Project bu özelliği etkinleştirmek için
player xr Ayarlar ‘yi açın (Project düzenleAyarlarplayerxr Ayarlar)
Stereo Işleme yöntemi açılan menüsünden Tekli geçiş ‘ i seçin (sanal gerçeklik desteklenen onay kutusu işaretli olmalıdır)
Bu işleme yaklaşımına ilişkin ayrıntılar için Unity ‘den aşağıdaki makaleleri okuyun.
Tek geçişli bir Işleme ile ilgili yaygın bir sorun, geliştiricilerin örnek oluşturmak için yazılmayan özel gölgelendiriciler zaten varsa oluşur. Bu özellik etkinleştirildikten sonra, geliştiriciler bazı GameObjects ‘in yalnızca bir göz içinde işlemesini fark edebilir. Bunun nedeni, ilişkili özel gölgelendiricilerin örnek oluşturma için uygun özelliklere sahip olmaması olabilir.
Unity, GPU ‘ya yönelik çizim çağrılarını azaltmak için birçok statik nesne toplu işlem yapabilir. Statik toplu işlem, Unity ‘de 1) aynı malzemeyi paylaşan ve 2) tamamen statik olarak işaretlenmiş (Unity ‘de bir nesne seçin ve Inspector ‘ın sağ üst köşesindeki onay kutusunu seçin). Statik olarak Işaretlenen gameobjects, uygulamanızın çalışma zamanı boyunca taşınamaz. bu nedenle, statik toplu işleme, neredeyse her nesnenin yerleştirilmesi, taşınması, ölçeklendirilmesi gereken HoloLens ‘ten yararlanmak zor olabilir. Tam ekran kulaklıklar için, statik toplu işlem çizim çağrılarını önemli ölçüde azaltabilir ve bu sayede performansı geliştirir.
HoloLens geliştirme için nesneleri statik olarak işaretlemek sorunlu olduğundan, dinamik toplu işlem bu olmayan bu özelliği dengelemek için harika bir araç olabilir. Ayrıca, modern kulaklıklar de yararlı olabilir. Ancak, Unity ‘de dinamik toplu işlem, GameObjects ‘in aynı malzemeyi paylaşmaları ve b) diğer ölçütlere ait uzun bir liste ile buluşılmasıgerektiğinden etkinleştirilebilir.
Tam liste için Unity ‘de çizim çağrısı toplu işi ‘ nin altındaki dinamik toplu işlemeyi okuyun. En yaygın olarak, GameObjects, ilişkili ağ verileri 300 köşelerden fazla olmadığı için dinamik olarak toplu olarak geçersiz hale gelir.
Diğer teknikler
Toplu işleme yalnızca birden fazla GameObjects aynı malzemeleri paylaşabiliyor ise gerçekleşebilir. Genellikle, bu, oyun nesnelerinin ilgili malzemelerde benzersiz bir dokusunu olması gereği tarafından engellenir. Dokuları DokAtlasingolarak bilinen bir büyük dokuyla birleştirmek yaygın bir yöntemdir.
Ayrıca, kafeslerin mümkün ve makul yerlerde tek bir oyun nesnesi halinde birleştirmek tercih edilir. Unity ‘deki her Işleyicide, ilişkili çizim çağrılarıyla birlikte bir Oluşturucu altında Birleşik bir ağ gönderilmesi gerekir.
Not
Çalışma zamanında Oluşturucu. malzemenin özelliklerinin değiştirilmesi malzemenin bir kopyasını oluşturur ve bu sayede toplu işi kesebilir. Oyun nesneleri genelinde paylaşılan malzeme özelliklerini değiştirmek için Renderer. Sharedmalzemesini kullanın.
hologram kararlılığınıiyileştirmek için Player xr Ayarlar kapsamında derinlik arabelleği paylaşımının etkinleştirilmesi önerilir. Bu ayar ile derinlik tabanlı geç aşama yeniden projeksiyonunu etkinleştirirken, 24 bit derinlik biçimiyerine 16 bit derinlik biçimini seçmeniz önerilir. 16 bit derinlik arabellekleri, derinlik arabelleği trafiğiyle ilişkili bant genişliğini (ve bu nedenle güç) büyük ölçüde azaltır. Bu, hem güç azaltma hem de performans geliştirmesine karşı büyük bir kazanç olabilir. Ancak, 16 bit derinlik biçimikullanılarak iki olası negatif sonuç vardır.
Z-Fighting
Düşük Derinlik aralığı doğruluğu, 24 bit ‘den 16 bit ile, büyük olasılıkla daha fazla durum oluşmasına neden olur. Bu yapıtları önlemek için, Unity kameranın yakın/en küçük düzlemlerini daha düşük duyarlık için hesaba göre değiştirin. HoloLens tabanlı uygulamalarda, Unity varsayılan 1000 8 yerine 50 milyon olan en küçük bir düzlemi, her türlü z-fighi ortadan kaldırabilir.
Devre dışı kalıp arabelleği
Unity, 16 bit derinlikli bir Işleme dokusuoluşturduğunda, oluşturulan kalıp arabelleği yoktur. Unity belgeleri başına 24 bit derinlik biçimi seçme, bir 24 bit z arabelleği ve bir [8 bit kalıp arabelleği] () ve bir https://docs.unity3d.com/Manual/SL-Stencil.html cihaz üzerinde 32 bitlik uygulanabilir ise, genellikle HoloLens gibi bir durum oluşturur.
Tam ekran efektlerinden kaçının
Tam ekran üzerinde çalışan teknikler, büyüklük sırası her karede milyonlarca işlem olduğundan pahalı olabilir. Kenar yumuşatma, Bloom ve daha fazlası gibi işlem sonrası etkileri olmaması önerilir.
En iyi aydınlatma ayarları
Unity ‘de gerçek zamanlı küresel aydınlatma , bekleyen görsel sonuçları sağlayabilir ancak pahalı aydınlatma hesaplamaları içerir. pencereişleme aydınlatma aracılığıyla her Unity sahne dosyası için gerçek zamanlı küresel aydınlatmayı devre dışı bırakmayı öneririz Ayarlar gerçek zamanlı küresel aydınlatmayıkaldırın.
Ayrıca, ayrıca bir Unity sahneye pahalı GPU geçişleri de ekleyerek tüm gölge atama devre dışı bırakılması önerilir. Gölgelerin her ışık için devre dışı bırakılması, ancak kalite ayarları aracılığıyla barındırıda denetlenebilir.
DüzenleProject Ayarlar, ardından, UWP platformu için düşük kalite ‘ yi seçerek kalite kategorisini seçin. Ayrıca, gölgeler özelliğinigölgeleri devre dışı bırakmakiçin de ayarlayabilirsiniz.
Unity ‘de modellerinizde kullanıma yönelik aydınlatma kullanmanızı öneririz.
Poly sayısını azalt
Çokgen sayısı, her biri tarafından azaltılır
Sahneden nesneleri kaldırma
Belirli bir ağ için poligonun sayısını azaltan varlık yok etme
Uygulamanıza aynı geometriyi daha düşük Çokgen sürümü ile çok fazla nesne oluşturan bir ayrıntı düzeyi (LOD) sistemi uygulama
Unity ‘de gölgelendiriciler anlama
Performanslarında gölgelendiricilerin karşılaştırılacağı kolay bir performans, her birinin çalışma zamanında yürütülen ortalama işlem sayısını belirlemektir. Bu, Unity ‘de kolayca yapılabilir.
Gölgelendirici varlığınızı seçin veya bir malzeme seçin, sonra Inspector penceresinin sağ üst köşesindeki dişli simgesini ve ardından “gölgelendirici Seç” i seçin
Gölgelendirici varlığı seçili olduğunda Inspector penceresinin altındaki “kodu derle ve göster” düğmesini seçin
Derlendikten sonra, her iki köşe ve piksel gölgelendiricisi için farklı işlem sayısıyla sonuçlarda istatistik bölümünü arayın (Note: Piksel gölgelendiricileri genellikle parça gölgelendiriciler olarak da adlandırılır)
Piksel gölgelendiricileri iyileştirin
Yukarıdaki yöntemi kullanarak derlenmiş istatistik sonuçlarına bakarak, parça gölgelendirici genellikle köşe gölgelendiricidendaha fazla işlemi ortalama olarak yürütür. Köşe gölgelendiricisi yalnızca ekrana çizilmekte olan tüm kafeslerin her köşesinde yürütüldüğünde, piksel gölgelendiricisi olarak da bilinen parça gölgelendiricisi, ekran çıkışında her piksel için yürütülür.
Bu nedenle, yalnızca parça gölgelendiricilerin, tüm aydınlatma hesaplamaları nedeniyle köşe gölgelendiricileriyle daha fazla yönerge yoktur, parça gölgelendiriciler neredeyse her zaman daha büyük bir veri kümesinde yürütülür. Örneğin, ekran çıktısı 2k tarafından bir 2k Image tarafından kullanılıyorsa, parça gölgelendirici, çalıştırılabilir 2000 * 2000 = 4.000.000 kez alabilir. İki gözyi işliyorsa, iki ekran olduğundan bu sayı iki katına çıkar. Bir karma gerçeklik uygulamasının birden çok geçişi varsa, tam ekran işlem sonrası etkileri varsa veya birden çok kafesi aynı pikselde işliyorsa bu sayı önemli ölçüde artar.
Bu nedenle, parça gölgelendiricide işlem sayısını azaltmak, genellikle köşe gölgelendiricide iyileştirmelere göre daha fazla performans artışı sağlayabilir.
Unity standart gölgelendirici alternatifleri
Fiziksel tabanlı işleme (PBR) veya başka bir yüksek kaliteli gölgelendirici kullanmak yerine, daha performanslı bir gölgelendirici kullanmaktan daha fazla bilgi. Karma gerçeklik araç seti , karma gerçeklik projeleri için optimize edilmiş mrtk standart gölgelendiriciyi sağlar.
Unity Ayrıca, Unity standart gölgelendiricisine kıyasla daha hızlı bir şekilde, daha hızlı, köşe aydınlatmalı, dağıtılmış ve diğer Basitleştirilmiş gölgelendirici seçenekleri de sağlar. Daha ayrıntılı bilgi için bkz. yerleşik gölgelendiricilerin kullanımı ve performansı .
Gölgelendirici önyüklemesi
Gölgelendirici yükleme süresiniIyileştirmek için gölgelendirici önyüklemesi ve diğer püf noktalarını kullanın. Özellikle, gölgelendirici önceden yükleme, çalışma zamanı gölgelendirici derlemesi nedeniyle herhangi bir aksaklık görmeyeceğiniz anlamına gelir.
Fazla çizimi sınırla
Unity ‘de, sahne görünümü ‘ nin sol üst köşesindeki çizim modu menüsünü değiştirerek ve fazla çizim‘ i seçerek, bir diğeri sahnenin üzerine fazla çizim gösterebilir.
Genel olarak, aşırı çizim, nesneleri GPU ‘ya gönderilmeden önce zaman önplanlayarak azaltılabilir. Unity, motoru için Occlusiyon yüzey uygulama hakkında ayrıntılar sağlar.
Bellek önerileri
Aşırı bellek ayırma & ayırmayı kaldırma işlemleri, Holographic uygulamanızda olumsuz etkilere neden olabilir, bu da tutarsız performans, dondurulmuş çerçeveler ve diğer daha fazla davranış oluşmasına yol açabilir. Bellek yönetimi çöp toplayıcı tarafından denetlendiğinden, Unity ‘de geliştirme yaparken bellek konularını anlamak özellikle önemlidir.
Atık toplama
GC, yürütme sırasında kapsamda olmayan nesneleri analiz etmek için etkinleştirildiğinde ve bellek serbest bırakılması gerektiğinden, yeniden kullanım için kullanılabilir hale getirilebilir, Holographic uygulamalar işlem süresini çöp toplayıcıya (GC) işleme süresini kaybedecektir. Sabit ayırmalar ve serbest ayırmalar, genellikle Atık toplayıcısının daha sık çalışmasını gerektirir, bu nedenle performans ve Kullanıcı deneyimi de çok daha fazla çalışır.
Unity, çöp toplayıcının nasıl çalıştığına ve bellek yönetimine göre daha verimli kod yazma ipuçlarına ilişkin ayrıntılı bilgiler sunan harika bir sayfa sağladı.
Aşırı atık toplamaya neden olan en yaygın uygulamalardan biri, Unity geliştirmede bulunan bileşenlere ve sınıflara yönelik başvuruları önbelleğe vermez. Tüm başvurular, Start () veya uyanık () sırasında yakalanmalıdır ve Update () veya LateUpdate () gibi sonraki işlevlerde yeniden kullanılır.
Diğer hızlı ipuçları:
Çalışma zamanında karmaşık dizeleri dinamik olarak derlemek için StringBuilder C# sınıfını kullanın
Bir uygulamanın tüm derleme sürümlerinde yürütülmeye devam ettikleri için, artık gerekli olmadığında hata ayıklama. log () çağrılarını kaldırın
Holographic uygulamanız genellikle çok fazla bellek gerektiriyorsa, yükleme veya geçiş ekranı sunarken gibi, yükleme aşamaları sırasında System. GC. Collect () öğesini çağırmayı düşünün
Nesne havuzu oluşturma
Nesne havuzu oluşturma, sürekli nesne ayırma ve ayırma maliyetini azaltmak için popüler bir tekniktir. Bu, aynı nesneler için büyük bir havuz ayırarak ve zaman içinde nesneleri sürekli olarak oluşturmak ve yok etmek yerine bu havuzdan etkin olmayan, kullanılabilir örnekleri yeniden kullanmaya yapılır. Nesne havuzları, bir uygulama sırasında değişken ömrü bulunan yeniden kullanılabilir bileşenler için idealdir.
Uygulamanızı daha küçük bir sahneye başlattıktan sonra, sahneye geri kalanını yüklemek için Monemanager. Loadmanzara Easync komutunu kullanın. Bu, uygulamanızın mümkün olduğunca hızlı bir şekilde etkileşimli duruma almasına izin verir. Yeni sahne etkinleştirildiğinde büyük bir CPU ani artış olabilir ve tüm işlenmiş içerikler stutter veya Hitch olabilir. Bu sorunu çözmek için bir yol, zaman uyumsuz coperation. Allowmanzara Eactivation özelliğini yüklenmekte olan sahnede “false” olarak ayarlamak, sahnenin yüklenmesini beklemek, ekran için çok siyah bir ekran açmak ve ardından sahneyi “true” olarak yeniden ayarlamak için sahne etkinleştirmeyi tamamlayacak.
Başlangıç sahneyi yüklenirken, kullanıcıya holographic giriş ekranının görüntülendiğini unutmayın.
Kozmos Games 2022 yılında Muhammed Bostancı tarafından kurulmuştur. Misyonu ülkemizin oyun pazarındaki gelişmesidir. Asla oyunlarında para için oyuncularını satmayacaktır. Kurucusu web tasarım, siber güvenlik ve oyun geliştirmeyi mesleği haline getirmeye çalışıyordur. İlk oyun olarak 2d bir oyun tercih edilmiştir ve şuan demo seviyesindedir. Bittiğinde sizinle paylaşılacaktır.