日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3D脚本编程读书笔记——第2章 Mono脚本核心基础

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D脚本编程读书笔记——第2章 Mono脚本核心基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應用的引擎由富有經驗的開發人員使用C/C++開發,而一些具體項目中功能的實現則使用高級語言開發。

文章目錄

  • 前言
    • 1. Mono是什么
    • 2. Mono和腳本
    • 3. 跨平臺和CIL
    • 4. C#和UnityScript
  • 總結


前言

本篇是針對《Unity3D腳本編程——使用C#語言開發跨平臺游戲》一書 第2章節《Mono所搭建的腳本核心基礎》 的讀書筆記,記錄了其中一些基礎知識、核心要點以及一些有趣的信息。
本章節的核心內容在于剖析Unity3D的腳本基礎所依賴的.NET環境,即Mono運行時,介紹其是為什么,以及在Unity3D腳本編程中扮演什么樣的角色。本章節并沒有涉及到編寫腳本程序的內容,更多的,是介紹腳本引擎的特性。


1. Mono是什么

Mono是Xararin公司所贊助的開源項目,是微軟.NET框架的另一種實現(是.NET框架在不同平臺上的補充),同時它具備了跨平臺的能力。

  • Mono 1.0(2004) Linux桌面應用程序開發者平臺

Mono的組件:

  • C#編譯器 mcs
  • Mono運行時 提供一個即時編譯器(Just-in-time,JIT),一個提前編譯器(Ahead-of-time,AOT),還有類庫加載器、垃圾回收器(運行時會追蹤目標對象,并且自行決定是否回收對象的內存)和線程系統等
  • 基礎類庫 同時兼容微軟的.NET框架
  • Mono類庫

其中,C#編譯器mcs將C#編譯為CIL的字節碼(byte code),然后Mono運行時中的編譯器將CIL的字節碼轉譯為原生碼(native code),共有3種轉譯方式:

  • 即時編譯(JIT) 在程序運行過程中將CIL的字節碼轉譯為目標平臺的原生碼
  • 提前編譯(AOT) 在程序運行之前將執行程序或動態鏈接庫的CIL字節碼轉譯為目標平臺的原生碼并存儲起來(仍會有需要用JIT轉譯的部分)
  • 完全靜態編譯(Full-ahead-of-time,Full-AOT) 在程序運行之前所有的代碼就已經編譯成目標平臺的原生碼(如針對iOS平臺)

2. Mono和腳本

語言從低級到高級的大概排名:

  • 匯編
  • C/C++ 編譯型靜態不安全語言
  • C#,Java 編譯型靜態安全語言
  • Python、Perl、JavaScript 解釋型動態安全語言

Mono運行時嵌入到應用后,得到一個完整的虛擬機運行環境。

托管代碼 通過CIL編譯器生成的CIL代碼

總結來說,Mono運行時去支撐腳本架構的基礎主要體現在兩點上:在C#中調用C++中的方法,以及在C++中調用C#中實現的方法。如此,腳本層面可以調用引擎底層提供的方法,而引擎可以通過句柄的方式解讀腳本代碼。

3. 跨平臺和CIL

跨平臺的核心原理——中間層過渡轉換,對應到Unity3D,就是CIL代碼指令集。

CIL的特性 可以運行在所有支持CLI(Common Language Infrastructure,通用語言基礎結構)的環境中,從而實現了平臺無關(或CPU無關)

源代碼——中間語言——虛擬機——原生代碼

4. C#和UnityScript

腳本語言的選擇,本質上是對腳本編譯器(可以把相應腳本編譯為CIL)的選擇。

C#和UnityScript是存在效率差異的,其根源主要在于二者經過編譯器生成的CIL中間語言并不是完全一致的,主要是一些語言細節上的處理的差異,進而會導致一些影響效率的操作(如裝箱拆箱等)。


總結

本章著力于闡述Mono運行時以及其在串聯低級語言和高級語言時的作用,涉及到的內容艱深晦澀,但好在其中的過程相對比較清晰,需要始終抓住一個核心原理:CIL的多平臺支持性。CIL就好像一個轉接頭,我們需要想辦法把代碼流進去,而它自然會為你轉接到各種各樣的設備。

總結

以上是生活随笔為你收集整理的Unity3D脚本编程读书笔记——第2章 Mono脚本核心基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。