As you can see in the picture, I want to make my play button load the first scene, and after the player wins in the first stage, the text on the button “STAGE 1” will be “STAGE 2” , and when he’ll click in the play button It’ll load the new stage “2”
and so on…

The question is pretty generic, so here is kind of a generic answer.
/// <summary>
/// Our level data container
/// </summary>
[System.Serializable]
public class Level
{
[SerializeField] string levelName; // Fancy name for our level to display on the button
[SerializeField] string sceneToLoad; // The actual name of the scene to load
public string LevelName { get { return levelName; } }
public string SceneToLoad { get { return sceneToLoad; } }
}
The above holds some level data. The name of the level for our button and the scene to load for the level when the button is pushed.
using UnityEngine;
using UnityEngine.SceneManagement;
/// <summary>
/// Something like this goes into your main scene (not any level scenes)
/// </summary>
public class LevelManager : MonoBehaviour
{
[SerializeField] Level[] levels;
int currentLevelIndex;
void Awake()
{
DontDestroyOnLoad(gameObject); // Keep this around so we can maintain our levels
}
/// <summary>
/// On completing of a level, let level manager know its completed
/// </summary>
public void OnLevelComplete()
{
// We just increment to next level
currentLevelIndex++;
}
/// <summary>
/// Your button will call this once pushed
/// </summary>
public void LoadNextLevel()
{
if (currentLevelIndex < levels.Length)
{
SceneManager.LoadScene(levels[currentLevelIndex].SceneToLoad);
}
}
/// <summary>
/// On completion of a level, your button asks for the next levels name to display on it
/// </summary>
/// <returns>string</returns>
public string GetNextLevelName()
{
string levelName = "";
if (currentLevelIndex < levels.Length)
{
levelName = levels[currentLevelIndex].LevelName;
}
return levelName;
}
}
The above script is a level manager. It sticks around through the game, even after a new scene loads. Call LoadNextLevel when you start the game (so it will load the first level), and when a level is completed. Afterwards, your button asks it what level name it should display, and then tells it to load the level when pushed.
Fairly generic, but it may help you get some ideas. Hope it helps!