Unity geliştirme için en iyi IDE olarak Rider'ın konumunu sağlamlaştıran Rider 2023.1'i keşfedin. Pek çok özelliğini (ve bazı durumlarda çok uzun zamandır beklenen özelliklerini) keşfedeceğiz ve bunların geliştirmeyi nasıl kolaylaştırdığını ve geliştiricilere daha iyi, daha verimli oyunlar yaratma konusunda nasıl güç verdiklerini öğreneceğiz.
Herkese merhaba, adım Denis Kondratev ve MY.GAMES'te Unity Geliştiricisiyim. Bana göre JetBrains'in IDE'si olan Rider, uzun süredir Unity geliştirme için en iyi IDE olarak kabul ediliyor. Ayrıca Rider 2023.1'in son sürümüyle geliştiricilerin hayatını kolaylaştıracak birçok yeni özellik eklendi. JetBrains bir kez daha çıtayı yükseltmeye devam ediyor ve onları hayal kırıklığına uğratmadı.
Bu yeni sürüm, USB kablosu aracılığıyla Android cihazlarda çalışan oyunlarda hata ayıklamamıza olanak tanıyor. Genel olarak, bağlı oyuncular için otomatik olarak geçici çalıştırma yapılandırmaları oluşturarak, sonraki oturumları optimize ederek ve çeşitli platformlarda ekibinizle kolay kaydetme ve paylaşma olanağı sağlayarak hata ayıklamayı basitleştirir. Ve yine de bazı geliştiriciler için bir diğer önemli özellik de doğrudan IDE'nin içinde yerelleştirilmiş dokümantasyon desteğidir.
Ayrıca artık daha derinlere dalmanın ve Kullanıcı Arayüzü Araç Setini keşfetmenin zamanı geldi.
Rider, UI Araç Kitini temel alan Unity Editor için UI uzantıları için üç şablon ekledi.
Rider 2023.1, [SerializeReference] özniteliğine sahip alanları tanımlama, Unity animasyonlarında C# kullanımını bulma (ki bu çok gözden kaçırılmıştı) ve [Header] özniteliklerini biçimlendirme konularında iyileştirmeler içeriyor.
Genel olarak C# ile çalışmaya yönelik birçok geliştirme eklenmiştir. Ve son fakat bir o kadar da önemlisi, işin en tatlı kısmı: JetBrains'in uzun zamandır beklenen DOTS desteği.
Bunu bir kenara bırakarak, Rider'ın en son sürümüne yükseltmeye değer olup olmadığına kısaca göz atalım ve görelim. Henüz bu IDE'yi kullanmadıysanız bu makale sizin için de faydalı olacaktır.
Bazen bir oyun Unity editöründe gayet iyi çalışsa da gerçek cihazlarda işler o kadar düzgün gitmez. Rider artık USB aracılığıyla doğrudan bir cihazdaki koddaki hataları ayıklamamıza olanak tanıyor ve bu ilham verici.
Bu özelliğin çalışması için, yapının Geliştirme Derlemesi ve Komut Dosyası Hata Ayıklama seçenekleri etkinleştirilmiş şekilde derlenmesi gerektiğini unutmamak önemlidir.
Ayrıca cihazın kendisinin de doğru şekilde kurulması gerektiğini ve öncelikle cihazda Geliştirici Modunun etkinleştirilmesi gerektiğini hatırlatmak isterim:
Ayrıca "Yapı numarası" öğesini bulmanın bir başka basit yolu da onu ayarlarda aramaktır.
Ardından, görünecek "Geliştirici seçenekleri" menüsünde "USB hata ayıklamasını" etkinleştirin.
Birkaç adım daha: Oyununuzu cihazda başlatın ve Rider'ın ana menüsünde "Çalıştır"a ve ardından "Unity Sürecine Ekle..."ye tıklayın. Açılan pencerede uygulamanızın bulunduğu Android cihazını seçin.
Herşey hazır! Kesme noktalarını ayarlayabilir ve oyununuzda doğrudan cihazdan hata ayıklayabilirsiniz! Bu güçlü hata ayıklama aracını kullanmaktan ve oyun geliştirme sürecinizi geliştirmekten çekinmeyin.
Başka bir not: İlk kez hata ayıklamaya başladığınız anda Rider, Android oynatıcı için otomatik olarak geçici bir çalıştırma yapılandırması oluşturacaktır. Çalıştırma yapılandırmasını ileride kullanmak üzere kaydetmek istiyorsanız bunu yapabilir ve ekibinizle paylaşabilirsiniz.
Elbette hepimiz eski, iyi (ve aynı zamanda son derece esnek olmayan) IMGUI'ye çok aşinayız. Ancak Unity ekibi uzun süredir oyun kullanıcı arayüzleri oluşturma deneyimimizi geliştirmek için yeni bir Kullanıcı Arayüzü Araç Seti paketi üzerinde çalışıyor. Unity 2022.2'den başlayarak düzenleyicide kullanıcı arayüzü oluştururken yeni bir yaklaşım kullanılması önerilir.
Kullanıcı Arayüzü Araç Seti ayrı ve derin bir konudur. Sadece yeni yaklaşımın kullanıcı arayüzü oluşturma konusunda daha kullanışlı ve bir dereceye kadar daha yaygın bir yaklaşım sunduğunu söyleyeceğim. Eğer HTML ve CSS tecrübeniz varsa uyum sağlamanız çok kolay olacaktır; ancak bu olmasa bile, başkalarına da UI Araç Takımında uzmanlaşmayı geciktirmemelerini tavsiye ederim.
Unity 2022.2 veya daha eski projeler için Rider, artık varsayılan olarak yeni şablonların kullanımını sunuyor. Hadi onlardan birini deneyelim. Bunun için öncelikle oyundaki eşyaları tanımlayacak basit bir ScriptableObject oluşturacağız:
[CreateAssetMenu(fileName = "GameItem", menuName = "Game Item", order = 0)] public class GameItem : ScriptableObject { public string itemName; public int weight; public int price; }
Bu ScriptableObject için özel bir düzenleyici oluşturalım. Bunu yapmak için Rider'daki Editör klasörüne sağ tıklayın, ardından Ekle'ye tıklayın ve Unity Script'i seçin.
Açılan pencerede Özel Düzenleyici'yi seçin. Editörümüze GameItemEditor adını verelim.
CustomEditor özelliğinde, oluşturulan düzenleyicinin GameItem sınıfı için tasarlandığını belirtin.
using UnityEditor; using UnityEngine.UIElements; [CustomEditor(typeof(GameItem))] public class GameItemEditor : Editor { public override VisualElement CreateInspectorGUI() { return base.CreateInspectorGUI(); } }
Şimdi Pencere -> Kullanıcı Arayüzü Araç Seti -> Kullanıcı Arayüzü Oluşturucu'yu açın. Görünüm Alanı'nda mevcut Kullanıcı Arayüzü Belgesini kaydedin ve GameItem.uxml olarak adlandırın. Kütüphane penceresinden GameItem sınıf alanlarımıza karşılık gelecek üç alan ekleyin ve bunlara uygun isimler verin.
UI Araç Kiti ile çalışmanın birçok belirgin avantajı vardır: UXML belgelerini grafiksel olarak düzenleme yeteneği, kutudan çıktığı gibi UI Builder aracılığıyla kullanılabilir ve ayrıca IGMUI'ye biraz benzer şekilde programlama yoluyla düzenleme yapılabilir. Artık kullanıcı arayüzü görüntüleme stili USS'de (özü itibarıyla CSS'ye benzer) ayarlanabilir ve daha sonra projede yeniden kullanılabilir. Ah, bu nasıl da eksikti! Otomatik geri alma desteği de mevcuttur.
Dikkate değer bir diğer özellik ise otomatik veri bağlamadır. Bağlama Yolu alanlarına GameItem sınıfı alanlarının isimlerini belirtelim.
Görünüm penceresindeki Dosya -> Farklı Kaydet… menüsünü kullanarak belgeyi kaydetmeyi unutmayın. (Kaydetme kısayol tuşları Ctrl-S / Cmd-S burada size yardımcı olmayacaktır.)
Yaklaşık olarak aşağıdaki içerikten oluşan bir UXML belgesi almalısınız:
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" editor-extension-mode="False"> <ui:TextField picking-mode="Ignore" label="Name" name="Name" binding-path="itemName" /> <ui:IntegerField label="Weight" value="0" name="Weight" binding-path="weight" readonly="false" /> <ui:IntegerField label="Price" value="0" name="Price" binding-path="price" focusable="true" /> </ui:UXML>
Şimdi, denetçiyi doğrudan UXML belgesinden oluşturacak şekilde GameItemEditor'ı yazmayı bitirelim:
[CustomEditor(typeof(GameItem))] public class GameItemEditor : Editor { public VisualTreeAsset treeAsset; public override VisualElement CreateInspectorGUI() { var inspector = new VisualElement(); treeAsset.CloneTree(inspector); return inspector; } }
Proje penceresinde GameItemEditor komut dosyasını seçin ve Ağaç Varlığı alanı için oluşturulan kullanıcı arayüzü belgesi GameItem.uxml'yi oraya sürükleyerek belirtin.
GameItem sınıfı için özel editörümüz hazır. Kullanıcı arayüzü belgesiyle biraz deneme yapabilir ve değişikliklerin denetçideki ekranı nasıl etkileyeceğini görebilirsiniz.
Yeni Rider 2023.1'in piyasaya sürülmesi, UI Araç Seti çalışmasına dalmak ve sunduğu tüm faydaları anlamak için yeterli bir neden!
Unity'nin Veri Odaklı Teknoloji Yığını veya kısaca DOTS, Unity ekibi tarafından uzun yıllardır geliştirilmekte olan bir projedir. Neredeyse hiçbir güncelleme yapılmadan geçen bir yılın ardından, DOTS paketleri deneysel durumdan ön sürüme geçerek 1.0.0 sürümünü aldı. (Bu yazının yazıldığı sırada 1.0.0-pre.65'ti. Ve 2023'te yayınlanma sözü var.)
Uzun geliştirme süresine ve bazılarının DOTS hakkındaki şüphelerine, hatta piyasaya sürülmeyi beklemekten vazgeçmelerine rağmen, yeni yığın hala yetenekleri ve performansıyla şaşırtıyor.
Veri Odaklı Tasarım veya genel anlamda Varlık Bileşen Sistemi (ECS), oyun programlama mimarisine tamamen farklı bir yaklaşım sunar. Tanıdık Nesne Yönelimli Programlama modellerinin aksine, burada odak noktası veri ve işlemenin ayrılmasıdır. Bu tür bir mimaride, benzer veriler genellikle bellekte birbirine yakın konumlandırılır ve sistemlerin bu verileri inanılmaz bir hızla işlemesine olanak tanır, özellikle de bu çok iş parçacıklı modda yapılabiliyorsa.
Doğrudan C#'tan rahatlıkla kullanılabilmeleri için yerel bellek yönetimi mekanizmalarının eklenmesiyle DOTS üzerinde çok fazla çalışma yapıldı.
DOTS 1.0.0'ın piyasaya sürülmesiyle birlikte uygulama geliştirmeye yönelik birçok yaklaşım değişti ve bence bunlar daha kullanışlı ve sezgisel hale geldi.
Hala iyi bir belge eksikliği olsa da, DOTS'un inanılmaz derecede üretken dünyasına dalmaya başlamak ve beyninizi ECS ve çok iş parçacıklı veri işleme için yeniden yapılandırmak için yeterli belge var.
Daha önce Unity DOTS 1.0 ile Gravity Simülasyonunu kullanarak yerçekimi simülasyonu hakkında bir makale yayınlamıştım. İsterseniz bu yığını incelemek için başka birçok eğitim materyali de bulabilirsiniz. Rider'ın yeni yeteneklerini test etmek için DOTS'un önceki sürümüyle yazdığım eski Wave Propagation projemi açtım.
Beni her zaman rahatsız eden şey, Rider veya Visual Studio'nun kod yazmanın ayrıntıları nedeniyle verdiği çok sayıda uyarıydı. Artık kod temiz ve hoş görünüyor.
Nihayet! Bunu nasıl bekliyordum! Rider, DOTS'u resmi olarak destekliyor ve bu da şüphesiz onu Unity gelişimi için bir numaralı IDE yapıyor. Artık Rider neyin doğru neyin yanlış olduğunu gerçekten anlıyor.
Örneğin, bu kod parçasında:
public partial struct TransformingSystem : ISystem { [BurstCompile] public void OnUpdate(ref SystemState state) { var field = SystemAPI.GetSingleton<Field>(); var job = new TransformingJon { HeightScale = field.CellHeightScale, DeltaTime = SystemAPI.Time.fixedDeltaTime, FieldViscosity = field.Viscosity, MinHeight = field.MinHeight }; job.ScheduleParallel(); } }
Rider, artık singleton Field'a doğru erişim için OnCreate() fonksiyonunun beklentiyi state.RequireForUpdate<Field>() yöntemi aracılığıyla ayarlaması gerektiğini önerdi:
public partial struct TransformingSystem : ISystem { public void OnCreate(ref SystemState state) { state.RequireForUpdate<Field>(); } [BurstCompile] public void OnUpdate(ref SystemState state) { var field = SystemAPI.GetSingleton<Field>(); var job = new TransformingJon { HeightScale = field.CellHeightScale, DeltaTime = SystemAPI.Time.fixedDeltaTime, FieldViscosity = field.Viscosity, MinHeight = field.MinHeight }; job.ScheduleParallel(); } }
Ayrıca MonoBehaviors için oluşturucular oluşturmaya yönelik şablonlar ortaya çıktı ve bize yeni bir bileşen oluşturmamız veya mevcut bir bileşene alan eklememiz teklif edildi.
Elbette henüz her şey mükemmel değil. Fırıncı kodu oluşturulurken güncel olmayan bir şablon kullanılıyor. Bu kodu aldım.
public class FieldAuthoring : MonoBehaviour { public GameObject CellPrefab; public Field Field; public Impulse Impulse; public class FieldAuthoringBaker : Baker<FieldAuthoring> { public override void Bake(FieldAuthoring authoring) { AddComponent(new FieldComponentData { CellPrefab = GetEntity(authoring.CellPrefab), Field = authoring.Field, Impulse = authoring.Impulse }); } } } public struct FieldComponentData : IComponentData { public Entity CellPrefab; public Field Field; public Impulse Impulse; }
Burada zaten güncelliğini kaybetmiş GetEntity() ve AddComponent() yöntemleri kullanılıyor. Bunun yerine bileşen ekleme artık şu şekilde yapılmalıdır:
public override void Bake(FieldAuthoring authoring) { var entity = GetEntity(TransformUsageFlags.Dynamic); AddComponent(entity, new FieldComponentData { CellPrefab = GetEntity(authoring.CellPrefab, TransformUsageFlags.Dynamic), Field = authoring.Field, Impulse = authoring.Impulse }); }
Elbette şablonları kendiniz değiştirebilirsiniz. Ancak JetBrains'in düzeltmesinin gelmesinin uzun sürmeyeceğine inanıyorum. Bileşen için bir fırınlayıcı ile yetkilendirici bir MonoBehaviour oluşturma olasılığı da mevcuttur. JetBrains blogunda, DOTS ile çalışmanın yeni yeteneklerini kapsamlı bir şekilde açıklayan bir makaleyi zaten bulabilirsiniz, bu yüzden aynısını burada açıklamanın bir anlamı yok.
Rider 2023.1'in piyasaya sürülmesi, Unity geliştiricilerine çok sayıda yeni özellik ve iyileştirme getirerek Unity geliştirme için en iyi IDE konumunu sağlamlaştırıyor. Android cihazlar için gelişmiş hata ayıklama, UI Araç Seti için yeni şablonlar, uzun zamandır beklenen DOTS desteği ve Unity kayıt paketleri için çevrimiçi belgelere ve yerelleştirilmiş API belgelerine hızlı erişim gibi ek özelliklerle JetBrains, oyun geliştirme araçları için çıtayı yükseltmeye devam ediyor. Bu özellikler yalnızca geliştirme sürecini basitleştirmekle kalmıyor, aynı zamanda geliştiricilerin daha iyi, daha verimli oyunlar oluşturmasına da olanak sağlıyor.
Ayrıca Rider 2023.1, koddaki serileştirilmiş alanların daha doğru algılanması, Unity animasyonlarında C# bulma konusunda geliştirilmiş destek ve [Başlık] niteliklerinin ayrı bir satıra yerleştirilmesi için biçimlendirme motorunda çok talep edilen güncelleme gibi başka birkaç güncelleme daha sunuyor. Bu geliştirmeler daha akıcı ve verimli bir geliştirme deneyimine katkıda bulunur.
İster deneyimli bir Unity geliştiricisi olun ister yeni başlıyor olun, Rider 2023.1'in piyasaya sürülmesi keşfetmeye değer. Yeni özellikler çok çeşitli ihtiyaçları karşılıyor ve geliştirme sürecini kolaylaştırmaya yardımcı oluyor. Rider'ı daha önce kullanmadıysanız bu sürüm, güçlü özelliklerini ilk elden deneyimlemek için mükemmel bir fırsat sunuyor. Halihazırda Rider kullananlar için en son sürüme yükseltme yapmak şüphesiz oyun geliştirme iş akışınızı geliştirecektir.
Rider 2023.1 ile Unity geliştirmedeki en son gelişmeleri benimseyin ve oyun projelerinizi yeni boyutlara taşıyın. Geliştirme deneyiminizi geliştirme ve daha ilgi çekici, yüksek performanslı oyunlar oluşturma fırsatını kaçırmayın.