iOS與Unity交互筆記之參數(shù)傳遞
1. 調(diào)用方法一
Unity調(diào)方法傳參,有返回值
// Unity代碼
[DllImport("__Internal")]
// 給iOS傳string參數(shù),有返回值,返回值通過iOS的return方法返回給Unity
private static extern string getIPv6(string mHost, string mPort)
// iOS代碼
extern "C" const char * getIPv6(const char *mHost, const char *mPort)
{
// strdup(const char *__s1) 復(fù)制mHost字符串,通過Malloc()進(jìn)行空間分配
// return strdup(mHost);
return makeStringCopy(mHost);
}
char* makeStringCopy(const char* string)
{
if (NULL == string) {
return NULL;
}
char* res = (char*)malloc(strlen(string)+1);
strcpy(res, string);
return res;
}
如果Unity傳參為string類型,不執(zhí)行strdup()方法而直接使用return方法,導(dǎo)致mHost沒有分配內(nèi)存空間而報(bào)錯(cuò)
這里的const char* 會(huì)被C#自動(dòng)轉(zhuǎn)換成string因?yàn)樵?m文件中使用了內(nèi)存申請(qǐng),該段內(nèi)存自然是處在堆內(nèi)存中,這樣轉(zhuǎn)成string符合c#的內(nèi)存管理機(jī)制,我們不用擔(dān)心它的釋放問題
如果Unity傳參為int等基礎(chǔ)數(shù)據(jù)類型,可以直接使用return方法
調(diào)用DllImport(“”)方法,需要引入命名空間:using System.Runtime.InteropServices
2. 調(diào)用方法二
Unity調(diào)方法傳參,無返回值
// Unity代碼
// 傳數(shù)據(jù)給iOS
[DllImport("__Internal")]
// 給iOS傳string參數(shù),無返回值,返回值通過iOS的UnitySendMessage方法返回給Unity
private static extern void setDate(string date);
// 接收iOS的數(shù)據(jù)
public void GetDate(string date)
{
}
// iOS代碼
extern "C" void setDate(const char *date)
{
/**
發(fā)送數(shù)據(jù)給Unity
@param obj 模型名
@param method Unity接收iOS數(shù)據(jù)的方法名
@param msg 傳給Unity的數(shù)據(jù)
UnitySendMessage(const char* obj, const char* method, const char* msg);
*/
UnitySendMessage("PublicGameObject", "GetDate", date);
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
iOS 禁止按鈕在一定時(shí)間內(nèi)連續(xù)點(diǎn)擊
本文主要介紹了iOS中禁止按鈕在一定時(shí)間內(nèi)連續(xù)點(diǎn)擊的方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
iOS體驗(yàn)性優(yōu)化之RTL適配右滑返回的實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于iOS體驗(yàn)性優(yōu)化之RTL適配右滑返回實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
iOS漸變圓環(huán)旋轉(zhuǎn)動(dòng)畫CAShapeLayer CAGradientLayer
這篇文章主要介紹了iOS漸變圓環(huán)旋轉(zhuǎn)動(dòng)畫CAShapeLayer CAGradientLayer的相關(guān)資料,需要的朋友可以參考下2016-09-09
iOS正確監(jiān)聽手機(jī)靜音鍵和側(cè)邊音量鍵的方法示例
這篇文章主要給大家介紹了關(guān)于iOS正確監(jiān)聽手機(jī)側(cè)邊音量鍵的相關(guān)資料,并且給大家分享了ios監(jiān)聽靜音鍵的示例代碼,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-11-11
iOS實(shí)現(xiàn)數(shù)字倍數(shù)動(dòng)畫效果
在iOS開發(fā)中,制作動(dòng)畫效果是最讓開發(fā)者享受的環(huán)節(jié)之一,下面這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)數(shù)字倍數(shù)動(dòng)畫效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
IOS 中UIImageView響應(yīng)點(diǎn)擊事件
這篇文章主要介紹了IOS 中UIImageView響應(yīng)點(diǎn)擊事件的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09

