Hayırlı bayramlar,
Gamemanager içinde bir array listem var. Her elementin içinde Gameobject, sıra numarası ve konum olmak üzere 3 değişken var. Oyun dinamiği tamamen bunun üzerine kurulu.
Bu araylist obje havuzu görevi görüyor. Sürekli en alttaki obje en üstte bulunan objenin üstünde bir yerde rastgele konumlanıyor. Ve sıra numarası buna göre değişiyor.
Örneklemek gerekirse, 1 2 3 objem var. 1. Objeye dokununca sırası numarası değişkeni 4 oluyor ve 3. Objenin üst konumunda rastgele bir konum alıyor bu şekilde gidiyor.
Fakat objelere verdiğim sıra numarası değişkeninden bir türlü ulaşamıyorum. Yani mesela 1. Obje ile 2. Obje arasında bir çizgi çizmem lazım diyelim. Bu objelere sıra numarası üzerinden ulaşamıyorum. Cok çok dolaylı yollarla aklıma bir şeyler geldi de yine de sorunlar çıktı.
Bunu haleltmenin bir yolu var mı? Günlerdir kafayı yemek üzereyim.
arraylist yerine başka ne kullanabilirim bunu yapmak için?
Şuan mesela element numarasına göre sorgulama yapıyoruz ama sürekli değişen benim verdiğim sıra numarasina göre objelere erişme imkanım var mı?
Arraylist içinde for dönüsüyle obje sıra numaralarını çekip bir int dizisine atadım. Ama yine de objelere erisemiyorum sıra numarası ile. Nasıl bir bağlantı kurabilirim?
C# Diziler - Unity Kafayı yemek üzereyim yardım!
7
●147
- 24-05-2020, 21:44:51Hocam başlangıçta buna benzer bir şey yapıyordum zaten ama sadece konum değil bir çok şeye erişmem gerekiyor artık. Her objenin pozisyonu, içinde tuttuğu script, sprite renderer, çocuk nesneler. Her şeyi manager üzerinden kontrol etmem lazım. Bu yüzden sıra numarasına göre erisebilmem önemliHEGEL adlı üyeden alıntı: mesajı görüntüle
- 26-05-2020, 06:01:30Array içerisindeki elementler hocam. Element 0, 1,2 diye gidiyor id numaraları.Gressx adlı üyeden alıntı: mesajı görüntüle
Aslında dolaylı yoldan çözdüm yukarıdaki sorunu ama daha sağlam bir algoritma arıyorum. Dictionary kullanımına bir kaç kez bakmıştım ama karışık geldi ve yapmak istediğim şeyi tam karşılıyor mu emin olamadım örnekler ve konu anlatımlarına bakarak.
Şöyle özetleyebilirim. Sahnede 3 tane nesnem var (şimdilik). Bir dizi içerisinde bu nesnenin kendisini, sıra numarasını ve konumunu tutmam lazım. Her nesnenin bir numarası var ve dinamik olarak değişecek sabit değil. Konumu da aynı şekilde sabit değil, dinamik olarak değişecek. Aslında obje havuzu diyebiliriz.
Şimdi en alttan yukarı doğru sırasıyla 1,2 ve 3 numaralı nesnelerim var. Ben en alttaki nesneye dokunursam bunun numarası 4 olacak ve konumu 3. Nesnenin konumunun üzerinde rastgele bir vector alacak.
Şimdi ekranda aşağıdan yukarıya 2,3 ve 4 numaralı nesneler var. Ben en alttaki 2 numaraya tiklarsam aynı şekilde bu 5 numaralı nesne olup konumu 4 numaranın üstüne gelecek. Sonsuz oyun ve 3 nesnem obje havuzundan çağırılıyor. Dinamik olarak konum ve sıra numarası değişmesi lazım.
Evet bunu yapmak zor degil ama ben objelerin de kendi arasında iletişim kurmasını altındaki ve üstünde ve en üstteki nesneyi bulabilmesini istiyorum. Ayrıca dış nesneler de bunlarin sırasını bilebilmeli. Bu yüzden bütün işi gamemanager scripti ile dışarıdan kontrol etmem lazım. Buradaki sıra numarası ve konumu güncelleyip objelere atama yapıyorum.
Buraya kadar sorun yok. Listelerde her bir elementin içinde 3 değişken tutuyorum. Objenin kendisi, objenin ekrandaki sıra numarası ve objenin ekrandaki konumu. İşte burada sürekli for ve forech döngüleri kullanıp sürekli minimum maximum verileri bulup başka bir listede tutup sonra bunları birleştirip objelere erişip güncellemek gibi ekstra işlemler yapmam gerekiyor şuanda.
Objeleri, zaten listede tuttuğum ve sürekli değişen sıra numarasına göre bulabilsem her şey çözülecek.
Yani ekranda 5,6 ve 7 numaralı objeler var mesela aşağıdan yukarıya. Ben 6. Sıra numarası olan objeye erişmek istiyorum ama halihazırda bunun için kodu 4-5 işlemden geçirmem lazım. Oyun dinamiği tamamen bunun üzerine kurulu. - 26-05-2020, 16:29:32Bu şekilde değil hocam. Halihazırda Arraylist içerisinde sıra numarası tutuyorum zaten. Bu sıra numarası dediğim level gibi bir şey olacak. Yani sonsuza kadar artacak. Benim sıra numarası en küçüğe, en büyüğe, seçili objenin sıra numarasından bir eksiğine ve bir fazlasına bir şekilde ulaşmam lazım. Şuan zaten bunu yapıyorum ama çok dolaylı yollarla.Stanley_ adlı üyeden alıntı: mesajı görüntüle
Direkt benim belirlediğim ve sürekli değişen sıra numarasına göre erişebilmem lazım.
Hocam bir dizi oluşturunca her bir öğesi element olarak isimlendirilir. Elementler bu şekilde.Seyit25 adlı üyeden alıntı: mesajı görüntüle
Start içinde instantiate ediyorum. Ama oyun boyunca obje havuzu mantığında sadece sıra numarası (level gibi bir şey) ve konum değişiyor arraylist içinde. Yani oyun başladığında 1,2,3 sıra nimarasi olan objeler varken. Oyunun ileriki bir aramasında mesela 45,46,47 sıra numaralı objeler olacak.
Olay çok karışık olduğu için anlatması da zor. Kimse tam anlamamış sorunu galiba. PC geçince ekran görüntüsüyle kodları da paylaşayım inşallah.
HEGEL adlı üyeden alıntı: mesajı görüntüleGressx adlı üyeden alıntı: mesajı görüntüleStanley_ adlı üyeden alıntı: mesajı görüntüleDaha anlaşılır bir konu açtım lütfen yardımcı olun. Oyun dinamiği bunun üzerine kurulu, daha pratik yol bulamayınca devam edemiyorum 1 haftadır.Seyit25 adlı üyeden alıntı: mesajı görüntüle
https://www.r10.net/android-programl...ardim-r10.html