28-07-2016 6:54:12 SA -07:00 • Được phân loại dưới unity, c#
!
|
|
Một cách khác cũng khả thi là tự đóng gói gmcs.exe
tải game win 88 và mono.exe
vào dự án Unity, đồng thời chỉnh sửa tệp gmcs.bat
và gmcs.sh
để chúng tự gọi mà không cần hệ thống hỗ trợ. Mình đã thử nghiệm thành công trên ba nền tảng Windows, macOS và Linux, tuy nhiên vẫn chưa thể thực hiện lệnh shell với gmcs
trên Android — điều này còn là hạn chế đáng tiếc.
Quay trở lại chủ đề chính, ngoài CodeDom ra thì trước đó mình cũng từng giới thiệu rằng có thể dùng Mono.CSharp.Evaluator
để thực thi các lệnh. Sau đó phát hiện thêm công cụ Mono REPL
, cảm thấy rất thú vị, nên đã quyết định thử làm một ứng dụng nhỏ trên Unity nhằm tái hiện trải nghiệm của Mono REPL
trên điện thoại di động.
Công cụ Mono REPL
dựa trên Mono.CSharp.Evaluator
, có thể xác định được câu lệnh nào là biểu thức tính giá trị (evaluate), và từ đó chọn giữa Evaluate()
hoặc Run()
. Trong bản thực hiện của mình hiện tại, chưa tích hợp đầy đủ chức năng đó, chỉ đơn giản sử dụng giao diện UI theo phong cách Material Design kết hợp cùng Mono.CSharp.Evaluator.Evaluate
để thực thi lệnh. Do vậy, nếu bạn viết đoạn code như sau:
|
|
Thì sẽ bị báo lỗi, nhưng nếu viết:
|
|
Lại không có vấn đề gì. Vì ở dòng cuối cùng có biểu thức trả về giá trị x
, phù hợp với yêu cầu phải trả về kết quả của Evaluate()
.
Hiện tại, hai tính năng hoàn tất tự động (code completion) và hiển thị lỗi vẫn chưa được triển khai, tuy nhiên mình đang rất háo hức để tiếp tục nghiên cứu sâu hơn nữa.
Ứng dụng mang tên Cyan, có thể tải về từ Google Play qua đường link sau: Cyan trên Google Play
Ứng dụng hiện chưa có phiên bản dành cho iOS vì lý do kỹ thuật: thư viện Mono.CSharp
không thể hoạt động trong môi trường AOT (Ahead-of-Time Compilation), và khi chuyển sang IL2CPP thì việc gọi động sẽ không khả thi. Vậy nên, chúc mọi người vui vẻ! 😊