Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 Jun 22 - 14 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 /
This question was closed Mar 07 at 06:28 PM by Zok_Dev for the following reason:

The question is answered, right answer was accepted

avatar image
0
Question by Zok_Dev · Mar 07 at 09:08 AM · randomfunctionrandom.rangeswitchswitch-case

Random.Range doesn´t seem to be working (or a switch statement)

This script should output a random number every 2 seconds. somehow spawnspeedcount does get raised every 2 seconds but the random output doesn´t show up in log.

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using Random = UnityEngine.Random;
 public class Spawner : MonoBehaviour
 {   public float spawnSpeedCount;
     public float countdownTime = 2;
     public float randomNumber;
     
     
     // Start is called before the first frame update
     void Start()
     {
         InvokeRepeating("OnTick", 2f, countdownTime);
     }
 
     // Update is called once per frame
     void Update()
     {
          switch(randomNumber)
         {
         case 1:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 2:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 3:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 5:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 6:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 7:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 8:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 9:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 10:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 11:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 12:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 13:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 14:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 15:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 16:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         
     
         }
 
     }
     public void OnTick()
     {
         float randomNumber = Random.Range(0, 16); 
         spawnSpeedCount += 1;
         randomNumber = Mathf.Ceil(randomNumber);
     }
 }
 

Comment
Add comment · Show 5
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 andrew-lukasik · Mar 06 at 04:17 PM 0
Share
 using UnityEngine;
 public class Spawner : MonoBehaviour
 {
     public int spawnSpeedCount = 0;
     public float countdownTime = 2;
     public int randomNumber;
     void Start ()
     {
         InvokeRepeating( "OnTick" , countdownTime , countdownTime );
     }
     void OnTick ()
     {
         randomNumber = Random.Range( 0 , 16 );
         spawnSpeedCount += 1;
         Debug.Log($"new random number #{spawnSpeedCount}: {randomNumber}");
     }
 }

Is all you need

avatar image Zok_Dev andrew-lukasik · Mar 06 at 10:13 PM 0
Share

I know, I use the switch statement because I want to replace the log message with something different later but currently it does not output the random number.

avatar image andrew-lukasik · Mar 06 at 11:30 PM 0
Share

Your problem here is that switch doesn't really work with float variables.

Replace:

float randomNumber; with int randomNumber;

and

float randomNumber = Random.Range(0, 16); with randomNumber = Random.Range(1, 17);

avatar image Zok_Dev andrew-lukasik · Mar 07 at 04:22 PM 0
Share

Didn’t work

avatar image andrew-lukasik Zok_Dev · Mar 07 at 11:10 PM 0
Share

That's because float randomNumber = Random.Range(0, 16); creates a new local variable resulting in public field of the same name never being changed from it's starting value of 0.

1 Reply

  • Sort: 
avatar image
0
Best Answer

Answer by Zok_Dev · Mar 07 at 11:06 PM

Got it working. It seems like switch got called to early or in a to high frequency. I moved it into the OnTick funktion and replaced UnityEngine.Random.Range() with a random functions from System. I didn´t try moving switch without using Unity Random but I´m trying it later. Code is here:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using Random = System.Random;
 using System;
 public class Spawner : MonoBehaviour
 {   public float spawnSpeedCount;
     public float countdownTime = 2;
     public int randomNumber;
     Random rnd = new Random();
     
     // Start is called before the first frame update
     void Start()
     {
         InvokeRepeating("OnTick", 2f, countdownTime);
     }
 
     // Update is called once per frame
     void Update()
     {
          
 
     }
     public void OnTick()
     {
         int randomNumber = rnd.Next(17);
         spawnSpeedCount += 1;
 
     switch(randomNumber)
         {
         case 1:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 2:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 3:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 5:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 6:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 7:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 8:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 9:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 10:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 11:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 12:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 13:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 14:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 15:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         case 16:
         Debug.Log(randomNumber);
         randomNumber = 0;
         break;
 
         
     
         }
         
     }
 }
 
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

Follow this Question

Answers Answers and Comments

143 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

Related Questions

Increase over time, 0 Answers

Color Randomize when object spawn help 0 Answers

List or Arrays, and how to randomize them. 1 Answer

the floats wont be applied, Random.Range 1 Answer

Why doesn't random range work? 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