2013-02-28 15 views
5

Sadece basit bir sorum var. Ben unityscript ile fonksiyonlarını kullanmayı öğrenmek çalışıyorum ve ben o zamanUnityscript'in Temel İşlevleri

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

ve böyle bir şey kullanarak bir işlev oluştururken

Example(); 

aslında bir dizesi ekleyebilirsiniz kullanarak çağırmak öğrendik veya parantez içindeki ikinci kod parçasındaki parantez içine bir sayı ve geçecek ve kendini daha önce oluşturduğunuz işleve sokacaktır. Bu durumda, parantez içine yazdığım her şeyi yazdırır.

Şimdi, sorum şu, eğer işe yarıyorsa, o zaman neden iki sayıdan geçtiğimi ve neden iş eklemelerini istediğimi anlamıyorum?

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

Bunu yürütmek çalışıyorum, Birlik bana

Operatör '+' türünde bir sol tarafı ile kullanılamaz 'Nesne söyler: gibi kullanmaya çalışıyorum kod görünüyor 've' Nesne 'tipinin sağ tarafı.

Ben yaklaşık 9 dakika JavaScript fonksiyonları üzerine ve videoda this video izliyordum, adam tam olarak içinde türleri ve onun için eklemek için komut dosyasını alır. Komut dosyası yazmak için oldukça yeni ve yanlış yapabileceklerim hakkında pek bir fikrim yok. Yardım için şimdiden teşekkür ederiz.

+4

SO'ya hoş geldiniz! İlk yazınızı biçimlendirmek için iyi bir iş. – davidethell

cevap

5

Aslında Birlik içinde kod gibi bakmak gerekir:

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

Sen işlevin parametreleri bekliyoruz argüman ne tür demelisiniz. JavaScript'in normalde gerekli olmadığını belirterek tamamen haklısınız. Birlik olsa da öyle. Bu, aslında UnityScript olarak adlandırıldığından kaynaklanmaktadır. UnityScript, Unity'nin Javascript'inin tarayıcılarda kullanılan geleneksel Javascript sürümünden çok farklı olduğunu belirtmek isteyenler tarafından kullanılan addır.

Sizin için UnityScript ve Javascripthere arasındaki farklılıkların güzel bir listesini buldum. Ben bu web sayfası üzerinden hızlı bir BulletList oluşturduğunuzda, sana söyleyebilirim farklar (belki de hatta tümü) şunlardır:

  • JavaScript sınıf içermeyen
  • JavaScript biri var ifadesiyle birden değişken bildirimlerini destekler olduğunu.
  • JavaScript'te, ödev bir ifade olarak değerlendirilir.
  • JavaScript'teki her üst düzey değişken geneldir. Ayrıca, var bildiriminin önündeki hiçbir değişken bildirim geneldir.
  • Javascript'te dinamik yazım etkilidir.
  • JavaScript'te, gizlilik oldukça sıra dışı.
  • UnityScript tanımlayıcılarında, JS tanımlayıcılarında oldukları gibi dolar işaretleri ($) verilmez.
  • UnityScript'te with bildirimi yok.
  • JavaScript Regular Expression Literals (RegExp veya regex) destekler. (En iyi burada yer verilmemesine)
  • nesne olduğu cari yöntem veya kurucu
aittir
  • küresel nesne: JavaScript'inizde
  • , this bağlama göre, iki şeyden birine başvurabilirsiniz

Sorunuzu UnityScript'te de kategorilere ayırmak için yeniden etiketledim. o aynı standardına dayalı olan JavaScript diğer uygulamalardan birçok yönden değişir

Unity JavaScript yakından ECMAScript standardını takip etmeye çalışır: StackOverflow bu konuda şöyle demektedir. Microsoft'un JScript'ine en çok benzeyen bu özellikle, her ikisi de .NET dillerindedir. Bununla birlikte, Unity'nin sürümü bağımsız olarak geliştirildi ve ikisi arasında farklılıklar var.

Ben de zor yolu bulmak zorunda kaldı. İki dili ve got to this problem'u karıştırdım.

0

Herhangi bir nedenle Unity JavaScript, bu 4 ilkel Number türünü yapmıyor, bu yüzden ekleme yapamaz.

valueOf() yöntemini çağırarak bunları ilkel haline dönüştürmeyi deneyebilirsiniz.

+0

valueOf() öğesini nereye yerleştiririm? Birkaç farklı nokta denedim ama kendim çözemedim. – Toushinu

+0

@UselessCode '4..valueOf() 'olması gerekir. – alex

+0

'..'? Birlik üyelere erişmek için '..' kullanıyor mu? –