PlayerPrefsX.SetBoolArray not saving

Hey all,

I’ve written some code which is used for unlocking gear in my game. Essentially, if unlockList is true, then hgBoolList becomes true and an image that is placed over an object is removed and the player can click the object and equip the gear. The code works fine but SetBoolArray does not seem to be saving the PlayerPref value.

           public void _Long1Unlock(){

		if (gm.totalCoinsCollected >= baseCost && hgBoolList[1] == false) {
			unlockList[1] = true;
			PlayerPrefsX.SetBoolArray("Unlock", unlockList);
			//PlayerPrefs.SetInt("UnlockHG1", 1);
			gm.totalCoinsCollected -= baseCost;
		}else {
			errorFlash = true;
			StartCoroutine("ErrorTime");
			}
		}

		public void _Long1(){
		if (unlockList[1] = true){
			PlayerPrefs.SetInt ("Headgear", 1);
			print ("Long1 equipped");
		}
		}
		
		public void Update(){

		PlayerPrefsX.GetBoolArray("Unlock");

		print ("HG Unlock List " +unlockList[1]);
		print ("HG Bool List " +hgBoolList [1]);
		print ("HG Img List " +imgList[1].enabled);

		for (int i = 0; i < unlockList.Length; i++) {
			if (unlockList  *== true ) {*

_ hgBoolList = true;_
* }*
* }*

* for (int i = 0; i < hgBoolList.Length; i++) {*
_ if (hgBoolList == true) {
imgList .enabled = false;
* }
}
}*

If anyone could explain why it isn’t working, it would be much appreciated.
Many thanks,
Takz_

Late, but here is answer.

Change line 23 PlayerPrefsX.GetBoolArray("Unlock");

to

unlockList = new bool[] {};
unlocklist = PlayerPrefsX.GetBoolArray("Unlock");

But, unless you have a valid reason, this should be placed just before starting Update(). Additionally, some error checking would be in order to handle the case of player clearing registry entries, or for the case of a new game install where PlayerPrefs are not yet set. Something like:

if(unlocklist.Length != expectedValue) {
    unlocklist = myDefault_unlocklist_Array;
}