Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
  • Help Room /
avatar image
0
Question by ltrout1999 · Jan 02, 2016 at 09:10 PM · c#errorgame

GameLoop not playing correctly?

I followed the Tanks! and SurivalShooter tutorial and mixed them to create a singleplayer Tank! game. The GameLoop I set up to spawn the tanks, edit the message text, etc. won't play correctly. It spawns the tank, and then the music just jitters and the game freezes but I can shoot but not move or anything. Here is the code for that class

 using System.Collections;
 using UnityEngine;
 using UnityEngine.UI;
 using PlayerInfo;
 using EnemyInfo;
 
 namespace Management
 {
     public class GameManager : MonoBehaviour
     {
         public int NumRoundsToWin = 5;            
         public float StartDelay = 3f;          
         public float EndDelay = 3f;              
         public CameraControl CameraControl;     
         public Text MessageText;                 
         public GameObject PlayerPrefab;       
         public GameObject EnemyPrefab;
         public TankManager[] Tanks;               
 
         private int RoundNumber;                 
         private WaitForSeconds StartWait;        
         private WaitForSeconds EndWait;          
         private TankManager RoundWinner;         
         private TankManager GameWinner;          
 
         private void Start()
         {
             StartWait = new WaitForSeconds (StartDelay);
             EndWait = new WaitForSeconds (EndDelay);
 
             SpawnAllTanks();
             SetCameraTargets();
 
             StartCoroutine (GameLoop ());
         }
 
         private void SpawnAllTanks()
         {
             for (int i = 0; i < Tanks.Length; i++)
             {
                 if (i == 0)
                     Tanks[i].Instance = Instantiate (PlayerPrefab, Tanks[i].SpawnPoint.position, Tanks[i].SpawnPoint.rotation) as GameObject;
                 else
                     Tanks[i].Instance = Instantiate (EnemyPrefab, Tanks[i].SpawnPoint.position, Tanks[i].SpawnPoint.rotation) as GameObject;
                 Tanks[i].Setup();
             }
         }
 
         private void SetCameraTargets()
         {
             Transform[] targets = new Transform[Tanks.Length];
 
             for (int i = 0; i < targets.Length; i++)
             {
                 targets[i] = Tanks[i].Instance.transform;
             }
 
             CameraControl.Targets = targets;
         }
 
         private IEnumerator GameLoop ()
         {
             yield return StartCoroutine (RoundStarting ());
 
             yield return StartCoroutine (RoundPlaying());
 
             yield return StartCoroutine (RoundEnding());
 
             if (GameWinner != null)
             {
                 Application.LoadLevel (Application.loadedLevel);
             }
             else
             {
                 StartCoroutine (GameLoop ());
             }
         }
 
         private IEnumerator RoundStarting ()
         {
             ResetAllTanks ();
             DisableTankControl ();
 
             CameraControl.SetStartPositionAndSize ();
 
             RoundNumber++;
             MessageText.text = "ROUND " + RoundNumber;
 
             yield return StartWait;
         }
 
         private IEnumerator RoundPlaying ()
         {
             EnableTankControl ();
 
             MessageText.text = string.Empty;
 
             while (!OneTankLeft())
             {
                 yield return null;
             }
         }
 
         private IEnumerator RoundEnding ()
         {
             // Stop tanks from moving.
             DisableTankControl ();
 
             RoundWinner = null;
 
             RoundWinner = GetRoundWinner ();
 
             if (RoundWinner != null)
                 RoundWinner.Wins++;
 
             GameWinner = GetGameWinner ();
 
             string message = EndMessage ();
             MessageText.text = message;
 
             yield return EndWait;
         }
 
         private bool OneTankLeft()
         {
             // Start the count of tanks left at zero.
             int numTanksLeft = 0;
 
             for (int i = 0; i < Tanks.Length; i++)
             {
                 if (Tanks[i].Instance.activeSelf)
                     numTanksLeft++;
             }
 
             return numTanksLeft <= 1;
         }
 
         private TankManager GetRoundWinner()
         {
             for (int i = 0; i < Tanks.Length; i++)
             {
                 if (Tanks[i].Instance.activeSelf)
                     return Tanks[i];
             }
 
             return null;
         }
 
         private TankManager GetGameWinner()
         {
             for (int i = 0; i < Tanks.Length; i++)
             {
                 if (Tanks[i].Wins == NumRoundsToWin)
                     return Tanks[i];
             }
 
             return null;
         }
 
         private string EndMessage()
         {
             string message = "DRAW!";
 
             if (RoundWinner != null)
                 message = RoundWinner.ColoredPlayerText + " WINS THE ROUND!";
 
             // Add some line breaks after the initial message.
             message += "\n\n\n\n";
 
             for (int i = 0; i < Tanks.Length; i++)
             {
                 message += Tanks[i].ColoredPlayerText + ": " + Tanks[i].Wins + " WINS\n";
             }
 
             if (GameWinner != null)
                 message = GameWinner.ColoredPlayerText + " WINS THE GAME!";
 
             return message;
         }
 
         private void ResetAllTanks()
         {
             for (int i = 0; i < Tanks.Length; i++)
             {
                 Tanks[i].Reset();
             }
         }
 
         private void EnableTankControl()
         {
             for (int i = 0; i < Tanks.Length; i++)
             {
                 Tanks[i].EnableControl();
             }
         }
 
         private void DisableTankControl()
         {
             for (int i = 0; i < Tanks.Length; i++)
             {
                 Tanks[i].DisableControl();
             }
         }
     }
 }


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

0 Replies

· Add your reply
  • Sort: 

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

63 People are following this question.

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

Related Questions

I can't figure this out. I have Unity 5.3.1 and this error keeps popping up. error CS0029 1 Answer

The body of '' cannot be an iterator block because 'void' is not an iterator interface type??? 2 Answers

Coding Errors 1 Answer

A namespace cannot directly contain mambers such as fields or methods... 2 Answers

Flashlight script help! 2 Answers


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