@PrytexY
Нюхаю бебру

Почему не работает скрипт c# unity?

Недавно начал изучать Unity написал скрипт на c# :
СКРИПТ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TerminalControl : MonoBehaviour
{   
    

    public bool InSp;
    public string level =" 0";
    public string[] Level1Passwords = {"crazy","dino","google","book","2012"};
    public string[] Level2Passwords = {"crazydino","x124@#53","HellO12!a","123456789!","ChikI_BaM"};
    public string[] Level3Passwords = {"crazy","dino","google","book","2012"};


    public int[] rand = {2};

    enum screen {mainMenu, Password, Win};
    screen CurrenScreen = screen.mainMenu;
    public AudioClip testSound;
    void Start()
    {   
        
        ShowMainMenu("Привет");


    }



    void ShowMainMenu(string hello){
        

        CurrenScreen = screen.mainMenu;
        Terminal.ClearScreen();
        Terminal.WriteLine(hello+", что ты хочешь взломать? \n");
        Terminal.WriteLine("1) Компьютер библиотеки");
        Terminal.WriteLine("2) Компьютер в университете");
        Terminal.WriteLine("3) Главный компьютер в Пентагоне \n");

        Terminal.WriteLine("Введите ваш выбор: ");




    }


    void libraryHack(){
        CurrenScreen = screen.Password;
        AudioSource audio = gameObject.GetComponent<AudioSource>();
        audio.Play();


        Terminal.WriteLine("Вы выбрали уровень 1 :\"Взлом компьютера в библиотеке\", подключение к хосту библиотеки...");

        Terminal.WriteLine("Подключение установленно...");

        







    }

        void pentagonHack(){
        CurrenScreen = screen.Password;
        AudioSource audio = gameObject.GetComponent<AudioSource>();
        audio.Play();


        Terminal.WriteLine("Вы выбрали уровень 3 :\"Взлом компьютера в рентагоне\", обход защиты в пентагоне...");

        Terminal.WriteLine("Подключение установленно...");

        







    }


    void univerHack(){
        CurrenScreen = screen.Password;
        AudioSource audio = gameObject.GetComponent<AudioSource>();
        audio.Play();


        Terminal.WriteLine("Вы выбрали уровень 2 :\"Взлом компьютера в Университете\", подключение к главному серверу униерстета...");

        Terminal.WriteLine("Подключение установленно...");

        







    }


    void mainMenuInfo(string input){

            if (input == "/clean"){
                Terminal.ClearScreen();}

            else if (input == "1"){
                
                Terminal.ClearScreen();
                level = "1";
                libraryHack();
                }

            else if (input == "2"){
                Terminal.ClearScreen();
                level = "2";
                univerHack();
                }

            else if (input == "3"){
                Terminal.ClearScreen();
                level = "3";
                pentagonHack();
                }



            else if (input == "/menu"){
                ShowMainMenu("Рад видеть вас снова");

            }

            else Terminal.WriteLine("Здравствуй "+input+",введи пожалуйста правильное значение!");




    }




    void libraryHackInfo(string input, int id){
        print(rand[0]);
        if (input == "/clean"){
            Terminal.ClearScreen();}
        
        else if (input == "/menu")
            {
                ShowMainMenu("Рад видеть тебя снова");
            }

                else if (input == "/menu")
            {
                ShowMainMenu("Рад видеть тебя снова");
            }

                else if (input == Level1Passwords[id])
            {
                Terminal.WriteLine("Ейбои мокорошка!");
            }





    }


    void univerHackInfo(string input){
        if (input == "/clean"){
            Terminal.ClearScreen();}
        
        else if (input == "/menu")
            {
                ShowMainMenu("Рад видеть тебя снова");
            }

                else if (input == "/menu")
            {
                ShowMainMenu("Рад видеть тебя снова");
            }

                else if (input == Level2Passwords[0])
            {
                Terminal.WriteLine("Ейбои мокорошка2!");
            }





    }


    void pentagonHackInfo(string input){
        if (input == "/clean"){
            Terminal.ClearScreen();}
        
        else if (input == "/menu")
            {
                ShowMainMenu("Рад видеть тебя снова");
            }

                else if (input == "/menu")
            {
                ShowMainMenu("Рад видеть тебя снова");
            }

                else if (input == Level3Passwords[0])
            {
                Terminal.WriteLine("Ейбои мокорошка3!");
            }





    }



    // Update is called once per frame
    
    
    void OnUserInput(string input)
	{
        if (CurrenScreen == screen.mainMenu){
            mainMenuInfo(input);
            
	}
    else 
        if (CurrenScreen == screen.Password && level=="1" ){
            InSp=false;
            libraryHackInfo(input,Random.Range(0,Level1Passwords.Length));


        }
    

        else 
            if (CurrenScreen == screen.Password && level=="2"){
                univerHackInfo(input);


        }

        else 
            if (CurrenScreen == screen.Password && level=="3"){
                pentagonHackInfo(input);


        }
        
    }
    
}

И вылезает ошибка "UnityException: RandomRangeInt is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'TerminalControl'"

BiI34o6.png

Зарание благодорю за ответ!
  • Вопрос задан
  • 903 просмотра
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Причина, решение и ссылка на документацию находятся у Вас прямо в строке лога с ошибкой.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы