在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 此種方式適合,前端傳...