這部分文章基於unity開發主要介紹的內容包含C#語言中的泛型類,泛型方法,委託,多播委託,事件,匿名方法,Lambda 表達式等知識點。編程
在正式開始以前,咱們先來簡單瞭解些前置知識。編程語言
1.什麼是.Net平臺?工具
①.Net 平臺是「微軟開發者全家桶」,是一個優化過的「開發解決方案」。優化
②.Net 平臺不僅僅包含C#,還包含ASP.Net,VB.Net,F#等語言,另外使用.Net 平臺能開發的方向涵蓋手機應用,桌面應用,Web 應用等方向。spa
③使用.Net 平臺開發出來的產品,都不是直接運行在電腦的CPU 和內存裏的,而是運行在.Net 虛擬機(.Net Framework)裏面的。協程
2.是C# 語言,C#語言是.Net 平臺下主推的一門編程語言。xml
①咱們使用C#寫的代碼,並非真正的代碼;對象
②C 語言編寫的的代碼,編譯後直接是二進制格式,雙擊就能夠運行;繼承
③全部.Net 平臺下的語言寫的代碼,編譯後不是二進制,而是「IL 中間語言」,雙擊運行,須要通過.Net 虛擬機環境進行二次解析才能運行;生命週期
④因此說.Net 平臺開發的程序相對於C,C++開發的程序,效率較低。
3.Mono 虛擬機
Mono 是第三方公司開發的一個開源項目,目的就是讓.Net 開發出來的產品能夠跨平臺運行,使用C#腳本開發的Unity 項目,之因此能在Android,IOS等其餘平臺正常運行,依賴的就是Mono 環境。
4.兩種C#腳本
在Unity 項目開發過程當中,咱們可使用「兩種C#腳本」;
其一:Mono 子類C#腳本,在Project 面板上直接右鍵建立出來的C#腳本,這種腳本默認直接繼承MonoBehaviour 類。
①這種腳本其實就是Unity 中的自定義組件,能夠直接掛載到Unity 場景中任何遊戲物體上;
②不須要咱們使用new 關鍵字進行實例化,只有掛載到了遊戲物體上,運行起來後,unity 引擎會自動完成該腳本的對象實例化;
③腳本中含有生命週期方法(Awake,Start,Update......);
其二:非Mono 子類C#腳本,取消對MonoBehaviour 類的繼承。
①這種就是普通的C#腳本,不是Unity 中的組件,也就沒法掛載到遊戲物體上;
②必須使用new 關鍵字進行類的對象的實例化;
③沒有繼承Mono,也就沒有生命週期方法;
④全部在Mono 類中定義的方法,都沒法使用,好比:Invoke 和協程。
那麼什麼時候使用非Mono 子類C#腳本呢?
①當該腳本不須要掛載到遊戲物體上的時候;
②開發過程當中的數據實體類;
③工具類,例如專門負責xml 的讀寫;
作個簡單的表格歸類,以下圖所示:
5.Mono 子類繼承關係
Object[對象] --> Component[組件] --> Behaviour[行爲類] -->MonoBehaviour[Mono 行爲類] --> MyScript[咱們寫的類]
6.GameObject 與gameObject
①GameObject
這是一個類,這個類中有不少靜態方法,咱們直接使用類名.方法名()進行使用。是類就會有對象,Unity 中全部的遊戲物體都會實例化出一個該類的對象。咱們使用gameObject 來訪問。
②gameObject
是Component 腳本中定義的一個「自讀屬性」,返回值類型是GameObject。表明的是當前腳本所掛載到的遊戲物體自己的實例對象。