- Home /
Store user details with PlayerPrefs
Hi guys!
I know that I can use PlayerPrefs to store user data but there are certain things bugging me. Basically, what I want to make is a "Remember me" feature. I'm working on uploading score to a webserver and I want it to be able to auto-complete all the text fields based on the username ONLY. I've looked into PlayerPrefsX but I can't get it to work because it requires Built-In Array and it's not possible to dynamically push a new username into the array. Since I can't limit how many usernames to be written into the PlayerPrefs, I can't simply specify the limit of the array. I've been looking for answers but couldn't find it. Thanks in advance =)
Edit: I've tried working on making "auto-complete" feature but I can't get it to work. I'm not quite sure if the PlayerPrefs is actually working here since I can't debug it on device because the trigger of PlayerPrefs is based on iPhoneKeyboard.done. Here is the script I've written so far:
function RequestInput(){
if(showGUI){
if(keyboardUserName){
userName = keyboardUserName.text;
if(keyboardUserName.done){
CheckUserData(userName);
if(dataExist){
keyboardPersonName.text = ""+personName;
keyboardEmail.text = ""+emailAddress;
keyboardID.text = ""+icNumber;
}else if(!dataExist){
personName = keyboardPersonName.text;
emailAddress = keyboardEmail.text;
idNumber = keyboardID.text;
}
}
}
}
}
function CheckUserData(name:String){
var tempName:String = name;
for(var i = 0; i < 100; i++){
if(PlayerPrefs.HasKey(i+"Username")){
if(PlayerPrefs.GetString(i+"Username") == tempName){
personName = PlayerPrefs.GetString(i+"Name");
emailAddress = PlayerPrefs.GetString(i+"Email");
idNumber = PlayerPrefs.GetString(i+"ID");
dataExist = true;
Debug.Log(dataExist);
}
}else{
PlayerPrefs.SetString(i+"Username", userName);
PlayerPrefs.SetString(i+"Name", personName);
PlayerPrefs.SetString(i+"Email", emailAddress);
PlayerPrefs.SetString(i+"IC", idNumber);
Debug.Log("Username: "+userName +", Name: "+personName +", E-mail:"+emailAddress +", ID: "+idNumber);
dataExist = false;
Debug.Log(dataExist);
}
}
}
RequestInput() function is called from function OnGUI()
so it's always called after the score uploading screen comes up. Anything wrong in the script?
You can always convert between List and built-in arrays easily, so you can use a List normally, then use ToArray when saving, and use the array to initialize the List when loading.
Answer by DaveA · Mar 16, 2012 at 07:09 AM
There's a limit to how much can be stored in PlayerPrefs, so why not put a big limit, like 100? 1000? and just use that thing.
That said, if stuff is stored on a server, you could also save stuff on the server, and query it to download the fields you want to prepopulate.
So something like this will work? Since my function to check user data will be only called once after the user pressed the button.
Your answer
![](https://koobas.hobune.stream/wayback/20220613065158im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Does ArrayPrefs2 stores data on disk ? 0 Answers
How to save an array to PlayerPrefs? 1 Answer
ArrayPrefs 1 Answer
bool array to playerprefs 1 Answer
Guide in ArrayPrefs or PlayerPrefx? 1 Answer