基於unity開發瞭解C#語言中的委託與事件(一)

這部分文章基於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。表明的是當前腳本所掛載到的遊戲物體自己的實例對象。

相關文章
相關標籤/搜索