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 Prace · Jan 21, 2018 at 01:21 AM · c#scripting problemui

Performance Improvement For Time Controlled Slider?

Right now, I have to things:

  1. A Slider from 0 to 10.

  2. An empty gameObject using the following script:

         public Slider Slider;
         float timeLeft = 10.0f;
     
         void FixedUpdate()
         {
             timeLeft -= Time.deltaTime;
             Debug.Log(timeLeft);
             Slider.value = 10.0f - timeLeft;
             if (timeLeft < 0)
             {
                 Debug.Log("Time's over!");
                 timeLeft = 10.0f;
             }
         }
     }
    
    

It works like a charm, the slider is moving accordingly and resets when reaching the end. However I'm quite sure that's not that efficient performance-wise. I've read something about using IEnumerator (yep, newbie here), but I couldn't bring it to work.

Also, is it possible to set the value to whole numbers? Although it's possible to tick the "whole numbers" box at the slider's component itself, that won't change the "real" value that'll still have decimals. Not sure whether that'll add something to the performance as well, but if so: why not.

Thanks in advance! :)

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

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by sparkzbarca · Jan 21, 2018 at 05:06 AM

A.

Use the performance tools to check and see if your seeing any noticable decrease in frames, if your not really actually seeing the performance hit in a meaningful way, don't worry too much about optimizing for it.

co routines are "efficient" only in that most modern processors are multi threaded and co routines generally run on another processor, freeing up the one used by the game loop. This only matters if your CPU is being overly taxed by your game loop though, otherwise it doesn't matter, which is why I said point A. That your CPU utilization goes from 40% to 55% or whatever doesn't matter unless your really concerned about electricity.

a simple script is (pulled nearly directly from waitforseconds documentation)

 using UnityEngine;
 using System.Collections;
 
 public class WaitForSeconds : MonoBehaviour
 {
     void Start()
     {
         StartCoroutine(Timer(5));
     }
 
     IEnumerator Timer(int Seconds)
     {
         yield return new WaitForSeconds(Seconds);
     }
 }``

you can't directly wait as it were.

something like

 void Update()
 {
  StartCoRoutine(Timer(5));
 //do something after 5 seconds
 }

DOES NOT WORK

firstly, starting a co routine in an update in this case at least would mean a new timer is started every frame, so 60 timers a second, which would lock up your pc.

secondly. because co routines run basically seperatly, the do something after 5 seconds code would run right away because the co routine gets handed off to another processor.

that is what makes co-routines nice, you can do things in parallel and utilize multiple processors.

that's also what can make them confusing because you don't realize that anything inside a co routine has basically broken out of the brackets the code is contained in.

So if you want to you can indeed use a enumerator and it's probably good practice, but basically all your doing is this.

 Ienumerator Timer()
 {
          timeLeft -= Time.deltaTime;
          Debug.Log(timeLeft);
          Slider.value = 10.0f - timeLeft;
          if (timeLeft < 0)
          {
              Debug.Log("Time's over!");
              timeLeft = 10.0f;
          }
 }

which is literally extracting your fixed update code and placing it running in parallel on another processor.

probably not needed if your game is simple, but fine practice.

Comment
Add comment · Show 1 · 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 UnityCoach · Jan 21, 2018 at 12:36 PM 0
Share

Are you sure about the multi-threading aspect of co-routines? I've read several posts, blogs and such on the topic, and unless Unity's changed something recently, using a Coroutine doesn't create a new thread.

avatar image
0

Answer by UnityCoach · Jan 21, 2018 at 12:47 PM

You can use InvokeRepeating. This will round values and also limit the update rate of the slider

Something in the lines :

     [SerializeField] Slider timeSlider;
     float time = 10f;
 
     void Start()
     {
         InvokeRepeating ("UpdateTimer", 1.0f, 1.0f);
     }
 
     void UpdateTimer ()
     {
         time -= 1f;
         timeSlider.value = time;
     }
Comment
Add comment · 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.

Follow this Question

Answers Answers and Comments

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

UI Text: Words at end of line jumping to next line 0 Answers

Image UI not enabling C# SOLVED 1 Answer

Deleting random objects in started project 0 Answers

How do i change a color of an individual alphabet of a UI.Text 2 Answers

SetActive(false) in Start does not seem to work 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