Я пытался сделать синглтон в Unity 2017 .
public class Singleton {
public static readonly Singleton instance = new Singleton();
static readonly float FLOAT_VAL = 3.5f;
static readonly int INT_VAL = 3;
private Singleton() {
Debug.Log("FLOAT_VAL = " + FLOAT_VAL);
Debug.Log("INT_VAL = " + INT_VAL);
}
}
Я ожидал увидеть вывод "FLOAT_VAL = 3.5" и "INT_VAL = 3" . Тем не менее, он получил выходные данные "FLOAT_VAL = 0" и "INT_VAL = 0" . Затем я удалил оба модификатора «только для чтения», оставив «статический», и все равно получил два нуля.
Что случилось с инициацией или созданием этого синглтона? Как я могу правильно дать значения статическим переменным? Есть что-нибудь общее с Unity? (Я выбрал il2cpp при сборке проекта, но это было протестировано в режиме редактора)
Кстати, я выяснил, что инициализация переменной "instance" не начиналась до первого вызова (раньше я думал, что все статические переменные инициализируются при загрузке сборки. ). Это тоже еще одна особенность Unity или просто нормальная?