Unity sử dụng C # làm ngôn ngữ kịch bản như thế nào?


8

Theo hiểu biết của tôi, cho đến nay, tôi đã nghĩ rằng C # là và luôn luôn là một ngôn ngữ được biên dịch. Gần đây tôi đã bắt đầu nghiên cứu Unity3d và nhận thấy rằng họ cung cấp C # như một tùy chọn để viết kịch bản và tương tác với các đối tượng trò chơi thông qua API của họ (cùng với JavaScript và một vài lựa chọn thay thế khác).

Làm thế nào được thực hiện? Là C # thực sự đang được thực thi hay đây là một sự trừu tượng đang được chuyển đổi sang một ngôn ngữ kịch bản khác dưới vỏ bọc? Dường như với tôi rằng có một số loại giải thích đang diễn ra cho chức năng này.


2
Ngôn ngữ kịch bản là gì?
jcora

vi.wikipedia.org/wiki/Carget:Scripting_l Ngôn ngữ được diễn giải trong thời gian chạy thay vì thời gian biên dịch.
Brandon Clapp

2
Nhưng JavaScript được biên dịch trước khi được thực thi 99% và một số triển khai Python cũng vậy. C (++) có thể được giải thích. Tôi nghĩ rằng thuật ngữ này là thiếu sót, vì bạn không nói về một đặc tính của ngôn ngữ, mà là cách bạn sử dụng nó. Nhưng có vẻ như điều đó không thực sự quan trọng đối với câu hỏi ...
jcora

"Biên dịch" hoặc "kịch bản" không phải là tài sản của ngôn ngữ lập trình. Khi bạn đang thực hiện đặc tả ngôn ngữ, bạn có thể quyết định xem bạn muốn "biên dịch" nó hay "diễn giải" nó.
Ivan Kuckir

1
Điều đó đang được nói, những gì tôi luôn hiểu là "ngôn ngữ kịch bản" là cơ sở của định nghĩa này. Có lẽ vocab đáng lẽ phải được "diễn giải" nhưng tôi luôn thấy chúng giống nhau. webopedia.com/TERM/S/scripting_lingu.html
Brandon Clapp

Câu trả lời:


15

Đoàn kết đang sử dụng Mono đằng sau hậu trường. Mỗi khi bạn thay đổi tập lệnh C # / UnityScript, nó sẽ biên dịch lại mã gần như ngay lập tức.

Nếu bạn nhìn vào thư mục dữ liệu của một trình phát thống nhất độc lập, bạn có thể thấy nó đã biên dịch tất cả các tập lệnh thành Hội-CSharp.dll hoặc tương tự.

Vì vậy, có, C # đang được biên dịch.


Bây giờ tôi thấy các dll trong thư mục dữ liệu. Điều này xóa mọi thứ lên.
Brandon Clapp

5
+1 để thực sự trả lời câu hỏi và không biến nó thành một trận đấu vật tay ngữ nghĩa hào hoa
HumanCatfood 20/03/13

1
@BrandonClapp nếu câu trả lời này giải quyết được câu hỏi của bạn, vui lòng đánh dấu nó là chính xác.
petervaz

1
Xin lỗi vì đã phục hồi điều này, nhưng Unity xử lý việc tải và dỡ tệp DLL đã biên dịch trong trình chỉnh sửa như thế nào? Hay tôi nên bắt đầu một câu hỏi mới?
Jeff

-4

Đầu tiên, ngôn ngữ kịch bản không nhất thiết phải là ngôn ngữ. Một số ngôn ngữ script như Lua và Python có thể được biên dịch JIT hoặc diễn giải.

Và, như đối với chính câu hỏi: bởi vì C # là ngôn ngữ kịch bản, nhưng Microsoft làm rất tốt trong việc khiến nó không giống như vậy.

C # có mọi thứ mà ngôn ngữ kịch bản cần: gõ động, biên dịch JIT thay vì biên dịch tĩnh, chạy trong máy ảo ...

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.