• 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
Question by Kielgasten · Jan 29, 2013 at 12:31 PM · loopswitchfsm

Broken FSM - It only runs once, ignores switch

Hello, I have been trying to make an FSM based on BergZergArcades youtube tutorial which is all well and good, except I cannot get mine to work.

This is my script:

 using UnityEngine;
 using System.Collections;
 
 public class States : MonoBehaviour
 {
 
     private State _state;
     private WalkingStates _walkingStates;
 
     // Use this for initialization
     IEnumerator Start ()
     {
         _state = State.Init;
         _walkingStates = WalkingStates.Walk;
 
         while (true)
         {
             switch (_state)
             {
                 case State.Init:
                     Init();
                     break;
                 case State.Idle:
                     Idle();
                     break;
                 case State.Walking:
                     Walking();
                     break;
             }
             yield return 0;
         }
 
     }
 
 
     private void Init()
     {
         Debug.Log("this is the init method");
         _state = State.Idle;
     }
 
     private void Idle()
     {
         Debug.Log("This is the idle method");
         _state = State.Walking;
     }
 
     private void Walking()
     {
         Debug.Log("this is the WALKING method");
 
         switch (_walkingStates)
         {
             case WalkingStates.Walk:
                 Walk();
                 break;
             case WalkingStates.Circles:
                 Circles();
                 break;
             case WalkingStates.Stop:
                 Stop();
                 break;
         }
     }
 
     private void Walk()
     {
         Debug.Log("this is the Walk method");
         _walkingStates = WalkingStates.Circles;
     }
 
     private void Circles()
     {
         Debug.Log("this is the Circles method");
         _walkingStates = WalkingStates.Stop;
     }
 
     private void Stop()
     {
         Debug.Log("this is the Stop method");
         _walkingStates = WalkingStates.Walk;
         _state = State.Idle;
     }
 
     public enum State
     {
         Init,
         Idle,
         Walking
     }
 
     public enum WalkingStates
     {
         Walk,
         Circles,
         Stop
     }
 }

It seems that the switch in "Walking()" is being ignored altogether, and the methods just called in sequence. Also, the main loop should be called after each iteration on the Walking() FSM, but it´s not, and I just don´t get it. If someone could help me out, that would be much appreciated. Best Regards Ronnie

Comment

People who like this

0 Show 0
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
Best Answer

Answer by Kielgasten · Feb 07, 2013 at 05:22 PM

ahem... this was actually working fine. I had turned "collapse" on in the console, giving it the appearance of malfunctioning. In short, nothing to see here. Apologies for wasting internet space. /shame

Comment

People who like this

0 Show 0 · 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

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

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

How to implement a Game Manager using Switch and Case in C# 0 Answers

really weird problem, Enum refusing to change state. 1 Answer

How to loop a function? 2 Answers

Can't instantiate in loop - crashes unity 1 Answer

Animator.Play()? 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