i suggest you go with playerPref Integer
its really simple. you only need to have 1 playerPref int... lets say we name it "CurrentLevel"
you give it value 1 by default.
so when you load level selection scene, you have FSM there, that checks value of CurrentLevel.
for example:
if that value is 1, you unlock only first level.
if value is 2, you unlock first and second... and so on.
and when player completes level, you use set playerPref int, to the number of next level. so if he completed level 2, you need to set that playerPref to value 3, so that when loading scene checks which level to unlock, it will see that value is 3, so it will unlock 1,2,3 levels.
with string it is similar concept, you just need to use string compare instead of intiger compare