2016-07-27 4 views
1

У меня проблемы с PlayerPrefs на Android. Я хочу, чтобы мой учебник, чтобы показать только один раз, так что я написал этот код:PlayerPrefs не работает ни на Android, ни на редакторе

void Awake(){ 
     firstTime = false; 
     hasPlayed = PlayerPrefs.GetInt ("hasPlayed"); 
     if (hasPlayed == 0) { 
      firstTime = true; 
     } else { 
      PlayerPrefs.SetInt ("hasPlayed", 1); 
      firstTime = false; 
      PlayerPrefs.Save(); 
     } 
} 

После того, как построен и испытан на телефоне, APK не создает какую-либо папки на/данных или что-то и, следовательно, учебник, показывающий каждый раз Я запускаю игру.

+0

Try для входа значение 'hasPlayed'. Вы также можете попробовать добавить второй параметр в 'GetInt (« hasPlayed », 0);», чтобы убедиться, что вы получаете значение 0 по умолчанию. –

+0

вы просто забыли «, 0» на GetInt – Fattie

ответ

1

PlayerPrefs.GetInt принимает еще один параметр, который вы можете использовать для возврата значения, если предоставленный ключ делает не. Проверьте, существует ли ключ hasPlayed со значением по умолчанию 0. Если ключ не существует, он вернет это значение по умолчанию, которое равно 0.

Если он возвращает 0, установите hasPlayed в 1, а затем сыграйте в свой учебник. Если он возвращает 1, это означает, что учебник был ранее воспроизведен. Подобно this вопрос, но вам нужна небольшая модификация.

Вот что он должен выглядеть следующим образом:

void Start() 
{ 
    //Check if hasPlayed key exist. 
    if (PlayerPrefs.GetInt("hasPlayed", 0) == 1) 
    { 
     hasPlayed(); 
    } 
    else 
    { 
     //Set hasPlayed to true 
     PlayerPrefs.SetInt("hasPlayed", 1); 
     PlayerPrefs.Save(); 

     notPlayed(); 
    } 
} 


void hasPlayed() 
{ 
    Debug.Log("Has Played"); 
    //Don't do anything 
} 

void notPlayed() 
{ 
    Debug.Log("Not Played"); 
    //Play your tutorial 
} 

//Call to reset has played 
void resetHasPlayed() 
{ 
    PlayerPrefs.DeleteKey("hasPlayed"); 
} 
+0

@Cabrra Да, 'PlayerPrefs.HasKey' может быть использован. Я на самом деле использовал 'PlayerPrefs.GetInt' специально, чтобы это можно было увеличить. Например, большинство игр имеют разные уровни с учебником на каждом уровне. Вышеприведенный выше код может быть легко расширен, чтобы проверить, какой учебник проигрывал последний раз, а какой - играть дальше, добавив 'else if (PlayerPrefs.GetInt (" hasPlayed ", 0) == 2)'. Вы можете добавить как можно больше учебников. 'PlayerPrefs.HasKey' не может сделать это в одиночку и по-прежнему будет требовать' PlayerPrefs.GetInt' в сочетании с ним, что делает код длиннее. – Programmer

+0

Также 'GetInt (строковый ключ, int defaultValue);' выполняет 'PlayerPrefs.HasKey' в капоте. он сокращает код. 'PlayerPrefs.HasKey' необходим только в том случае, если вы просто хотите знать, существует ли ключ. В моем случае я хочу знать, существует ли он, а также получить значение без использования двух функций. – Programmer

+1

Отлично, это утверждение: PlayerPrefs.GetInt ("hasPlayed", 0) == 1 сделал трюк. Большое спасибо! – user1423168

Смежные вопросы