2013-02-28 29 views
5

Tôi chỉ có một câu hỏi cơ bản. Tôi đang cố gắng tìm hiểu làm thế nào để sử dụng chức năng với unityscript và tôi biết rằng khi bạn tạo một hàm sử dụng một cái gì đó giống nhưChức năng cơ bản trong unityscript

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

và sau đó gọi nó bằng cách sử dụng

Example(); 

bạn thực sự có thể chèn một chuỗi hoặc một số vào các dấu ngoặc đơn trên đoạn mã sau trong dấu ngoặc đơn và nó sẽ đi qua và chèn chính nó vào hàm bạn đã tạo trước đây. Trong trường hợp này, nó kết thúc in bất cứ điều gì tôi gõ vào dấu ngoặc đơn.

Bây giờ, câu hỏi của tôi là nếu nó hoạt động, thì tại sao không có chức năng nơi tôi vượt qua hai số và yêu cầu họ thêm công việc? Mã Tôi đang cố gắng sử dụng trông giống như:

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

Khi tôi cố gắng thực hiện điều này, Unity nói với tôi

Operator '+' không thể được sử dụng với một bên tay trái của loại 'Object 'và một mặt bên phải của loại' Object '.

Tôi đã xem this video về chức năng Javascript và trong video vào khoảng 9 phút, anh ấy nhập chính xác và nhận kịch bản để thêm nó cho anh ấy. Tôi khá mới để viết kịch bản và tôi không có nhiều ý tưởng về những gì tôi có thể làm sai. Xin được cảm ơn trước về sự giúp đỡ.

+4

Chào mừng bạn đến với SO! Tốt công việc định dạng bài viết đầu tiên của bạn. – davidethell

Trả lời

5

Trên thực tế, trong Unity mã của bạn sẽ phải trông giống như:

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

Bạn sẽ phải gọi loại đối số bạn mong đợi trong các tham số của hàm. Bạn hoàn toàn đúng bằng cách nói rằng trong JavaScript điều này bình thường là không cần thiết. Trong Unity, nó là mặc dù.

Điều này là bởi vì nó thực sự được gọi là UnityScript. UnityScript là tên được sử dụng bởi những người muốn chỉ ra rằng Javascript của Unity rất khác với phiên bản Javascript truyền thống được sử dụng trong trình duyệt.

Tôi đã tìm thấy danh sách các sự khác biệt tốt đẹp cho bạn giữa UnityScriptJavascripthere. Khi tôi tạo ra một bulletlist nhanh chóng ra khỏi trang web đó, tôi có thể cho bạn biết sự khác biệt là (có lẽ thậm chí không phải tất cả):

  • JavaScript là đẳng cấp miễn phí
  • JavaScript hỗ trợ nhiều khai báo biến trong một tuyên bố var.
  • Trong JavaScript, nhiệm vụ được coi là biểu thức.
  • Mọi biến cấp cao nhất trong JavaScript là toàn cầu. Ngoài ra, bất kỳ tuyên bố biến nào không phải trước câu lệnh var là toàn cầu.
  • Trong Javascript, nhập động là hiệu quả.
  • Trong JavaScript, quyền riêng tư là khá độc đáo.
  • Ký hiệu đô la ($) không được phép trong số nhận dạng UnityScript khi chúng nằm trong số nhận dạng JS.
  • Không có tuyên bố with trong UnityScript.
  • Hỗ trợ Javascript Regular Expression Literals (RegExp hoặc regex).
  • Trong JavaScript, this có thể tham khảo một trong hai điều, tùy thuộc vào bối cảnh:
    • Đối tượng toàn cầu (tốt nhất là không giải thích ở đây)
    • Đối tượng mà các phương pháp hiện tại hoặc xây dựng thuộc

Tôi đã gắn thẻ lại câu hỏi của bạn để phân loại câu hỏi đó trong UnityScript. StackOverflow có này để nói về nó:

Javascript Unity của cố gắng làm theo các tiêu chuẩn ECMAScript chặt chẽ, nó thay đổi theo nhiều cách khác nhau từ hiện thực khác của JavaScript là dựa trên cùng một tiêu chuẩn. Nó có lẽ là hầu hết tương tự như của Microsoft JScript, đặc biệt là trong cả hai đều là ngôn ngữ .NET. Tuy nhiên, phiên bản của Unity được phát triển độc lập và có một số sự khác biệt giữa hai số.

Tôi cũng phải tìm ra cách khó khăn. Tôi đã làm rối loạn hai ngôn ngữ và got to this problem.

0

JavaScript thống nhất vì một lý do nào đó không làm cho những loại 4 đó là nguyên thủy Number loại, vì vậy nó không thể thực hiện bổ sung.

Bạn có thể thử chuyển đổi chúng thành nguyên thủy bằng cách gọi phương thức valueOf() của chúng.

+0

Tôi sẽ đặt valueOf() ở đâu? Tôi đã thử một vài điểm khác nhau nhưng tôi không thể tự mình tìm ra nó. – Toushinu

+0

@UselessCode Nó sẽ cần phải là '4..valueOf()'. – alex

+0

'..'? Unity có sử dụng '..' để truy cập các thành viên không? –

Các vấn đề liên quan