Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.

Save the Multiple name using the PlayerPrefs function

Discussion in 'Scripting' started by schetty, Mar 19, 2013.

  1. schetty

    schetty

    Joined:
    Jul 23, 2012
    Posts:
    424
    Hi,

    I have used below code for saving the multiple names using the array. But i have the issue in this. when i save the second name in array the first name also change. I dont know how to solve this, please help me to do this.

    Code (csharp):
    1. PlayerPrefs.SetString("JOKE"+no[0], "one");
    2.         PlayerPrefs.SetString("JOKE"+no[1], "two");
    3.        
    4.         GUI.Label(new Rect(10, 100, 100, 30), PlayerPrefs.GetString("JOKE"+no[0]));
    5.         GUI.Label(new Rect(10, 140, 100, 30), PlayerPrefs.GetString("JOKE"+no[1]));    
    Thanks.
     
  2. Lukas H

    Lukas H

    Joined:
    Jan 16, 2009
    Posts:
    394
    Please provide your full code. My guess would be that JOKE+no[0] and JOKE+no[1] produce the same key which would lead to JOKE+no[1] overrwriting JOKE+no[0].
     
  3. schetty

    schetty

    Joined:
    Jul 23, 2012
    Posts:
    424
    Code (csharp):
    1. public int[] no;
    2.     int i;
    3.     // Use this for initialization
    4.     void Start () {
    5.        
    6.         i=2;   
    7.     }
    8.    
    9.     // Update is called once per frame
    10.     void Update () {
    11.    
    12.     }
    13.     void OnGUI()
    14.     {  
    15.         PlayerPrefs.SetInt("No", no[0]);       
    16.         PlayerPrefs.SetString("JOKE"+PlayerPrefs.GetInt("No"), "one");
    17.        
    18.         PlayerPrefs.SetInt("No", no[1]);
    19.         PlayerPrefs.SetString("JOKE"+PlayerPrefs.GetInt("No"), "two");
    20.           }
    21. }
     
  4. Lukas H

    Lukas H

    Joined:
    Jan 16, 2009
    Posts:
    394
    Ok so this code is a bit different but this is what happends: you save int no[0] with key "No", two lines later you overwrite that value with int no[1].
    Its important to understand that if you want to save multiple values you need multiple and unique keys. (also if no[0] and no[1] are the same value, this example would fail too)
     
  5. schetty

    schetty

    Joined:
    Jul 23, 2012
    Posts:
    424
    so, do you know any other way to do this function?
     
  6. Lukas H

    Lukas H

    Joined:
    Jan 16, 2009
    Posts:
    394
    Start simple with something like:
    Code (csharp):
    1.  
    2. void Start()
    3. {
    4. PlayerPrefs.SetString("JOKE_ONE", "one");
    5. PlayerPrefs.SetString("JOKE_TWO", "two");
    6.  
    7. Debug.Log(PlayerPrefs.GetString("JOKE_ONE"));
    8. Debug.Log(PlayerPrefs.GetString("JOKE_TWO"));
    9. }
    10.  
    And build from there.
     
  7. schetty

    schetty

    Joined:
    Jul 23, 2012
    Posts:
    424
    but i want to save the more than 100 data in this.... so i need array function for this..
     
  8. schetty

    schetty

    Joined:
    Jul 23, 2012
    Posts:
    424
    In this script i try to save the data when my toggle button is enable. if toggle is dis able that data should not save. This is my concept.

    Here is the script:
    Code (csharp):
    1. public string[] lables;
    2.     public bool[] selects;
    3.     public int[] no;
    4.     public GUIStyle lablestyle;
    5.    
    6.     public string[] saveditem;
    7.     static int save;
    8.     // Use this for initialization
    9.     void Start () {
    10.        
    11.         save = 1;
    12.         saveditem = new string[save];
    13.    
    14.     }
    15.    
    16.     // Update is called once per frame
    17.     void Update () {
    18.    
    19.     }
    20.     void OnGUI()
    21.     {  
    22.         for(int i =0; i < lables.Length-1; i++)
    23.         {
    24.             selects[i] = GUI.Toggle(new Rect(100, (30 * i) + 100, 20, 20), selects[i], "");
    25.         }
    26.                
    27.         if(GUI.Button(new Rect(130, 100, 100,30), "Press"))
    28.         {
    29.             save++;
    30.             saveditem = new string[save];
    31.         }
    32.         saveditem = new string[save];
    33.        
    34.         if(selects[0].Equals(true))
    35.         {
    36.             PlayerPrefs.SetString("Playre"+saveditem[save], lables[0].ToString());
    37.             print(lables[0].ToString());
    38.             save++;        
    39.         }
    40.        
    41.         if(selects[1].Equals(true))
    42.         {
    43.             PlayerPrefs.SetString("Playre"+saveditem[save], lables[0].ToString());
    44.             print(lables[0].ToString());
    45.             save++;        
    46.         }
    47.        
    48.         if(selects[2].Equals(true))
    49.         {
    50.             PlayerPrefs.SetString("Playre"+saveditem[save], lables[0].ToString());
    51.             print(lables[0].ToString());
    52.             save++;        
    53.         }
    54.        
    55.        
    56.        
    57.     }
     
  9. Falin

    Falin

    Joined:
    Sep 29, 2009
    Posts:
    242
  10. schetty

    schetty

    Joined:
    Jul 23, 2012
    Posts:
    424
  11. ardo314

    ardo314

    Joined:
    Jul 7, 2012
    Posts:
    345
    Why dont you use another for loop?
     
unityunity