Unity2D Diyaloğu Sistemi - NPC İsimleri, Portreler ve Düzenlemeler | Unity + Ink rehberi
İçindekiler
- Giriş
- NPC İsimlerini Yönetmek ve Görüntülemek için Bir Sistem Oluşturma
- Unity'de Ink Kullanımı
- Bağlamsal Tag Kullanımı
- Konuşmacı İsimlerini Ayarlama
- Portre ve Düzenleme Ayarları
- Layout ve Animasyon Oluşturma
- Dialog Paneli Arayüzü Oluşturma
- Dialog Etiketlerini İşleme ve Yönlendirme
- Diğer NPC'lerle Konuşurken Özellikleri Sıfırlama
- Sonuç
Giriş
Herkese merhaba, ben Trever! Bu videoda sizlere, Unity'de oluşturulan ve ink kullanarak NPC isimlerini, portreleri ve farklı düzenleri kolayca değiştirmeyi sağlayan etkili bir diyalog sistemi nasıl oluşturulacağını göstereceğim. Videonun sonunda, her bir diyalog satırını değiştirmek ve diyalog panelinin düzenini değiştirmek için NPC isimlerini kolayca değiştirebildiğimiz bir sistem oluşturmuş olacağız. Bu video, daha önceki bir videomuza bir devam niteliğindedir ama onu izlemeniz gerekmiyor. Ancak, bu videonun başlangıç noktası olarak önerim, daha önce oluşturduğumuz diyalog sistemi videosunu izlemenizdir. Ayrıca, bu videoyu yayımladığım linki açıklamaya ekledim ve her şeyi anlamak isterseniz daha ayrıntılı bir şekilde ink sözdizimini ele alan bir videoya sahibim. Şimdi, bu projeyi Ink diyaloğ dosyalarından etiketlerle nasıl yöneteceğimizi inceleyelim.
NPC İsimlerini Yönetmek ve Görüntülemek için Bir Sistem Oluşturma
Unity'de ink kullanarak NPC isimlerini, portreleri ve diyalog panelinin düzenini yönetmek için etiketleri kullanabiliriz. Her bir diyalog satırında etiketlerin okunup yönetilmesi için bir C# kodu oluşturacağız. İlk olarak, her etiketin anahtar ve değer çiftlerini alarak başlayacağız. Anahtar, diyalog satırındaki C# kodunda gerçekleştirilecek bir eylemi temsil ederken, değer, bu eylem için kullanılacak veriyi temsil eder. Örneğin, "#konuşmacı:Bob" etiketi, "konuşmacı" anahtarını ve "Bob" değerini içerir. Bu etiketi Unity'e bir dize olarak okuyabiliriz, sonra anahtar-değer çiftine dönüştürebilir ve değeri kullanarak etiketin anahtarı için ilgili eylemi gerçekleştirebiliriz. Diyaloğumuzun görüntü ismini ayarlamak için tam olarak bunu yapacağız.
Unity'de Ink Kullanımı
İnk, diyaloğumuzu yazmak için kullandığımız bir betik dilidir. İnk dosyalarımıza etiketler eklemek için ink sözdizimini kullanacağız. Etiketler, her bir diyalog satırı için metadata eklemek için kullanılan etiketlerdir. Her bir etiket, Unity tarafından bir dize olarak okunur ve nasıl yapılandırılacağımıza tamamen bize bağlıdır. Bir etiket oluşturmanın iyi bir yolu, değeri bir eylem için kullanılacak veri olarak eşleştiren anahtar değer çiftlerini ayarlamaktır. Örneğin, "#konuşmacı" sembolü, "konuşmacı" anahtarı ve "Bob" değeriyle ayrılan etiketin bir örneğidir. Bu etiketi Unity'de bir dize olarak okuyabiliriz, sonra anahtar değer çiftine ayrıştırabilir ve değeri kullanarak eylemi gerçekleştirebiliriz. Bu tam olarak yapmak istediğimiz şey, diyalog panelinin görüntülenme adını ayarlamaktır.
Bağlamsal Tag Kullanımı
Etiketleri, değişiklikleri tetiklemek istediğimiz her diyalog satırında kullanmamız gerektiğini unutmayın, bu yüzden her diyalog satırı için etiket eklememize gerek yok. Diyaloğumuzdaki her satır için etiketlerin kullanılacağı durumları tetiklediğimizde yeterli olacaktır. Şimdi, ink dosyalarımızda kişiye özel etiketler ekleyeceğimiz biraz zamanımızı düşünelim. Bu amaçla, projenin sanat dizinini kullanarak ilk satır için portreyi Dr. Green nötr olarak ayarlayacağız. Ve unutmayın, buradaki değer, daha sonra oluşturacağımız bir animasyon durumu adı olacak. Mutlu yanıtladığımızda, portreyi Dr. Green mutlu olarak ayarlayacağız ve üzgün yanıtladığımızda, portreyi Dr. Green üzgün olarak ayarlayacağız. Ardından, Bayan Yellow konuştuğunda, portreyi Bayan Yellow nötr olarak değiştireceğiz. Ve tabii ki, bir sonraki satırda Dr. Green nötr olarak tekrar ayarlayacağız.
Konuşmacı İsimlerini Ayarlama
Etiketleri doğru bir şekilde ayarladığımıza göre, şimdi konuşmacı isimlerini ayarlamak üzerinde çalışabiliriz. İlk olarak, dialog yöneticisi betiğinde display name text'i için bir serialize özellik oluşturalım. Ardından, switch ifadesinde display name text'in eşit olduğu çiftleri ayarlayabiliriz. Unity'e geri dönün ve display name text nesnesini dialog yöneticisi display name text alanına sürükleyin.
Portre ve Düzenleme Ayarları
Daha sonra, portre etiketlerini düzenlemek için aynı yapıyı kullanacağız. Önceden dialog yöneticisi için bir serialize özellik değişkeni olan animator için bir private const string oluşturalım. Ardından, switch ifadesi için bu etiketi kullanarak display name text'i anahtarına ayarlayabiliriz. Unity'de, dialog yöneticisi için portrait image'ın dağıtımını yapmayı unutmamalıyız.
Layout ve Animasyon Oluşturma
Proje için birkaç farklı düzen oluşturacağız. Animasyonlar ve portreler için ayrı klasörler oluşturacağız. Ardından, Unity'nin animator penceresinde layout animator olarak adlandırdığımız, layout animator adında bir kontrolcü oluşturacağız. Oluşturduğumuz her animasyon için uygun bir sprite kullanacağız. Başka bir deyişle, ilgili değerin kullanıldığı tag değeri ile eşleşen her bir animasyon için bir animator oluşturacağız. Unity'de, dialog yöneticisine animatör'e bir değişkenle bağlantı yapmanız gerektiğini unutmayın.
Dialog Paneli Arayüzü Oluşturma
Dialog panelinin altında konuşmacının adını ve resmini görüntülemek için bir düzen oluşturacağız. Bunun için UI bileşenlerini oluşturacağız ve bunları dialog paneliyle ilişkilendireceğiz. Seriden bağımsız olarak bu bileşenleri ekleyeceğimiz için, kodlarımızı başka bir methodda düzenleyelim.
Dialog Etiketlerini İşleme ve Yönlendirme
Diyalog yöneticisi betiğinde, dialogdaki etiketleri işleyeceğimiz bir method oluşturalım. İşleyeceğimiz her bir etiket için anahtar değer çiftine ayrıştırıcıyı kullanacağız. Sonra, her bir etiketi işlemek için bir switch ifadesi oluşturacağız. Etiket anahtarına göre işlem yapacağız ve değer olarak tag değerini yazdıracağız. Ardından, Unity'de her bir etiketin başarılı bir şekilde yazdırıldığını görmek için Debug.Log metodunu kullanarak tag değerini yazdırabiliriz. Diyaloğa döndüğümüzde, etiket değerinin doğru bir şekilde yazdırıldığını görebiliriz. Bu bize, bu noktaya kadar her şeyin beklediğimiz gibi çalıştığını gösteriyor.
Diğer NPC'lerle Konuşurken Özellikleri Sıfırlama
Dialog moduna geçtiğimizde NPC'lerle konuşurken etiketlerin bilgilerinin önceki diyalogdan aktarılmadığını görmek önemlidir. Bunu yapmak için dialog yöneticisi script'indeki enter dialog mode methoduna bazı satırlar ekleyeceğiz. İşteyken bunu unutmayalım, eğer sonuç olarak hala bir sorun yaşıyormuşsak ta sonra bizim için bir hata mesajı yazdık. Bu ayarlamaları yaptıktan sonra NPC'ler arasında gereksiz bir şekilde taşınan bilgiler olmaksızın, bilgisi eksik olduğunda, ne olduğunu bize gösteren bir göstergeye sahibiz. Her şey bu şekilde beklediğimiz gibi çalışıyor.
Sonuç
Bu videoda, Unity'de NPC isimlerini, portreleri ve diyalog panelinin düzenini yönetmek için etkili bir sistem nasıl oluşturulacağını öğrendiniz. Etiketleri kullanarak, her bir diyalog satırının özel niteliklerini belirledik ve bunları ink dosyalarımıza ekledik. Ayrıca, bu etiketleri yönetmek ve düzenlemek için C# kodu yazdık. Diyaloğumuzun her bir satırında doğru isimleri görmek ve uygun portreleri ve düzenleri kullanmak, oyunumuzun daha etkileşimli ve keyifli olmasını sağlar. Artık kendi NPC'lerinizi oluşturup, isimlerini, portrelerini ve düzenlerini kolayca yönetebileceksiniz.
Devam etmek ve daha fazlasını öğrenmek için, diğer videolarıma göz atın ve yeni içeriklerin kilidini açmak için abone olmayı unutmayın. İyi günler dilerim!