Błąd w skrypcie konsoli 3860 6

O temacie

Autor czop1

Zaczęty 19.12.2013 roku

Wyświetleń 3860

Odpowiedzi 6

czop1

czop1

Użytkownicy
posty8
ProfesjaGrafik 3D
  • Użytkownicy
Witam. Mam problemz fragmentem skryptu kosnoli, który po wpisaniu frazy zmienia pozycje playera. Jest tam przerobiona jednakże źle przezemnie składnia z C#. Nie wiem jak naprawić ten skrypt a strasznie jest mi potrzebny. Jest to rozwinięcie skryptu Avallacha. Pozdrawiam forum jako nowy użytkownik i proszę o pomoc ;)


class konsola extends MonoBehaviour
{
    var display : GUIText;
    var background : GUITexture;
    var forward = "do przodu";
    var postac;
    var position: Vector3;

    function Start () : void
    {
        transform.position = Vector3 (0.0, 1.0, 0.0);
        transform.localScale = Vector3 (0.0, 0.0, 0.0);
        display = gameObject.AddComponent(GUIText);
        display.enabled = false;
        background = gameObject.AddComponent(GUITexture);
        background.texture = new Texture2D (1, 1);
        background.color = Color (0.0, 0.0, 0.0, 0.3);
        background.pixelInset = Rect (0, -20, 5000, 20);
        background.enabled = false;
    }

    function Update () : void
    {
        if (display.enabled)
        {
            if (Input.inputString == "\b" && display.text.Length > 0)
            {
                display.text = display.text.Substring(0, display.text.Length - 1);
               
                if (Input.inputString == "do przodu")
                {
                    string() split = display.text.Split( new Char()[' '] ); // tniemy tam gdzie jest spacja
                   
                    if( split[0] == "DoPrzodu"  )
                    {
                        if( split.Length >= 2 )
                        {
                            var v = ToInt32( split[1] );
                            postac[0].transform.Translate( 0, 0, v );
                        }
                    }
                   
                   
                }
                   
            }
            else
                display.text += Input.inputString;
           
           
            if( Input.inputString == "\b" && display.text.Length > 0)
                display.text = display.text.Substring(0, display.text.Length - 1);
            else if( Input.inputString == "\n" || Input.inputString == "\r" )
            {
                  if( display.text == "Fraza" )
                    transform.position = new Vector3( 10, 10, 10 );
                       
                  display.text = String.Empty;
            }
            else
                display.text += Input.inputString;
        }
    }
}
 


czop1

czop1

Użytkownicy
posty8
ProfesjaGrafik 3D
  • Użytkownicy
Jest taki błąd tylko:

Cytuj
=: Error BCE0018: The name 'string' does not denote a valid type ('not found'). Did you mean 'System.Security.Cryptography.StrongNameSignatureInformation'?
 Przy linijce:

 string() split = display.text.Split( new Char()[' '] ); // tniemy tam gdzie jest spacja
 


czop1

czop1

Użytkownicy
posty8
ProfesjaGrafik 3D
  • Użytkownicy
Avallachu ;) Zaczynam dopiero swoją przygodę z JS jednakże jest mi wygodniej uczyć się z gotowych skryptów niż z dokumentacji i uczyć się w praktyce dlatego potrzebuje działającego kodu. Akurat te fragmenty do, których się czepiasz pisał człowiek z innego forum, który się tym zajmuje nie od dziś.
Zmieniłem już dawno fragment jednakże wkleiłem ze starą linijką ponieważ teraz są błędy typu:

Cytuj
 Error BCE0005: Unknown identifier: 'Char'. (BCE0005)
Cytuj
Error BCE0005: Unknown identifier: 'ToInt32'. (BCE0005)
 
Zaraz powiesz mi pewnie, żebym wracał się uczyć podstaw więc odpowiem z wyprzedzeniem. Czytałem w cholere poradników uczyłem sie tej składni, jedankże nie daje mi to prawie nic ponieważ nie umiem wykorzystać tego w praktyce, nie wiem jak i przy użyciu czego napisać to co chcę np. ten skrypt. 
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
No właściwie to split zwraca tablicę, czyli powinno być: 
var split : String[] = ...
Tak czy inaczej w takim razie twój spec pomylił () z [] i JScript z C# :D

Co do błędu - znaczy to że kompilator nie rozpoznaje czegoś takiego jak "Char" i "ToInt32". W przypadku Chara może chodzić o napisanie go z małej litery, trudno mi teraz z pamięci powiedzieć. Ja sam zwykle używałem innego przeładowania metody split:
var split : String[] = text.Split([" "], StringSplitOptions.None)Nie wiem dlaczego miałby widzieć ToInt32 skoro ta metoda nie jest zdefiniowana w tej klasie. Zapewne chodziło ci o Convert.ToInt32.

czop1

czop1

Użytkownicy
posty8
ProfesjaGrafik 3D
  • Użytkownicy
Szacunek dla ciebie, że chce ci się pomagać mi :P

Char jest z dużej więc powinno być ok od początku a nie jest ;/ z małej także lecą błędy, że char nie wspiera cięcia (slicing)
Jeżeli chodzi o Int32 to po dodaniu Concert jest to samo, nie widzi takiego czegoś jak Convert.ToInt32
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry