Unity傳送資料到原生平台引數對映總結

2021-09-27 18:58:20 字數 2229 閱讀 6700

在unity的移動遊戲開發中,尤其涉及到一些原生外掛程式的開發中,需要利用unity和原生平台(ios、安卓)之間的通訊機制,實現資料和事件的傳輸。其中資料傳輸涉及到指令碼資料到c++資料型別的乙個轉變,因為在往原生平台傳資料過程中,資料會以無型別的資料流傳過去,因此正確的接收轉換資料十分重要。

關於unity和ios原生平台之間的通訊方法請移步:unity與ios通訊

像int,float,bool,byte等基本資料型別可以直接傳輸和轉換,其中byte在c++中用unsigned char來接:

unity中:

[dllimport("__internal")]

public static extern int test(int param1, float param2, bool param3);

原生介面中:

extern "c" int test(int param1, float param2, bool param3)

unity中:

[dllimport("__internal")]

public static extern int test(string param1);

原生介面中:

extern "c" int test(char* param1)

unity中:

[dllimport("__internal")]

public static extern int test(intptr rt, intptr vb, intptr ib);

rendertexture rt = rendertexture.gettemporary(screen.width, screen.height, 0);

mesh mesh = new mesh();

intptr rtptr = rt.getnativetextureptr();

intptr vb = mesh.getnativevertexbufferptr(0);

intptr ib = mesh.getnativeindexbufferptr();

test3(rtptr, vb, ib);

原生介面中:

extern "c" int test(void* rt, void* vb, void* ib)

基礎資料型別的陣列可以直接傳:

unity中:

[dllimport("__internal")]

public static extern int test(int param1, float param2, bool param3);

原生介面中:

extern "c" int test(int* param1, float* param2, bool* param3)

unity物件陣列要以intptr陣列的形式傳遞,傳遞的是inrptr陣列的intptr指標,c++那邊用void**接收【當然基礎資料型別的陣列也是可以傳intptr指標的,傳遞的是陣列首位址的指標】:

unity中:

[dllimport("__internal")]

public static extern int test(intptr param1);

rendertexture rt1 = rendertexture.gettemporary(screen.width, screen.height, 0);

rendertexture rt2 = rendertexture.gettemporary(screen.width, screen.height, 0);

rendertexture rt3 = rendertexture.gettemporary(screen.width, screen.height, 0);

intptr rtsarr = ;

gchandle rtshandle = gchandle.alloc(rtsarr, gchandletype.pinned);

test(rtshandle.addrofpinnedobject());

原生介面中:

extern "c" int test(void** param1)

原生ajax傳送資料,以及不用的方法傳送

4步 1.例項化xhr物件 2.呼叫open方法準備ajax請求 引數1 請求方式 get post delete put 引數2 請求的伺服器端的位址 引數3 true 非同步 預設 false 同步 xhr.open get getdata 3.呼叫send方法傳送ajax請求 xhr.send...

mule 傳送json資料到jms queue

這個示例中,一段json的銷售資料以位元組流的格式向http介面傳送請求,轉換器將之轉換成字元。傳送成功的報文會被列印並且增加到jms queue中等待被消費。最後到達jms queue的報文可以在activemq的後台管理介面中被檢視到。操作步驟 1.啟動mule應用 2.啟動activmq 2....

原生js的Ajax提交json資料到後台

原生ajax傳送json資料到後台接收 將json轉換為name tom pwd 123格式的字串,簡單,不在本次測試內 需要做到幾點 1,post方式傳送。2 json物件必須轉換為json格式字串 4 後台接收,必須用request.getinputstream 方式。so 此種方式適合,前端傳...