2013-02-28 11 views
5

Ho solo una domanda di base. Sto cercando di imparare come utilizzare le funzioni con unityscript e ho imparato che quando si crea una funzione con qualcosa di simileFunzioni di base in unityscript

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

e poi lo chiamano usando

Example(); 

si può effettivamente inserire una stringa o un numero tra parentesi sull'ultimo pezzo di codice tra parentesi e passerà e si inserirà nella funzione creata in precedenza. In questo caso, finisce per stampare qualunque cosa digiti tra parentesi.

Ora, la mia domanda è se funziona, quindi perché non funziona dove passo in due numeri e chiedo di averli aggiunti lavoro? Il codice che sto cercando di utilizzare assomiglia:

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

Quando provo ad eseguire questo, Unità mi dice

operatore '+' non può essere utilizzato con un lato sinistro di tipo 'Object 'e un lato destro del tipo' Oggetto '.

stavo guardando this video sulle funzioni Javascript e nel video a circa 9 minuti, i tipi di ragazzo in esattamente questo, e ottiene lo script per aggiungere per lui. Sono piuttosto nuovo nello scripting e non ho idea di cosa potrei fare male. Grazie in anticipo per l'aiuto.

+4

Benvenuti in SO! Buon lavoro formattando il tuo primo post. – davidethell

risposta

5

In realtà, in Unity il codice dovrebbe essere simile:

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

Dovresti chiamare che tipo di argomento che ci si aspetta nei parametri della funzione. Hai perfettamente ragione affermando che in JavaScript questo normalmente non è necessario. In Unity, è però.

Questo perché è effettivamente chiamato UnityScript. UnityScript è il nome usato da persone che vogliono sottolineare che il Javascript di Unity è molto diverso dalla versione tradizionale di Javascript usata nei browser.

Ho trovato una bella lista di differenze per voi tra UnityScript e Javascripthere. Quando creo un rapido Elenco puntata di quella pagina web, posso dirvi le differenze sono (forse neanche tutti):

  • JavaScript è privo di classe
  • JavaScript supporta più dichiarazioni di variabili in un'istruzione var.
  • In JavaScript, l'assegnazione viene considerata come un'espressione.
  • Ogni variabile di livello superiore in JavaScript è globale. Inoltre, qualsiasi dichiarazione di variabile non preceduta dall'istruzione var è globale.
  • In Javascript, la digitazione dinamica è efficiente.
  • In JavaScript, la privacy è alquanto anticonvenzionale.
  • I segni di dollaro ($) non sono consentiti negli identificatori UnityScript così come sono negli identificatori JS.
  • Non esiste alcuna istruzione with in UnityScript.
  • supporta Javascript Regular Expression Literals (RegExp o regex).
  • In JavaScript, this può fare riferimento ad una di due cose, a seconda del contesto:
    • L'oggetto globale (meglio non illustrato qui)
    • L'oggetto a cui il metodo o il costruttore corrente appartiene

Ho ricollocato la tua domanda per categorizzarla anche in UnityScript. StackOverflow ha questo da dire a questo proposito:

di Unity JavaScript cerca di seguire da vicino lo standard ECMAScript, si varia in molti modi da altre implementazioni di JavaScript che sono basati sullo stesso standard. È forse più simile al JScript di Microsoft , specialmente in quanto entrambi sono linguaggi .NET. Tuttavia, la versione di Unity è stata sviluppata indipendentemente e ci sono un certo numero di differenze tra i due.

Anch'io ho dovuto scoprire la via difficile. Ho incasinato le due lingue e got to this problem.

0

Unity JavaScript per qualche motivo non sta rendendo quelli 4 come tipi primitivi Number, quindi non può eseguire l'aggiunta.

Si potrebbe provare a convertirli in primitivo chiamando il loro metodo valueOf().

+0

Dove posiziono valueOf()? Ho provato diversi punti ma non sono riuscito a capirlo da solo. – Toushinu

+0

@UselessCode Dovrebbe essere "4..valueOf()'. – alex

+0

'..'? L'unità usa '..' per accedere ai membri? –

Problemi correlati