2D veya 3D'de, bir varlık bileşen sistemi (ECS), aynı ECS'nin bir parçası değilse, en azından GUI sistemine erişebilmelidir.
Şahsen ben ikisini karıştırmam. Kodun bir GUI için tekrar kullanılabilirliği gerçekten en üst düzeyde gerçekleşir. Fare / klavyeye yanıt verme, oluşturma vb. Farklı düğmelerin aldığı işlevler veya belirli listelerin görüntülediği bilgiler gerçekten yeniden kullanılacak kadar genel hale getirilebilecek bir şey değildir.
Örneğin, GUI varlıklarının bileşenlerinin position
, render
ve gibi bir şey olacağını hayal ediyorum gui
. GUI bileşeninin GUI öğesinin gerçekleştireceği eylem türünü tanımlayacağı yer. Bununla birlikte, bu eylem oldukça benzersiz ve bağlama özgü olacaktır. Bu, GUI bileşenlerinin çok büyük olduğu ve GUI işlevlerinin (yük oyunu, oyunu kaydet, sunucu bul, vb.) Dağınık geliyor.
Her GUI "ekranı" için standart bir sınıf dosyası yapmayı tercih ederim. Bu ekran için tüm işlevleri tek bir yerde bulundurun (ortak bir işlevsellik sınıfına referanslarla). Çok daha temiz ve yönetilmesi daha kolay.
Bununla birlikte, dediğim gibi, ECS'nin GUI sistemine erişimi olmalıdır. Sistemlerindeki varlıklara dayanarak GUI'ye bilgi sağlayabilmelidir. Örneğin, müttefik bir birimin üzerine gelmek, o birim hakkındaki tüm bilgileri içeren bir GUI penceresi açar. Bir düşman birliğinin üzerine gelindiğinde sınırlı bilgi içeren bir GUI penceresi açılır. Muhtemelen GUI'yi ikisi arasındaki farkı bilmesi için programlamak istemezsiniz, kuruluştan bilgilerini görüntülemesini istersiniz.
Dolayısıyla, varlıkların hala bir çeşit GUI bileşeni olacaktır, ancak GUI varlıkları değil, "oyun içi" varlıklar olacaktır. Bu bileşen, GUI arabirimlerini oluşturmak için harici GUI sistemini kullanır.