PlayerPrefs logic and bool?

Hello!
This is yet another PlayerPrefs related question, but I’m not here to ask you to write any code for me, just want to ask you guys to clarify the thinking process behind this function a bit since the Script Reference is pathetic.

I have a script with a ton of booleans that unlock levels in my game.
I want to save these booleans when the player either OnApplicationPause’s the game or on certain levels of the game.

An example would be:

static var tutorialUnlocked = true;

How would I go about saving that boolean?
http://wiki.unity3d.com/index.php?title=BoolPrefs , I don’t mind using this script, but since I don’t even understand the logic behind PlayerPrefs I don’t really know where to even begin.

Currently I have a script that has a function which unlocks levels in the game.
The function gets called at the end of a short cutscene-ish animation at the end of each level, for example:

if(Application.loadedLevel == 12 && lifeManager.life > 2 && ProgressScript.caveUnlocked == false){
	ProgressScript.caveUnlocked = true;

Now I wouldn’t mind adding a PlayerPrefs in that function, I just don’t understand the logic.
Would I instead of saying “ProgressScript.caveUnlocked = true;” just say “PlayerPrefsX.SetBool(ProgressScript.caveUnlocked = true);”? (granted I’d be using the above mentioned work around)
So instead of saving the state of a script, I am actually setting the boolean using the PlayerPrefs? Testing it, it doesn’t work…

And then of course, I would like to load those prefs at the start of the game again (I have a blank scene at 0 for this - main menu is at 1), assuming I’d understand the logic behind saving, loading shouldn’t be too far away.

If anyone could at least shed some insight in to how I’d go about saving the state of a script/gameobject’s booleans I’d be able to sleep tonight, as that is the final piece of my little iPhone puzzle atm.

Thank you very much!

PS. I can’t believe how uninformative the script reference is about this

PlayerPrefs are not meant to be variables to hold your current game state, instead it is a very easy way to persist data between game starts.

Suppose we can unlock levels, I would create a LevelManager script which keeps track of all the level states. It would load the level states on start up and save the level state everytime I unlock a level. The LevelManager would look something like below (C#)

using UnityEngine;
using System.Collections;

public class LevelManager : MonoBehaviour
{
    private bool level1Unlocked = false;

    // Use this for initialization
    void Start()
    {
        int state = PlayerPrefs.GetInt("Level1State", 0);   //0 is default value, when "Level1State" has never been saved before 

        if (state == 1)
            level1Unlocked = true;
        else
            level1Unlocked = false;
    }

    // Update is called once per frame
    void Update()
    {

    }

    public bool IsLevel1Unlocked()
    {
        return level1Unlocked;
    }

    public void UnlockLevel1()
    {
        level1Unlocked = true;

        PlayerPrefs.SetInt("Level1State", 1);
    }
}