環(huán)境搭建(TODO)
unity hub下載安裝
https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.dmg
unity安裝
啟動(dòng)Unity hub, 然后選擇安裝
選擇一個(gè)版本
打開Unity項(xiàng)目
在unity hub里添加項(xiàng)目并打開
運(yùn)行unity項(xiàng)目
vscode調(diào)試環(huán)境
安裝插件
安裝Debugger for Unity插件
C#插件
vscode打開ubase目錄
調(diào)試
點(diǎn)擊調(diào)試按鈕粪糙,選擇unity debugger, 然后在相應(yīng)的代碼添加斷點(diǎn)即可調(diào)試
- 錯(cuò)誤
- vscode加載項(xiàng)目錯(cuò)誤
The reference assemblies for framework ".NETFramework,Version=v4.7.1" were not found
下載mono: https://www.mono-project.com/download/stable/
代碼結(jié)構(gòu)
插件
Assets/Plugins下是unity的插件目錄,主要負(fù)責(zé)橋接包裝android, iOS端的代碼(Native代碼)
- iOS目錄負(fù)責(zé)將iOS的mm文件代碼邏輯包裝在類c接口里,供外部c#使用
- unity和iOS的橋接文檔見 ?Unity和iOS之間的橋接?
- Android目錄相對(duì)簡(jiǎn)單些。由于c#可以通過AndroidJavaProxy迅栅,AndroidJavaObject等方式直接使用java邏輯楼肪,因而該P(yáng)lugin主要用于包含相應(yīng)的java模塊及Unity專用的java代碼
- Bridge是unity和Native的橋接模塊,它負(fù)責(zé)將android, iOS插件里的代碼邏輯包裝在c#代碼里筐咧,供其他c#代碼調(diào)用仔掸。由于c#使用java代碼和c代碼的方式不一樣脆贵,因而該插件下又分了android, iOS目錄
c#庫
非Plugins目錄,比如AdManagers, unity的通用邏輯起暮,可以看成是Unity的庫
Unity導(dǎo)出的項(xiàng)目結(jié)構(gòu)分析
iOS端
很多代碼打包為靜態(tài)庫保存在./Libraries/libiPhone-lib.a丹禀, 比如UnityInitApplicationGraphics
Android端
更簡(jiǎn)單些,將導(dǎo)出的Android從Application改為libarary即可被使用鞋怀,c#的代碼已經(jīng)被編譯在assets/bin下面了
導(dǎo)出測(cè)試(TODO)
需要將該項(xiàng)目的demo程序?qū)С鰹閍ndroid, iOS項(xiàng)目才能真正測(cè)試效果
底層機(jī)制(TODO)
通信機(jī)制摘要
iOS
oc調(diào)用c#:
Unity框架庫里的UnitySendMessage函數(shù)
c#調(diào)用oc
c#->c++->oc
Android
c#調(diào)用java
通過AndroidJavaObject訪問Java
java調(diào)用c#
UnityPlayer.UnitySendMessage函數(shù)