• 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 Zondi · Jan 17, 2020 at 11:02 PM · stringsmessagebox

Sending and Displaying a Series of Messages to the Player

So I need to be able to show a series of messages to the player ranging from warnings to in universe comms. These need to time out so they don't display permanently, and sort and display in the correct order. Ideally too it would be good if there is a cap to the number stored, so you don't end up with masses filling RAM.


This seems easy, but is proving to be beyond my (rather meager) programming skills. My first thought would be to make one long concatenated string, log the length of each string (or even just make lengths uniform) and then delete the characters as needed with StringBuilder() - but none of that seems to be present in unity. Then I tried making two arrays, one with strings, and one with the times the corresponding strings should stop getting displayed, but for some reason I could never get the for() loop to accurately find the oldest string. Then I tried copying what the Endless Sky team did - who did exactly this - and I can't even do that right. They seem to have done some sort of arcane magic with classes, but it turns out I don't really understand those/object orientated programming very well, and it doesn't help that it is all in C++.


Any ideas? I'm sure there is some simple solution that is totally passing me by.

Comment

People who like this

0 Show 1
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 Zondi · Jan 17, 2020 at 10:50 AM 0
Share

Of course with a new day this ended up being far easier a problem magically. I've managed to get it working with: public class UIManager : MonoBehaviour { public string[] MessageArray = new string[5];

     public void AddMessage(string newMessage)
     {
         MessageArray[4] = MessageArray[3];
         MessageArray[3] = MessageArray[2];
         MessageArray[2] = MessageArray[1];
         MessageArray[1] = MessageArray[0];
         MessageArray[0] = newMessage;
 
         Invoke("ClearOldestMessage", 5.0f);
     }
 
     private void ClearOldestMessage()
     {
         if (MessageArray[4] != null) MessageArray[4] = null;
         else if (MessageArray[3] != null) MessageArray[3] = null;
         else if (MessageArray[2] != null) MessageArray[2] = null;
         else if (MessageArray[1] != null) MessageArray[1] = null;
         else MessageArray[0] = null;
     }
 
     private void OnGUI()
     {
         //Message Display
         GUI.Box(new Rect(0, 0, Screen.width, Screen.height), MessageArray[0] + "\n" + MessageArray[1] + "\n" + MessageArray[2] + "\n" + MessageArray[3] + "\n" + MessageArray[4]);
     }
 }

I'm sure there is a less verbose way of doing this, but this works so I'm happy enough.

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.

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

117 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

Related Questions

Adding Entered name as Player 0 Answers

GUI Text manipulation - flexible enough for my project? 2 Answers

Mass instantiate causes corrupted strings on slower machines. 0 Answers

how loop through char in a string to find tags 0 Answers

Design Pattern: How to make a MessageBox 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