Biraz geç olacak sanırım ve muhtemelen sorununu çözdün ancak yine de yazayım. Burada yaşanan sorun lifecycle problemi gibi duruyor. Array'in içi doldurulmadan, içinden veri çekmeye çalışıyorsun. `OutOfRange` tipi exceptionlar bir listenin limitini aştığın zaman ortaya çıkarlar.
En hızlı çözüm, Array'in içini static bir fonksiyonda tanımlaman olacaktır. Şu kod parçasını çağırmadan önce fonksiyonu çağırman yeterli olacaktır.
Kod:
GenelDizi.arryList1[dice]
Kanaatimce doğru çözüm; Dizileri veya soruları ayrı bir class'ta tanımlayıp, bu class'ı Singleton(static Instance, private constructor) hale getirmen. Bu şekilde hem kod temiz olacaktır, hem de Unity'nin lifecycle'ının önüne geçip ClassLoader class'ları yüklerken class'ın yüklenecektir. Class yüklendiği zaman, kullanım talep edildiğinde içinde her şey, her zaman hazır olacaktır.
Edit: Örnek olarak
C#:
public class Yarisma {
public static Yarisma Instance = new Yarisma();
public ArrayList sorular { get; private set; }
private Yarisma() {
sorular = new ArrayList();
defineSorular();
}
private void defineSorular() {
sorular.Add("soru1");
sorular.Add("soru2");
sorular.Add("soru3");
.
.
.
}
}
Kullanımı (Kodun herhangi bir yerinde):
C#:
string s = Yarisma.Instance.sorular[0]
Console.WriteLine(s);
Output: soru1
Yazım hatası ya da syntax hatası olabilir. Forum üzerindeki editör ile yazdım.