Sınıfın dışına çıkartman lazım bu değişkenleri. Eğer
C#:
public class Class {
bool a = false, b = a, c = a;
public Class(args) {
a = false;
b = true;
c = true;
}
}
şeklinde kullanırsan sadece oluşturduğun nesne için değişir bool değişkenler. Ama
PHP:
bool a = false, b = a, c = a;
public void set_Bool() {
a = false;
b = true;
c = b;
}
public class Class {
public Class() {
set_Bool();
}
}
şeklinde kullanırsan bu değerler o scope içerisinde herhangi bir fonksiyondan ve/veya nesne tarafından erişilebilir olur. Dolayısıyla isteğin yerine gelmiş olur. Geliştirirsin.
Static ile tanımladığınızda tüm nesneler için ortak değişken oluşturmuş oluyorsunuz. İstediğiniz buysa düzeltilebilir. Neden Player ile Enemy ortak değişken kullanıyor onu bilmiyorum ama yapmak istediğiniz buysa static işinizi görür. public static olarak tanımlarsanız diğer scriptlerden de ClassAdi.StaticDegiskenAdi şeklinde erişebilirsiniz. Hepsi ortak tek bir değeri kullanır.
Tam sorunu anlamadim. Her scope icinde ayni isimdeki variable farkli degerler alabiliyor demeye calismissin sanirim, yani "a" variable'a her zaman her yerde ayni olsun istiyorsun sanki?
Eger buysa sorun global readonly immutable constant kullanabilir ya da singleton obje kullanabilirsin.
Eger variable degeri compile time'da assign edilecek ve hic degismeyecekse global immutable constant isini gorur.
Eger zaman icerisinde bu degerler degisecekse singleton yapabilirsin.
Multi-thread ise thread-safety singleton olmasina dikkat et, ortalikta gezen singleton objelerinin %90'i thread-safe degil.
Global deger verip her yerde degistirirsen kodun 50 satirda spagettiye doner.
Tam sorunu anlamadim. Her scope icinde ayni isimdeki variable farkli degerler alabiliyor demeye calismissin sanirim, yani "a" variable'a her zaman her yerde ayni olsun istiyorsun sanki?
Eger buysa sorun global readonly immutable constant kullanabilir ya da singleton obje kullanabilirsin.
Eger variable degeri compile time'da assign edilecek ve hic degismeyecekse global immutable constant isini gorur.
Eger zaman icerisinde bu degerler degisecekse singleton yapabilirsin.
Multi-thread ise thread-safety singleton olmasina dikkat et, ortalikta gezen singleton objelerinin %90'i thread-safe degil.
Global deger verip her yerde degistirirsen kodun 50 satirda spagettiye doner.
Genel temiz kod yazma prensibi benim dedigim. Her gun uzerinde calistigin projede senin icin spagetti olmaz belki ama 6 ay sonra donup baktiginda "bu ne arkadas" tepkisi verebilirsin. Aliskanlik olmadan dogrusunu ogrenmek gerek bence.
Hackaton ya da code challenge yapmiyorsan bence cok gerekli bir skill temiz, anlasilir ve reusable kod yazabilmek.
Değişkenleri static yapmak ya da global başka bir classta tanımlamak bu işi çözebilir. Eğer unity kullanıyorsanız bu tarz sabit değişkenleri tutmak için Scriptable Object'ler kullanıp diğer scriptlerde bu objeye erişerek sabit değişkenleri kullanabilirsiniz. Ya da birkaç farklı değişken tipi ile oluşmuş objeler yapıp prefabler oluşturup onları kullanabilirsiniz