ConstSafe

ConstSafe; tag'ler, sahneler, resources yolları, animator parametreleri, shader property'leri ve daha fazlası için tür güvenli C# referansları üreten bir Unity sabit oluşturucusudur.

ConstSafe, zamanla hataya dönüşen çok sıradan bir Unity problemini çözer: tag’ler, sahne adları, resource yolları, animator parametre isimleri, shader property isimleri ve benzer değerler projenin her yerine hardcoded string olarak dağılır. Kod derlenir, ama editörde veri değiştiği anda bu string’ler projeyle uyumsuz hale gelebilir.

Problem

Unity projeleri çok sayıda string tabanlı referans biriktirir.

Bir scriptte sahne adı. Başka birinde resource yolu. Oynanış koduna kopyalanmış animator parametreleri. Elle tekrar yazılmış shader property ID’leri. Her şey, biri yeniden adlandırılana, taşınana ya da silinene kadar çalışır.

Sorun string’i bir kez yazmak değildir. Sorun, gerçek bir proje boyunca doğru kalmasını sağlamaktır.

Bu maliyet, daha fazla sistem proje verisine bağlandıkça ya da birden fazla kişi aynı anda sahneleri, asset’leri ve ayarları değiştirdikçe büyür.

Araç Nasıl Yardımcı Olur

ConstSafe, Unity iş akışlarının çoğu zaman magic string kullandığı alanlar için proje verisini tarar ve tür güvenli C# çıktısı üretir.

Değerleri elle yazmak yerine; tag’ler, katmanlar, sorting layer’lar, sahneler, legacy input eksenleri, animator parametreleri, shader property’leri, resources yolları ve editör üzerinden tanımlanan string’ler için üretilen kodu referans alırsınız.

Üretilen dosyalar düz C#‘tır ve okunabilir kalır. Kaynak kontrolünde yaşamaları için tasarlanmıştır ve runtime’da ConstSafe gerektirmezler.

Editör iş akışı da aracın parçasıdır. ConstSafe; üretici durumu, çıktı önizlemesi, seçmeli yeniden üretim, onboarding ve orphan temizliği için bir pano sunar. Addressables ve New Input System üreticileri ise ilgili paketler kurulu değilse ortalıkta görünmez.

Somut İş Akışları ve Kullanım Senaryoları

En yaygın kullanım, oynanış kodundaki string tabanlı erişimleri kaldırmaktır.

Sahne adlarını, resource yollarını veya animator parametre isimlerini elle yazmak yerine üretimi yeniler ve oluşan API’yi kullanırsınız. Proje verisi değişirse üretilen kod da onunla birlikte değişir.

Bu özellikle şunlar için faydalıdır:

  • sahneleri üretilen ad ya da index ile açmak
  • Resources içinden asset yüklerken üretilen yolları kullanmak
  • önceden üretilmiş shader property adları ve ID’leriyle çalışmak
  • animator parametrelerine string kopyalamadan erişmek
  • proje tanımlı string’leri editör sahipliğinde tek yerde tutmak
  • proje özelindeki veri tipleri için üretim hattını genişletmek

ConstSafe, Unity 2022.3 LTS ve sonrası için üretildi; Addressables ve New Input System desteği ise isteğe bağlıdır.

Kimler İçin

ConstSafe, kod tabanını özel bir framework’e çevirmeden daha güvenli referanslar isteyen Unity geliştiricileri içindir.

Üretilen kodun basit, yerel ve gözden geçirilebilir kalmasını isteyen ekipler için iyi uyum sağlar. Ayrıca araç yazmayı seven ve özel tanımlar ya da özel üreticilerle daha ileri gitmek isteyen geliştiricilere de hitap eder.

Projeniz yeniden adlandırmaların, taşınan asset’lerin veya editör verisi ile kod arasındaki kurulum kaymasının bedelini ödemeye başladıysa, ConstSafe tam olarak bu probleme yöneliktir.

Kapanış

ConstSafe gösterişli olmaya çalışmıyor. Unity projelerinde en sık görülen düşük sinyalli hata kaynaklarından birini kaldırmaya çalışıyor: editörde yaşayan ama kodda elle referans verilen proje verisi.

Okunabilir, deterministik ve derleme zamanı dostu proje referansları istiyorsanız, ConstSafe bunu oyun kodunuzun üzerine bir runtime bağımlılık katmanı bindirmeden sağlar.

Öne Çıkan Özellikler

Tag'ler, katmanlar, sahneler, resources yolları, animator parametreleri ve shader property'leri gibi Unity proje verilerinden C# sabitleri üretir.
Addressables ve New Input System için isteğe bağlı, paket kontrolü yapan destek içerir.
Çıktıyı incelemek, seçili üreticileri yeniden çalıştırmak ve durum görmek için bir pano sunar.
Kullanıcı tanımlı string'leri ve gelişmiş özel üreticileri destekler.
Üretilen çıktıyı ConstSafe'e runtime bağımlılığı olmadan bırakır.

Neden ConstSafe?

  • Kırılgan magic string'leri derleme zamanı güvenli referanslarla değiştirir.
  • Proje verisindeki değişikliklerin kodda görünmesini sağlar; runtime'da sessizce kırılmaz.
  • Üretilen dosyaları okunabilir, versiyonlanabilir ve araç kaldırılsa bile kullanılabilir tutar.
  • Ekiplere yeniden üretim, önizleme ve temizlik için daha net bir iş akışı sunar.

Kimler İçin?

Hardcoded tag, sahne adı ve resource yolu kullanmaktan yorulan Unity geliştiricileri.
Runtime wrapper katmanı eklemeden daha güvenli proje referansları isteyen ekipler.
Addressables veya New Input System kullanan ve isteğe bağlı üretilmiş yardımcılar isteyen geliştiriciler.
Projeye özgü veri üretimini genişletmek isteyen araç odaklı ekipler.

Ekran Görüntüleri

Unity proje sabitlerini uretmek icin ConstSafe kontrol paneli.
Uretilen Unity referanslarini ve editor is akisini gosteren ConstSafe gorseli.
Unity verileri icin uretilen sabitleri one cikaran ConstSafe is akisi gorseli.
Tip guvenli Unity sabitlerine odaklanan ConstSafe urun gorseli.

Sık Sorulan Sorular

Üretilen kod runtime'da ConstSafe'e bağlı mı?
Hayır. ConstSafe, runtime'da pakete ihtiyaç duymayan düz C# dosyaları üretir.
Addressables ve Input System desteği için o paketlerin kurulu olması gerekir mi?
Evet. Bu üreticiler isteğe bağlıdır ve yalnızca ilgili Unity paketi kuruluysa görünür olur.
Kendi üretilen sabitlerimi ekleyebilir miyim?
Evet. ConstSafe, basit senaryolar için editör üzerinden tanımlanan string'leri ve daha gelişmiş akışlar için özel üreticileri destekler.
Paket örnekleri çıktıyı otomatik olarak üretir mi?
Hayır. Örneklerin aktif proje içeriği haline gelip çıktı üretmesi için önce projeye import edilmesi gerekir.

Bir sonraki Unity projenizde deneyin

ConstSafe, editör içinde daha net ve daha okunabilir bir üretim akışı kurmanıza yardımcı olur.