Oh my gosh, FINALLY a nice and simple way to do level select/unlock. I've looked through videos over a long time but none of them would work fully or be too complex to implement with my project. I'm like " I should be able to just increment an integer to unlock the next level" but couldn't figure it out myself. Absolute god-send of a video
Hello there! First of all, awesome video. This tutorial helped a lot and made some things really clear. However I may have an easy addition to your level selector menu. Instead of making a separate UI sprite image for each number you could only use the background as image and use the text within the button. The text will be displayed on top of the image making it the same and for my opinion a little bit easier to add a new button or edit the contents. You can even add a custom font to your game that you can use for your buttons. So I am not sure if you did it on purpose to use a separate image for every button but I think this will help a bit to reduce some size of the game and reuse your sprites. This is just a tip/add-on to your tutorial, not meaning any harm with it :) I am glad that I came across your video tho. It really helped me a lot, keep up the great work!
Hi 🖐 - I agree with your opinion. Using a single background is ideal for both practicality and size optimization. - I created one button in Adobe Illustrator and gave them different numbers, then export. - But in real game it makes sense to do as you say (if all buttons will be in the same design) Thank you so much for your nice comment 🙏😊
I am facing some issue with a restart button. Like the advices you gave to one of this comment. If you could make a short video about it. It would be fantastic. 😋
Hey I have a problem unlocking further levels, I watched your video and followed your every step, no errors are displayed to me, agdy I complete level 1 or 2 etc. the only level I can play is this further level 1 does not unlock at all. Please Respond.
Thank you so much for the video. Can you also make a video on setting up a level map with theme changing and all, where a player or a trail will follow when we reach to next level as it can be seen in many games? Thank you!
Thank you so much for this video, it helped me a lot in my internship project! I have a question though, how do I reset the game to lock all levels again?
hi i appreciated the video, it helps so much me on my project. But how do you reset the buttons? I mean how will the buttons be locked again? when you stop playing it? i hope i can get an answers, thank you so much sir.
I have a request for you. I'd like you to add the ability to close the menu with the B button to close the menu and the LB & RB triggers for the tab system with a gamepad.
Your videos in recent times do helped me a lot But The one area that haven't helped is the part where the unlocked levels been evaluated i got an NullReference Exception : Object reference not set to an instqnce of an object 😢
using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class levelMenu : MonoBehaviour { public Button[] buttons; public GameObject levelButtons; private void Awake() { ButtonsToArray(); int unLockedlevel = PlayerPrefs.GetInt("UnLockedLevel", 1); for (int i = 0; i < buttons.Length; i++) { buttons[i].interactable = false; } for (int i = 0;i < unLockedlevel; i++) { buttons[i].interactable = true; } } public void OpenLevel(int levelId) { string levelName = "Level " + levelId; SceneManager.LoadScene(levelName); } void ButtonsToArray() { int childCount = levelButtons.transform.childCount; buttons = new Button[childCount]; for (int i = 0; i < childCount; i++) { buttons[i] = levelButtons.transform.GetChild(i).gameObject.GetComponent(); } } } ................................................................................. using UnityEngine; using UnityEngine.SceneManagement; public class FinishPoint : MonoBehaviour { public GameObject levelCompleted; private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player")) { UnLockNewLevel(); SceneController.instance.NextLevel(); levelCompleted.SetActive(true);
I was Struggling to get this to work at first, then I looked at my console and noticed "the submit button is not setup" I changed it from "Submit" to Fire1 and it worked for me after that
Hello, When I try to use the buttons multiple times in one play test i sometimes get an error saying Invalid scene name (empty string) and invalid build index -1. The code works but when it gives me that error the correct scene doesn't load and either reloads the current scene or loads a random scene. How can I fix this?
Hi, great tutorial! I do everything step by step and it works until unlock levels, then it just stays the same: in the level select menu, I can click on each one. I checked the scripts, canvas etc but I don't see any error anywhere. Does anyone have an idea what could be wrong?
hello, hopefully you can answer my question. If i want to change the condition of the coding (when the level is complete) from box collider to just a button? Is it possible?
After building my project and doesnt work anymore i matched yours me same pls help i contacted unity techonologies but they said to say to the owner of scripts
Hi nice Tutorial but in the LevelScript i have the error Assets\LevelMenu.cs(8,12): error CS0246: The type or namespace name 'Button' could not be found (are you missing a using directive or an assembly reference?)
hello! thankyou for this video. i would like to ask something. because my levels dont have an "end" to them, I cant use your exact method. i want levels to unlock when the previous one reaches a certain score. for example, level 2 only unlocks when level 1 highscore is 100. and level 3 unlocks when level 2 highscore is 100. how would i do this?
Hello! Yes, you can do this with a simple algorithm. First, you set the required high score for each level. Then, each time the player's score changes, you check whether they have surpassed the required high score for the current level, using a conditional statement. If they have exceeded the required high score, you call the necessary function to unlock the next level.
@@RehopeGames thank you so much! would it be possible if you could give me some example simple code I could use to start off? Sorry, I am quite new to coding haha
I thought that this whould be harder but it's suprisingly easy... Thanks!! But there is one problem. If i want to test my game wich will have a lot of levels, is there a way to clear all of the data from unlocking levels?
Yes of course, İf you will keep the progress data in local ( client side ) you can store the data as json file. (don't forget to encrypt the json file ) Create Default Player Data and change the Player Data when you wanna reset the game. This topic is actually detally, maybe I can share a video about that.
@@RehopeGames just started doing the tutorial, after finishing i noticed that progressing does not work! ive tried removing some non-level scenes but it still doesnt work :(
i alr used unity.ui namespace, why cant use interactable on button? Assets\Script\UI\LevelScene.cs(23,27): error CS1061: 'Button' does not contain a definition for 'interactable' and no accessible extension method 'interactable' accepting a first argument of type 'Button' could be found (are you missing a using directive or an assembly reference?)
I have the same issue. @@RehopeGames This is my code using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.SceneManagement; using UnityEngine.UI; public class LevelMenu : MonoBehaviour { public Button[] buttons; public void Awake() { int unlockedLevel = PlayerPrefs.GetInt("Unlockedlevel", 1); for (int i = 0; i < buttons.Length; i++) { buttons[i].enabled = false; } for (int i = 0; i < unlockedLevel; i++) { buttons[i].enabled = true; } } public void OpenLevel(int levelId) { string levelName = "Level " + levelId; SceneManager.LoadScene(levelName); } }
Hi, thanks for video, can you help me with one question. I want to make this menu for 2.5D and 3D game, but i can't understand from video, if i add finish point to a box collider in 2.5D game, will it work or not ? if not, can you please help how to do that, when in 2.5D game player enter collider, start next level ? As i understand save will work with 2.5D without any problem. is this true code for that ? using UnityEngine; using UnityEngine.SceneManagement; public class FinishPoint : MonoBehaviour { private void OnTriggerEnter(Collider other) { if (other.CompareTag("Player")) { UnlockNewLevel(); SceneController.instance.NextLevel(); } } void UnlockNewLevel() { if (SceneManager.GetActiveScene().buildIndex >= PlayerPrefs.GetInt("ReachedIndex")) { PlayerPrefs.SetInt("ReachedIndex", SceneManager.GetActiveScene().buildIndex + 1); PlayerPrefs.SetInt("UnlockedLevel", PlayerPrefs.GetInt("UnlockedLevel") + 1); // Fixed the line PlayerPrefs.Save(); } } }
Hi um when I press a button a different button near it gets pressed instead, I don't know if buttons have Rigibodys and there covering each other I don't know but I desperately need anyones help so please if you know what's causing this just leave a comment... thank you
had the same issue. Dont use PlayerPrefs.GetInt("UnlockedLevel1", 1); instead use PlayerPrefs.GetInt("Unlockedlevel", 1); and dont put level 1 as part of the buttons in the levels panel
@@RehopeGames using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class LevelMenu : MonoBehaviour { public Button[] buttons; private void Awake() { int unlockedLevel = PlayerPrefs.GetInt("UnlockedLevel",1); for (int i =0; i < buttons.Length; i++) { buttons[i].interactable = false; } for (int i =0; i < unlockedLevel; i++) { buttons[i].interactable = true; } } public void OpenLevel(int levelId) { string levelName = "Level" + levelId; SceneManager.LoadScene(levelName); } }
Thank You worked well. the only thing i changed was instead of making two for loops I did this int unlocklevel = PlayerPrefs.GetInt("unlockedlevel", 1); for(int i = 0; i < buttons.Length; i++) { if(i + 1 > unlocklevel) { buttons[i].interactable = false; } I would get the Index error but this seems to work, but overall good video
@@RehopeGames Hi, i made a button "delete progress", added the DeleteProgress() function to the script with PlayerPrefs.DeleteAll(); but it does not lock the levels again when i click the button, any idea why and how to fix that? Also, big thanks for this video, great help!
ok I added PlayerPrefs.Save() to the Awake and now the button resets the progress but only when I play again, the buttons are still unlocked when i cycle through scenes and main menu
@@RehopeGames please help me my other levels doesnt unlock even i reach the finish point i check the codes and are all the same but its still doesnt work please help this is the code in my finishpoint using UnityEngine; using UnityEngine.SceneManagement; public class Finish : MonoBehaviour { private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { UnlockNewLevel(); GameManager.MyInstance.Finish();
} } private void OnTriggerExit2D(Collider2D collision) { if (collision.tag == "Player") { UIManager1.MyInstance.HideVictoryCondition(); } } void UnlockNewLevel() { if(SceneManager.GetActiveScene().buildIndex >= PlayerPrefs.GetInt("ReachedIndex")) { PlayerPrefs.SetInt("ReachedIndex", SceneManager.GetActiveScene().buildIndex + 1); PlayerPrefs.SetInt("UnlockedLevel", PlayerPrefs.GetInt("UnlockedLevel", 1) + 1); PlayerPrefs.Save(); } } } this is the code in my Level Menu using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class LevelMenu : MonoBehaviour { public Button[] buttons; public GameObject back; private void Awake() { int unlockedlevel = PlayerPrefs.GetInt("Unlockedlevel", 1); for(int i = 0; i < buttons.Length; i++) { buttons[i].interactable = false; } for(int i = 0; i < unlockedlevel; i++) { buttons[i].interactable = true; } } public void Earth() { SceneManager.LoadScene("EarthScene"); } public void Fire() { SceneManager.LoadScene("FireScene"); } public void Water() { SceneManager.LoadScene("WaterScene"); } public void Air() { SceneManager.LoadScene("EarthScene"); } public void Backbutton() { back.SetActive(false); } }
IndexOutOfRangeException: Index was outside the bounds of the array. LevelMenu.Awake () (at Assets/script/script menu level/LevelMenu.cs:22) UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:398)
Hi i need some help with this, these errors popped up as soon as I finished the script for the finishpoint Assets\FinishPoint.cs(16,48): error CS0103: The name 'SceneManager' does not exist in the current context Assets\FinishPoint.cs(14,76): error CS0103: The name 'ReachedIndex' does not exist in the current context Assets\FinishPoint.cs(14,13): error CS0103: The name 'SceneManager' does not exist in the current context did I do something wrong?
Oh my gosh, FINALLY a nice and simple way to do level select/unlock. I've looked through videos over a long time but none of them would work fully or be too complex to implement with my project. I'm like " I should be able to just increment an integer to unlock the next level" but couldn't figure it out myself. Absolute god-send of a video
I'm glad the video helped you 😊
Thanks for nice feedback 🙏
Easiest I've Ever Seen Thanks❤
Even though I'm from Russia, but I'm watching you. You're the best!
Thank you very much for your motivational feedback🙏
I wish you success in your project.😊
I’m very new to programming and this plus your main menu video help with my first project alot
Bro is underrated, you are so good bro, the next Brackeys!
Hello there!
First of all, awesome video. This tutorial helped a lot and made some things really clear.
However I may have an easy addition to your level selector menu. Instead of making a separate UI sprite image for each number you could only use the background as image and use the text within the button. The text will be displayed on top of the image making it the same and for my opinion a little bit easier to add a new button or edit the contents. You can even add a custom font to your game that you can use for your buttons.
So I am not sure if you did it on purpose to use a separate image for every button but I think this will help a bit to reduce some size of the game and reuse your sprites. This is just a tip/add-on to your tutorial, not meaning any harm with it :)
I am glad that I came across your video tho. It really helped me a lot, keep up the great work!
Hi 🖐
- I agree with your opinion. Using a single background is ideal for both practicality and size optimization.
- I created one button in Adobe Illustrator and gave them different numbers, then export.
- But in real game it makes sense to do as you say (if all buttons will be in the same design)
Thank you so much for your nice comment 🙏😊
I try to implement it to unity visual scripting and it works perfectly! thank you so much
tu es le KING. 🤩🤩🤩🤩
thank you for this awesome tutorial! it helped me so much!
I'm glad it helped you , Thanks for your nice feedback 😊
aga ikinizde türksünüz niye ingilizce konuşuyonuz
@@seffafadam287 ben iyi yorum olsun da öne çıksın kanalı diye yazdım işime de yaramıştı ödevimde
great tutorial! Thank you💗
Thank you so much ❤🙏
Thank you so much for the video. It was a big help for me😁
I'm so glad! 😊
Amazing, thank you so much!
I am facing some issue with a restart button. Like the advices you gave to one of this comment. If you could make a short video about it. It would be fantastic. 😋
Great tutorial,any thanks for sharing this! 😊
Thanks Brother You Are The claimant of 100k sub
Thank you so much bro 😊
as you can see
😅
Hey I have a problem unlocking further levels, I watched your video and followed your every step, no errors are displayed to me, agdy I complete level 1 or 2 etc. the only level I can play is this further level 1 does not unlock at all. Please Respond.
You find the solution???
sir you explain to simple way
Thank you so much for the video. Can you also make a video on setting up a level map with theme changing and all, where a player or a trail will follow when we reach to next level as it can be seen in many games? Thank you!
I've noted your request .
Thanks for your feedback 😊🙏
Thank you so much for this video, it helped me a lot in my internship project! I have a question though, how do I reset the game to lock all levels again?
Hi,
public void ResetGame()
{
PlayerPrefs.DeleteAll();
}
Connect this method any button as click event.
And thanks for your nice feedback :)
Thank you loads, you are awesome!! @@RehopeGames
@@salmadiaaelabsi You're welcome. Thank you very much for your courtesy.😊
I have a problem my levels won’t load when I pressed the buttons and I did excaclty as you did
Anlatımın için çok teşekkürler.Benim bir sorum olacaktı.Kilidi açılan bölümleri tekrar nasıl kitleyebilirim
thanks alot man 🙏
nice video !
Thanks! 🙏😊
Thank you so mutch
Wow wow❤. Thank you so much❤
hi i appreciated the video, it helps so much me on my project. But how do you reset the buttons? I mean how will the buttons be locked again? when you stop playing it?
i hope i can get an answers, thank you so much sir.
Hello,
You can Delete the PlayerPrefs Data ( Contain Level Progress) to Reset the game.
Thanks 🙏
I have a request for you. I'd like you to add the ability to close the menu with the B button to close the menu and the LB & RB triggers for the tab system with a gamepad.
Hello , you can do it using New Input System
Your videos in recent times do helped me a lot
But The one area that haven't helped is the part where the unlocked levels been evaluated i got an NullReference Exception : Object reference not set to an instqnce of an object 😢
Thank you Rehope Games.
Hi, I was wondering how would I be able to implement this if instead it was like a button what they had to buy to then unlock a higher level ?
Hello sir, i ihave problem in unity,
IndexOutofrangeException: Index was outside the bounds of the array
hey Rehope i have a problem when i play the game and open the next level the the level does not unlock in the level selector how can i fix this plz
Hi , did you follow me step by step.
Can you show me your script ?
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class levelMenu : MonoBehaviour
{
public Button[] buttons;
public GameObject levelButtons;
private void Awake()
{
ButtonsToArray();
int unLockedlevel = PlayerPrefs.GetInt("UnLockedLevel", 1);
for (int i = 0; i < buttons.Length; i++)
{
buttons[i].interactable = false;
}
for (int i = 0;i < unLockedlevel; i++)
{
buttons[i].interactable = true;
}
}
public void OpenLevel(int levelId)
{
string levelName = "Level " + levelId;
SceneManager.LoadScene(levelName);
}
void ButtonsToArray()
{
int childCount = levelButtons.transform.childCount;
buttons = new Button[childCount];
for (int i = 0; i < childCount; i++)
{
buttons[i] = levelButtons.transform.GetChild(i).gameObject.GetComponent();
}
}
}
.................................................................................
using UnityEngine;
using UnityEngine.SceneManagement;
public class FinishPoint : MonoBehaviour
{
public GameObject levelCompleted;
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Player"))
{
UnLockNewLevel();
SceneController.instance.NextLevel();
levelCompleted.SetActive(true);
}
}
void UnLockNewLevel()
{
if (SceneManager.GetActiveScene().buildIndex >= PlayerPrefs.GetInt("ReachedIndex"))
{
PlayerPrefs.SetInt("ReachedIndex", SceneManager.GetActiveScene().buildIndex + 1);
PlayerPrefs.SetInt("UnLockedLevel", PlayerPrefs.GetInt("UnLockedLevel", 1) + 1);
PlayerPrefs.Save();
}
}
}@@RehopeGames
i ifollwed you step by step but check my code if there is something wrong and thank you for your help
@@RehopeGames
Hey did u check my code
@@RehopeGames
hey can you check my code plz@@RehopeGames
I was Struggling to get this to work at first, then I looked at my console and noticed "the submit button is not setup" I changed it from "Submit" to Fire1 and it worked for me after that
Nice 👍
@Rehope Games from where did u get the assests?
Hello, When I try to use the buttons multiple times in one play test i sometimes get an error saying Invalid scene name (empty string) and invalid build index -1. The code works but when it gives me that error the correct scene doesn't load and either reloads the current scene or loads a random scene. How can I fix this?
Hello ,
Did you add all scenes to the Build Settings panel?
Check the scene name (You called as Parameter)
@@RehopeGames , Unity Unite... Unity code.
Hi, great tutorial!
I do everything step by step and it works until unlock levels, then it just stays the same: in the level select menu, I can click on each one. I checked the scripts, canvas etc but I don't see any error anywhere. Does anyone have an idea what could be wrong?
Were all the levels unlocked when you first made them, or are they all unlocked after you complete the levels?
@@RehopeGames they are unlocked all the time 😔 before and after I play the game
I am also experiencing this issue. Triple checked the scripts and everything in editor and can’t find where the break is…
Abi eline sağlık video çok işime yaradı
hello, hopefully you can answer my question. If i want to change the condition of the coding (when the level is complete) from box collider to just a button? Is it possible?
Hello,
Of course it's possible bro 😉
After building my project and doesnt work anymore i matched yours me same pls help i contacted unity techonologies but they said to say to the owner of scripts
i have a problem
my levels are not getting unlock even after completing level 1
can anyone help??
You can also just remove so you can play any level you want
Çok teşekkürler arkadaşım projemde bana yardımcı oldu, farklı tıklama etkinlikleri yapmanızı ve bunları seviyelerine eklemenizi öneririm
İşine yaramasına sevindim,
güzel geri bildirimin için teşekkürler kardeşim parmaklarına sağlık 😊
@@RehopeGames evet çünkü oyun projesi için bir video yapmamız gerekiyor
Hi nice Tutorial but in the LevelScript i have the error Assets\LevelMenu.cs(8,12): error CS0246: The type or namespace name 'Button' could not be found (are you missing a using directive or an assembly reference?)
Did you drag and drop the level buttons to the Button slots (Button[] array variable) on Unity ?
thanks bro you help a lot
Thank you so much bro for your nice feedback 😊
Thank you
Thanks 😊
Can you make Pause Menu and pause game system, that's would be great!
Ok , The next video will be about Pause Menu/System 👍
See you in the next video 😊
nice buddy
Thanks ✌
thanks
Thanks 🙏
thank you so much this is a helpfull
I'm glad hear that. Thanks 😊
"The name 'SceneController' does not exist in the current context" How do I fix this?
You should create a SceneController script.
I've created it in this video th-cam.com/video/E25JWfeCFPA/w-d-xo.html
hello! thankyou for this video. i would like to ask something. because my levels dont have an "end" to them, I cant use your exact method. i want levels to unlock when the previous one reaches a certain score. for example, level 2 only unlocks when level 1 highscore is 100. and level 3 unlocks when level 2 highscore is 100. how would i do this?
Hello!
Yes, you can do this with a simple algorithm.
First, you set the required high score for each level.
Then, each time the player's score changes, you check whether they have surpassed the required high score for the current level, using a conditional statement.
If they have exceeded the required high score, you call the necessary function to unlock the next level.
@@RehopeGames thank you so much! would it be possible if you could give me some example simple code I could use to start off? Sorry, I am quite new to coding haha
I thought that this whould be harder but it's suprisingly easy... Thanks!! But there is one problem. If i want to test my game wich will have a lot of levels, is there a way to clear all of the data from unlocking levels?
Yes of course, İf you will keep the progress data in local ( client side ) you can store the data as json file. (don't forget to encrypt the json file )
Create Default Player Data and change the Player Data when you wanna reset the game.
This topic is actually detally, maybe I can share a video about that.
the Next Level, complete Unity reg
@@RehopeGames just started doing the tutorial, after finishing i noticed that progressing does not work! ive tried removing some non-level scenes but it still doesnt work :(
i alr used unity.ui namespace, why cant use interactable on button? Assets\Script\UI\LevelScene.cs(23,27): error CS1061: 'Button' does not contain a definition for 'interactable' and no accessible extension method 'interactable' accepting a first argument of type 'Button' could be found (are you missing a using directive or an assembly reference?)
and i also cant drag n drop or references the object level from levels panel on inspector
Did you follow me step by step?
I have the same issue. @@RehopeGames
This is my code
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LevelMenu : MonoBehaviour
{
public Button[] buttons;
public void Awake()
{
int unlockedLevel = PlayerPrefs.GetInt("Unlockedlevel", 1);
for (int i = 0; i < buttons.Length; i++)
{
buttons[i].enabled = false;
}
for (int i = 0; i < unlockedLevel; i++)
{
buttons[i].enabled = true;
}
}
public void OpenLevel(int levelId)
{
string levelName = "Level " + levelId;
SceneManager.LoadScene(levelName);
}
}
Did you find a solution🙏
Hi, thanks for video, can you help me with one question. I want to make this menu for 2.5D and 3D game, but i can't understand from video, if i add finish point to a box collider in 2.5D game, will it work or not ? if not, can you please help how to do that, when in 2.5D game player enter collider, start next level ? As i understand save will work with 2.5D without any problem. is this true code for that ? using UnityEngine;
using UnityEngine.SceneManagement;
public class FinishPoint : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
UnlockNewLevel();
SceneController.instance.NextLevel();
}
}
void UnlockNewLevel()
{
if (SceneManager.GetActiveScene().buildIndex >= PlayerPrefs.GetInt("ReachedIndex"))
{
PlayerPrefs.SetInt("ReachedIndex", SceneManager.GetActiveScene().buildIndex + 1);
PlayerPrefs.SetInt("UnlockedLevel", PlayerPrefs.GetInt("UnlockedLevel") + 1); // Fixed the line
PlayerPrefs.Save();
}
}
}
please provide asset links too
Hi um when I press a button a different button near it gets pressed instead, I don't know if buttons have Rigibodys and there covering each other I don't know but I desperately need anyones help so please if you know what's causing this just leave a comment... thank you
Hello, I hope you solved the problem.
If not , Check the Rect size of the buttons.
Thanks 🙏
tnx ...
can you please add player skin selection to the game please?
Nice idea 👌
I've noted your request . Thanks 🙏😊
Hi, it only lets me unlock level 2 when ive completed level 2 not level 1. How do i fix it?
Hi, I hope you solved it.
If not can you show me your script
had the same issue. Dont use PlayerPrefs.GetInt("UnlockedLevel1", 1); instead use PlayerPrefs.GetInt("Unlockedlevel", 1); and dont put level 1 as part of the buttons in the levels panel
Hello, sir, i have a problem, after i finish second level, he don t unlock third level, even if it load and finish ...😢
Check the your script
I will check, thanx
good
Thanks 😊
I did everything as you did, but levels 1-5 are unlocked (6:53). I have 8 levels and only the last three are locked. What am I doing wrong?
Hi , can you show me your script?
@@RehopeGames
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LevelMenu : MonoBehaviour
{
public Button[] buttons;
private void Awake()
{
int unlockedLevel = PlayerPrefs.GetInt("UnlockedLevel",1);
for (int i =0; i < buttons.Length; i++)
{
buttons[i].interactable = false;
}
for (int i =0; i < unlockedLevel; i++)
{
buttons[i].interactable = true;
}
}
public void OpenLevel(int levelId)
{
string levelName = "Level" + levelId;
SceneManager.LoadScene(levelName);
}
}
on me it says index was outof bounds of the array when i click play
Did you follow me step by step ?
@@RehopeGamesi didt see the other videos only this, and i followed this video step by step
Does this work on 3D?
Yes of course 😉
Please can you do a tutorial on unity ads pleasessssssss
I've noted your request thanks 🙏
i keep getting an error code that says its not in build settings but it is. why is it doing this?
You probably forgot to add the game scenes to the build settings panel.
I got it working thanks tho
@@angrypuppy 👍
Thank you again but can you please give me all the assets? I you have them?
Hello, I'm gonna publish all project to itch.io in this week and I will share download link
@@RehopeGamesHello can i have the download link 🥹
Thank You worked well. the only thing i changed was instead of making two for loops I did this
int unlocklevel = PlayerPrefs.GetInt("unlockedlevel", 1);
for(int i = 0; i < buttons.Length; i++)
{
if(i + 1 > unlocklevel)
{
buttons[i].interactable = false;
}
I would get the Index error but this seems to work, but overall good video
👍
guys i can't use scenecotroller and what can i do
this video for you bro 😀
th-cam.com/video/E25JWfeCFPA/w-d-xo.html
i didnt add buttonstoarray
How do I lock every levels again
void Update()
{
if(Input.GetKeyDown(KeyCode.M))
{
PlayerPrefs.DeleteAll();
Debug.Log("PlayerPrefs Deleted");
}
}
How do I reset the levels unlocked?
Hello , if you run this code All level progress will reset.
PlayerPrefs.DeleteAll();
@@RehopeGames Thanks
@@RehopeGames Hi, i made a button "delete progress", added the DeleteProgress() function to the script with PlayerPrefs.DeleteAll(); but it does not lock the levels again when i click the button, any idea why and how to fix that? Also, big thanks for this video, great help!
ok I added PlayerPrefs.Save() to the Awake and now the button resets the progress but only when I play again, the buttons are still unlocked when i cycle through scenes and main menu
Thank you for your easy to understand tutorial!!! It really helped me a lot. ( * u * )
For me its not unlocking the levels
Assests?
Coming soon ...
What is this Project name??
I gave the project the name 2D Platformer
how do i lock levels if i exit the game?
You wanna reset the game progress when exit the game ?
yes@@RehopeGames
my level selection is not working now after i did no open the project in a week
@@RehopeGames
how could i reset the unlocked level?
@@RehopeGames
@@RehopeGames please help me my other levels doesnt unlock even i reach the finish point i check the codes and are all the same but its still doesnt work please help
this is the code in my finishpoint
using UnityEngine;
using UnityEngine.SceneManagement;
public class Finish : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Player")
{
UnlockNewLevel();
GameManager.MyInstance.Finish();
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.tag == "Player")
{
UIManager1.MyInstance.HideVictoryCondition();
}
}
void UnlockNewLevel()
{
if(SceneManager.GetActiveScene().buildIndex >= PlayerPrefs.GetInt("ReachedIndex"))
{
PlayerPrefs.SetInt("ReachedIndex", SceneManager.GetActiveScene().buildIndex + 1);
PlayerPrefs.SetInt("UnlockedLevel", PlayerPrefs.GetInt("UnlockedLevel", 1) + 1);
PlayerPrefs.Save();
}
}
}
this is the code in my Level Menu
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LevelMenu : MonoBehaviour
{
public Button[] buttons;
public GameObject back;
private void Awake()
{
int unlockedlevel = PlayerPrefs.GetInt("Unlockedlevel", 1);
for(int i = 0; i < buttons.Length; i++)
{
buttons[i].interactable = false;
}
for(int i = 0; i < unlockedlevel; i++)
{
buttons[i].interactable = true;
}
}
public void Earth()
{
SceneManager.LoadScene("EarthScene");
}
public void Fire()
{
SceneManager.LoadScene("FireScene");
}
public void Water()
{
SceneManager.LoadScene("WaterScene");
}
public void Air()
{
SceneManager.LoadScene("EarthScene");
}
public void Backbutton()
{
back.SetActive(false);
}
}
Hii bro can you Send me link of your Menu UI sprites😭😭😭
Hi bro , I will share the all project soon .
@@RehopeGames bro It's urgent I build my game without menu plz provide me sprties now
Hello Thanks for the tutorial but can you send me the script please i am lazy to rewrite :D ty
😂 Hi!
I'm gonna share all project soon.
We died😂
😂😂
@@RehopeGames OMG
thanks man , I almost delete unity
5:59
⁉
7:16
⁉
IndexOutOfRangeException: Index was outside the bounds of the array.
LevelMenu.Awake () (at Assets/script/script menu level/LevelMenu.cs:22)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:398)
🤦♂️
Hi i need some help with this, these errors popped up as soon as I finished the script for the finishpoint
Assets\FinishPoint.cs(16,48): error CS0103: The name 'SceneManager' does not exist in the current context
Assets\FinishPoint.cs(14,76): error CS0103: The name 'ReachedIndex' does not exist in the current context
Assets\FinishPoint.cs(14,13): error CS0103: The name 'SceneManager' does not exist in the current context
did I do something wrong?
also is there a way i could reset the levels with I link it to a "new game" button in the home screen?
Did you create scene manager script ?
Yes you can reset using PlayerPrefs.DeleteKey(string key)
Thank you