2013-02-28 16 views
5

Po prostu mam podstawowe pytanie. Próbuję dowiedzieć się, jak korzystać z funkcji z unityscript i dowiedziałem się, że podczas tworzenia funkcji przy użyciu coś jakPodstawowe funkcje w unityscript

function Example(text) 
{ 
    print(text); 
} 

a następnie wywołać ją przy użyciu

Example(); 

rzeczywiście można wstawić ciąg lub liczbę w nawiasach na drugim fragmencie kodu w nawiasach, a następnie przejdzie przez nią i wstawi się do funkcji utworzonej wcześniej. W takim przypadku kończy się drukowanie tego, co wpisuję w nawiasach.

Moje pytanie brzmi: jeśli to działa, to dlaczego nie działają funkcje, w których przechodzę w dwóch liczbach i proszę o dodawanie ich do pracy? Kod Próbuję użyć wygląda następująco:

Addition(4, 4); 
function Addition(a, b) 
{ 
    print(a+b); 
} 

Kiedy próbuję wykonać to, Unity mówi mi

operator „+” nie może być używany z lewego skrzydła typu „Przedmiot "i po prawej stronie typu" Obiekt ".

oglądałem this video na funkcje Javascript oraz w filmie na około 9 minut, rodzaje facet w dokładnie to, i dostaje scenariusz, aby dodać go do niego. Jestem raczej nowy w pisaniu skryptów i nie mam wielkiego pojęcia, co mogę zrobić źle. Z góry dziękuję za pomoc.

+4

Witamy w SO! Dobra praca przy formatowaniu pierwszego postu. – davidethell

Odpowiedz

5

Faktycznie, w Jedności kod musiałby wyglądać tak:

Addition(4, 4); 
function Addition(a:int, b:int) 
{ 
    print(a+b); 
} 

Trzeba by zadzwonić, jaki typ argumentu można oczekiwać w parametrach funkcji. Masz całkowitą rację stwierdzając, że w JavaScript to zwykle nie jest potrzebne. W Jedności to jednak.

Dzieje się tak dlatego, że jest on rzeczywiście nazywany UnityScript. UnityScript to nazwa używana przez ludzi, którzy chcą podkreślić, że JavaScript Unity jest bardzo różny od tradycyjnej wersji Javascriptu używanej w przeglądarkach.

Znalazłem ładną listę różnic między użytkownikiem UnityScript i Javascripthere. Kiedy tworzę szybki bulletlist z tamtej strony, mogę powiedzieć, że różnice są (być może nawet wszystkie):

  • JavaScript jest klasa wolne
  • JavaScript obsługuje wiele deklaracje zmiennych w jednej instrukcji var.
  • W JavaScript przypisanie jest traktowane jako wyrażenie.
  • Każda zmienna najwyższego poziomu w JavaScript jest globalna. Ponadto każda deklaracja zmiennej, która nie jest poprzedzona instrukcją var, jest globalna.
  • W JavaScript dynamiczne pisanie jest wydajne.
  • W JavaScript prywatność jest raczej niekonwencjonalna.
  • Znaki dolara ($) nie są dozwolone w identyfikatorach UnityScript, ponieważ są w identyfikatorach JS.
  • W UnityScript nie występuje instrukcja with.
  • Javascript obsługuje Regular Expression Literals (RegExp lub regex).
  • W JavaScript this może odnosić się do jednej z dwóch rzeczy, w zależności od kontekstu:
    • globalnego obiektu (najlepiej nie wyjaśnione tutaj)
    • obiektu, do którego obecna metoda lub konstruktor należący

Mam retagged twoje pytanie, aby sklasyfikować go również w UnityScript. StackOverflow ma do powiedzenia na ten temat:

Unity JavaScript próbuje podążać standardu ECMAScript ściśle, to różni się pod wieloma względami od innych implementacjach JavaScriptu, które oparte na tym samym poziomie. Jest prawdopodobnie najbardziej podobny do JScript Microsoftu, szczególnie w tym, że oba są językami .NET. Jednak wersja Unity's została opracowana niezależnie i istnieje pewna liczba różnic między nimi.

Ja też musiałem znaleźć się na własnej skórze. Pomieszałem dwa języki i got to this problem.

0

Unity JavaScript z jakiegoś powodu nie czyni tych typów 4 prymitywnymi Number, więc nie może wykonać dodania.

Możesz spróbować przekonwertować je na wersję podstawową, wywołując ich metodę valueOf().

+0

Gdzie powinienem umieścić valueOf()? Próbowałem kilku różnych miejsc, ale nie byłem w stanie sam tego rozgryźć. – Toushinu

+0

@UselessCode Musiałby to być '4..valueOf()'. – alex

+0

'..'? Czy jedność używa '..' aby uzyskać dostęp do członków? –