C # và UnityScript khác nhau như thế nào trong phát triển Unity? [đóng cửa]


13

Khác với sự khác biệt về ngôn ngữ rõ ràng, UnityScript và C # khác nhau như thế nào khi phát triển các trò chơi trong Unity3D?

  • Có một sự khác biệt hiệu suất đáng chú ý?
  • Mã UnityScript có được đóng gói nguyên trạng không? Nếu có, điều này có giúp ích cho khả năng sửa đổi của trò chơi không?
  • Có thể sử dụng các thư viện được phát triển cho một ngôn ngữ trong khi phát triển ngôn ngữ khác không?
  • Hai ngôn ngữ có thể được trộn lẫn trong cùng một dự án Unity; mã hóa một số phần trong C # và các phần khác trong UnityScript?

Không có thành phần viết khôn ngoan. Nhưng C # cho phép thêm các thứ như nhập khẩu DLL. Ngoài ra, đó là một "sự lựa chọn". Và hoàn toàn chủ quan. Đừng quên, cũng có Boo để bạn có thể viết mã của mình.
Sidar

2
Câu hỏi hữu ích với câu trả lời khách quan - có vẻ không công bằng khi nó bị đóng cửa.
UpTheCux

1
Có hai lý do chính khiến câu hỏi này bị đóng và họ không phải làm gì với tiện ích của câu hỏi hoặc tính khách quan của câu trả lời. Đầu tiên, bài đăng hỏi nhiều hơn một câu hỏi không liên quan. Thứ hai, một số câu hỏi được đưa ra quá thảo luận theo định hướng và / hoặc hai câu hỏi rộng để phù hợp như được viết. Làm thế nào "hữu ích" hoặc phổ biến một câu hỏi, hoặc câu trả lời tốt như thế nào, đều độc lập với câu hỏi có phù hợp với trang web hay không.

Câu trả lời:


12

Có một sự khác biệt hiệu suất đáng chú ý?

Không. Về mặt kỹ thuật có một sự khác biệt hiệu suất rất nhỏ , nhưng nó không đủ quan trọng để dựa vào sự lựa chọn ngôn ngữ của bạn trong hầu hết các trường hợp.

Có thể sử dụng các thư viện được phát triển cho một ngôn ngữ trong khi phát triển ngôn ngữ khác không?

Đúng. Miễn là bạn đảm bảo giữ cấu trúc thư mục được đề xuất bởi nhà phát triển thư viện, thư viện đó có thể được truy cập từ bất kỳ ngôn ngữ nào. Điều này phải làm với thứ tự biên dịch Unity . Một số tính năng trong IDE, như tự động hoàn tất, có thể không hoạt động đối với thư viện đã chọn. (EDIT: điều này có thể được khắc phục bằng cách sử dụng plugin UnityVS miễn phí cho Visual Studio.)

Có thể trộn hai ngôn ngữ trong cùng một dự án Unity bằng cách mã hóa một số phần trong C # và các ngôn ngữ khác trong Javascript không?

Một lần nữa, vâng. Nó trở nên phức tạp một cách nhanh chóng, vì bạn phải đảm bảo mọi thứ được biên soạn theo đúng thứ tự. Mặc dù về mặt kỹ thuật là có thể, tôi khuyên bạn nên chọn một ngôn ngữ và gắn bó với nó.

Ngôn ngữ nào có tài nguyên cụ thể dành cho trò chơi tốt hơn có sẵn (sách, trang web, diễn đàn)?

Khó nói. Từ việc duyệt các diễn đàn, tôi muốn nói Javascript có nhiều hướng dẫn và ví dụ về mã hơn một chút. Mã nói chung là khá dễ dàng để chuyển sang ngôn ngữ khác, và vì các thư viện là ngôn ngữ chéo có thể sử dụng được, điều này rất có thể sẽ không phải là một vấn đề lớn.


8

Câu hỏi đầu tiên mà tất cả các nhà phát triển Unity bắt đầu có là C # hoặc JS. Luôn luôn đi với C #.

Bây giờ, ngay bây giờ bạn có thể nghĩ, "Nhưng tôi không muốn học C # và tôi đã biết một chút về JavaScript."

Nhưng điều sai lầm bạn cần xem xét là Unity JavaScript không phải là JavaScript. Nó là một veneer bề ngoài của cú pháp ECMA trên .NET CLR. Nó không thực hiện bất kỳ điều hay ho nào mà JavaScript thích như các bao vây ẩn danh và các tham chiếu hàm theo cách bạn sẽ sử dụng chúng bình thường. Nó có các mảng riêng không khớp với các mảng .net thông thường và bạn sẽ gặp nhiều cạm bẫy và giới hạn mà bạn có thể tránh được bằng cách sử dụng C #. Unity JavaScript chỉ là một lớp cú pháp được phủ kẹo được thiết kế để làm cho .NET xuất hiện ít đáng sợ hơn, không có gì hơn. Nó sẽ làm hại bạn nhiều hơn lợi.


7

Trước hết, tôi muốn giới thiệu C # qua JavaScript để lập trình trong Unity vì hai lý do chính. Lý do đầu tiên dẫn đến sự khác biệt về gõ mạnh / yếu mà bạn loại bỏ. Tôi nghĩ rằng gõ mạnh hoạt động tốt hơn gõ yếu ở cấp độ khái niệm, nhưng thật lòng đó là một cuộc tranh luận lớn mà mọi người có và vì vậy tôi sẽ tập trung nhiều hơn vào một vấn đề thực tế cụ thể: Triển khai iOS (và có thể cả các nền tảng khác nữa, nhưng đó là chỉ có một tôi biết chắc chắn) yêu cầu gõ tĩnh. Unity thực sự thậm chí còn có một lệnh "#pragma nghiêm ngặt" có thể buộc nhập tĩnh trong JavaScript vì lý do này, nhưng điều đó chỉ đưa tôi đến lý do thứ hai ...

Thứ hai, JavaScript trong Unity không hoàn toàn giống với JavaScript trong trình duyệt. Điều này tạo ra vấn đề khi bạn cố gắng áp dụng kiến ​​thức từ bên ngoài Unity (tức là phần lớn tài nguyên về JavaScript) vào lập trình trong Unity. Đây là lý do tại sao nhiều nhà phát triển Unity gọi ngôn ngữ là UnityScript.


Bây giờ để giải quyết các câu hỏi cụ thể của bạn:

Có một sự khác biệt hiệu suất đáng chú ý?

Không thực sự, không ( một số chi tiết )

Là mã javascript được đóng gói nguyên trạng? Và nếu có, điều này có giúp ích cho tính sửa đổi của trò chơi không?

Phụ thuộc vào nền tảng và không có điều này thực sự không giúp sửa đổi

Có thể sử dụng các thư viện được phát triển cho một ngôn ngữ trong khi phát triển ngôn ngữ khác không?

Tôi nghĩ vậy (mặc dù tôi không bao giờ cần phải làm điều này, vì tất cả các thư viện tôi sử dụng đã được lập trình trong C #)

Có thể trộn hai ngôn ngữ trong cùng một dự án Unity bằng cách mã hóa một số phần trong C # và các ngôn ngữ khác trong Javascript không?

Có (mặc dù tôi cố gắng tránh nó, vì lý do nhất quán)


dentspixel.com/developer-diary/ đá có thể muốn thêm câu này vào câu trả lời của bạn. Nâng cao.
Xám

linke thú vị, được thêm vào
jhocking
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.