Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by waywardchicken · Jan 07, 2013 at 03:25 AM · loadinglevels

Need to alter script to load next level when level is completed

I'm having some trouble here. I'm really new at coding but trying to learn with a sample project. I have this demo script here for my game manager but I need to alter it so that when the player completes a level they can progress to the next one.

Can someone give me a hand with this?

 using System.Collections;
 using UnityEngine;
 
 //List of all the posible gamestates
 public enum GameState
 {
     NotStarted,
     Playing,
     Completed,
     Failed
 }
 
 //Make sure there is always an AudioSource component on the GameObject where this script is added.
 [RequireComponent(typeof(AudioSource))]
 public class GameManager : MonoBehaviour
 {
     //Text element to display certain messages on
     public GUIText FeedbackText;
 
     //Text to be displayed when entering one of the gamestates
     public string GameNotStartedText;
     public string GameCompletedText;
     public string GameFailedText;
 
     //Sounds to be played when entering one of the gamestates
     public AudioClip StartSound;
     public AudioClip FailedSound;
 
     private GameState currentState = GameState.NotStarted;
     //All the blocks found in this level, to keep track of how many are left
     private Block[] allBlocks;
     private Ball[] allBalls;
 
     // Use this for initialization
     void Start()
     {
         Time.timeScale = 1;
 
         //Find all the blocks in this scene
         allBlocks = FindObjectsOfType(typeof(Block)) as Block[];
 
         //Find all the balls in this scene
         allBalls = FindObjectsOfType(typeof(Ball)) as Ball[];
 
         //Prepare the start of the level
         SwitchTo(GameState.NotStarted);
     }
 
     // Update is called once per frame
     void Update()
     {
         switch (currentState)
         {
             case GameState.NotStarted:
                     //Check if the player taps/clicks.
                     if (Input.GetMouseButtonDown(0))    //Note: on mobile this will translate to the first touch/finger so perfectly multiplatform!
                     {
                         for (int i = 0; i < allBalls.Length; i++)
                             allBalls[i].Launch();
 
                         SwitchTo(GameState.Playing);
                     }
                 break;
             case GameState.Playing:
                 {
                     bool allBlocksDestroyed = true;
 
                     //Check if all blocks have been destroyed
                     for (int i = 0; i < allBlocks.Length; i++)
                     {
                         if (!allBlocks[i].BlockIsDestroyed)
                         {
                             allBlocksDestroyed = false;
                             break;
                         }
                     }
 
                     //Are there no balls left?
                     if (FindObjectOfType(typeof(Ball)) == null)
                         SwitchTo(GameState.Failed);
 
                     if (allBlocksDestroyed)
                         SwitchTo(GameState.Completed);
                 }
                 break;
             //Both cases do the same: restart the game
             case GameState.Failed:
             case GameState.Completed:
                 //Check if the player taps/clicks.
                 if (Input.GetMouseButtonDown(0))    //Note: on mobile this will translate to the first touch/finger so perfectly multiplatform!
                     Restart();
                 break;
         }
     }
 
     //Do the appropriate actions when changing the gamestate
     public void SwitchTo(GameState newState)
     {
         currentState = newState;
 
         switch (currentState)
         {
             default:
             case GameState.NotStarted:
                 DisplayText(GameNotStartedText);
                 break;
             case GameState.Playing:
                 audio.PlayOneShot(StartSound);
                 DisplayText("");
                 break;
             case GameState.Completed:
                 audio.PlayOneShot(StartSound);
                 DisplayText(GameCompletedText);
                 StartCoroutine(RestartAfter(StartSound.length));
                 break;
             case GameState.Failed:
                 audio.PlayOneShot(FailedSound);
                 DisplayText(GameFailedText);
                 StartCoroutine(RestartAfter(FailedSound.length));
                 break;
         }
     }
 
     //Helper to display some text
     private void DisplayText(string text)
     {
         FeedbackText.text = text;
     }
 
     //Coroutine which waits and then restarts the level
     //Note: You need to call this method with StartRoutine(RestartAfter(seconds)) else it won't restart
     private IEnumerator RestartAfter(float seconds)
     {
         yield return new WaitForSeconds(seconds);
 
         Restart();
     }
 
     //Helper to restart the level
     private void Restart()
     {
         Application.LoadLevel(0);
     }
 }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by RazorCut · Jan 07, 2013 at 04:11 AM

It looks as if you need to modify the two case statements so that "case GameState.Completed" does something different, so that it can load the next level, not level 0.

Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image RazorCut · Jan 07, 2013 at 04:13 AM 0
Share

FYI, I'm on an iPad answering, otherwise I'd just show you directly. Sorry!

avatar image waywardchicken · Jan 07, 2013 at 06:13 AM 0
Share

Thanks! I'll give this a shot.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

9 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Way to load levels faster? 1 Answer

time between scenes (loading time) 0 Answers

Why do i get error that level is not in build settings when i can see that it is in multiple ways? 2 Answers

Application.LoadLevel sometimes loads the wrong scene 0 Answers

New scene for minigame or not? 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges