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 /
avatar image
0
Question by dal11255 · Apr 08, 2020 at 04:56 PM · architecturestate-machinedesign-patterns

Proper Game State and UI Management

I am having the hardest time wrapping my head around a proper game state and UI management system.

So lets say I have a game that has a main menu state, play state, and a game over state. Each state also has a respective UI to go along with it, as well as additional UI (menu, paused, etc..) that each can make use of if needed. Each state also has its own behavior. The main menu with be listening for inputs, maybe playing some animations, and other things. The play state will be controlling everything that happens during game play (most likely separated into many different classes being "managed" by this state). This includes score, money, player interactions, etc... The game over state is responsible for game over stuff... I think you get the point.

Previously I would manage this the following way: I would have a parent game object called StateController that had child objects for MainMenuState, PlayState, and GameOverState. Each of the children would have their respective state scripts AND UI elements/scripts. The StateController would be responsible for calling SetActive(true) on whatever state the game was currently in, and SetActive(false) for whatever the previous state was, usually controlled by my GameManager singleton.

So this worked, but now I am attempting a project of a much larger scale and I really have the feeling I should be separating these into two separate entities. My current plan is to have a UIManager game object/script that has each respective UI underneath it; MainMenuUI, PlayUI, GameOverUI. Similarly, I would have a StateManager that acts almost the same but rather than UI elements as children I would have the scripts needed for each state: MainMenuState, PlayState, and GameOverState. These would work together by having the StateManager keep a reference to UIManager and turn on/off the UI as needed.

So this was all going according to plan UNTIL I realized how closely these systems need to work together. The states constantly need to be updating and telling the UI what to display and when to display it. Trying to be as clean as possible, I want to avoid having direct references to any specific UI scripts within my state scripts (I always avoid assigning anything in the editor). My idea was to do something such as have the PlayState get the PlayUI from the UIManager and then update things from there. Or inversely have the PlayUI get the PlayState script and pull the data that it needs. But I am having the hardest time deciding on a solution and keeping it.

My question is are either of these solutions viable/reasonable? Is it smarter to go with the second option? Or are both of these solutions terrible and I am missing something huge?

My apologies for the long post, I appreciate anyone who took the time to read it.

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

127 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 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 avatar image

Related Questions

Interaction Between Core Logic and GameObjects: A n00b's Architecture Problems 1 Answer

How do I hook custom inspectors up to models? 2 Answers

How can I architect a persistent RTS using Unity as the client? 0 Answers

How do you bring your ideas to real code? 1 Answer

Several Questions about MVC pattern 0 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