Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

Several objects one script C#

Discussion in 'Scripting' started by Mateusz Gryczan, Nov 26, 2014.

  1. Mateusz Gryczan

    Mateusz Gryczan

    Joined:
    May 10, 2014
    Posts:
    10
    Hi, I got stuck. I don't know what to do. I have a few objetcs(letters) and I want to when my script generate random letter and check if is correct move to other object with same script.



    Code:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class generateRandomSprite : MonoBehaviour {
    5.  
    6.     //public
    7.     public countDownC _countDown;
    8.     public KeyCode[] SpriteKeyCode;
    9.  
    10.     //public Sprite Sprites;
    11.     public Sprite[] sprites;
    12.  
    13.     //public gameObjects
    14.     public GameObject Correct;
    15.     public GameObject InCorrect;
    16.  
    17.     //private
    18.     private int currentSprite = -1;
    19.     private int currentKeyCode;
    20.     private bool isKeyDownClicked = false;
    21.  
    22.     // Use this for initialization
    23.     void Start () {
    24.         _countDown = GameObject.FindGameObjectWithTag("MainCamera").gameObject.GetComponent<countDownC>();
    25.         sprites = Resources.LoadAll<Sprite>("Sprites/spriteLetters");
    26.        
    27.         SpriteKeyCode[0] = KeyCode.A;
    28.         SpriteKeyCode[1] = KeyCode.B;
    29.         SpriteKeyCode[2] = KeyCode.C;
    30.         SpriteKeyCode[3] = KeyCode.D;
    31.         SpriteKeyCode[4] = KeyCode.E;
    32.         SpriteKeyCode[5] = KeyCode.F;
    33.         SpriteKeyCode[6] = KeyCode.G;
    34.         SpriteKeyCode[7] = KeyCode.H;
    35.         SpriteKeyCode[8] = KeyCode.I;
    36.         SpriteKeyCode[9] = KeyCode.J;
    37.         SpriteKeyCode[10] = KeyCode.K;
    38.         SpriteKeyCode[11] = KeyCode.L;
    39.         SpriteKeyCode[12] = KeyCode.M;
    40.         SpriteKeyCode[13] = KeyCode.N;
    41.         SpriteKeyCode[14] = KeyCode.O;
    42.         SpriteKeyCode[15] = KeyCode.P;
    43.         SpriteKeyCode[16] = KeyCode.Q;
    44.         SpriteKeyCode[17] = KeyCode.R;
    45.         SpriteKeyCode[18] = KeyCode.S;
    46.         SpriteKeyCode[19] = KeyCode.T;
    47.         SpriteKeyCode[20] = KeyCode.U;
    48.         SpriteKeyCode[21] = KeyCode.V;
    49.         SpriteKeyCode[22] = KeyCode.W;
    50.         SpriteKeyCode[23] = KeyCode.X;
    51.         SpriteKeyCode[24] = KeyCode.Y;
    52.         SpriteKeyCode[25] = KeyCode.Z;
    53.  
    54.         Correct.renderer.enabled = false;
    55.         InCorrect.renderer.enabled = false;
    56.  
    57.         /*
    58.         try
    59.         {
    60.             SpriteKeyCode = (KeyCode[])System.Enum.Parse(typeof(KeyCode), sprites[currentSprite].name);
    61.         }
    62.         catch
    63.         {
    64.            
    65.         }
    66.         */
    67.    
    68.     }
    69.    
    70.     // Update is called once per frame
    71.     void Update () {
    72.        
    73.         if (currentSprite == -1 && _countDown.readyToPlay)
    74.         {
    75.             currentSprite = sprites.Length + 1;
    76.             currentSprite = Random.Range(0, sprites.Length);
    77.             currentKeyCode = currentSprite;
    78.             GetComponent<SpriteRenderer>().sprite = sprites[currentSprite];
    79.         }
    80.  
    81.         /*
    82.         if (Input.GetKeyDown(this.SpriteKeyCode[0]))
    83.         {
    84.             Debug.Log("Key is pressed: " + this.sprites[currentSprite].name);
    85.         }
    86.         */
    87.         TurnOffSprite();
    88.     }
    89.  
    90.     void TurnOffSprite()
    91.     {
    92.  
    93.         if (Input.anyKeyDown && _countDown.readyToPlay)
    94.         {
    95.             if (Input.GetKeyDown(SpriteKeyCode[currentKeyCode]))
    96.             {
    97.                 if (InCorrect.renderer.enabled == false)
    98.                 {
    99.                     Correct.renderer.enabled = true;
    100.                 }
    101.             }
    102.             else
    103.             {
    104.                 if(Correct.renderer.enabled == false)
    105.                 {
    106.                     InCorrect.renderer.enabled = true;
    107.                 }
    108.             }
    109.         }
    110.     }
    111. }
    112.  
     
  2. image28

    image28

    Joined:
    Jul 17, 2013
    Posts:
    457
    Code (csharp):
    1. currentSprite = sprites.Length + 1;
    Why the plus one arrays start at zero

    Also your turn off sprite function never turns off any renderer

    Code (CSharp):
    1.    Correct.renderer.enabled=true;
    2.    InCorrect.renderer.enabled = false;
    and remove the if statement

    I might be misunderstanding what you are trying to do though
     
  3. Mateusz Gryczan

    Mateusz Gryczan

    Joined:
    May 10, 2014
    Posts:
    10
    thanks for reply,
    I have one script which draws random letter(sprite) from my sprites and now I want If script finished work - draws random latters, check if input was pressed etc. to go other object. Sorry for my terrible english.



    cuz. When i press correct Input script check others too and I dont know what to do: