c# - Unity receive event from object c -
i want create ios plugin unity. function send textmessage using sdk. well, here object c:
-(textmessage*) csendtext:(nsstring *)number cmsgcontent:(nsstring *)msg{ return [messagingapi sendtext:(nsstring*) number msgcontent:(nsstring *) msg] }
and here c wrap code :
textmessage* sendmessage(const char* contactnumber,const char* content){ messaging* msg = [[messaging alloc] init]; nsstring* nr = [nsstring stringwithutf8string:contactnumber]; nsstring* contenttext = [nsstring stringwithutf8string:content]; textmessage* newtext = [msg csendtext:nr cmsgcontent:contenttext]; return newtext; }
you can see return textmessage, event not char,, how can pass event unity,
my c# code here:
#if unity_iphone [dllimport("__internal")] private static extern string sendmessage (string contactnumber,string content); #endif string phonenumber=""; string content=""; void ongui () { phonenumber = gui.textfield ( new rect (250, 125, 250, 25), phonenumber, 40); content = gui.textfield (new rect (250, 157, 250, 25), content, 40); if (gui.button(new rect (250, 250, 100, 30),"click me")) { sendmessage(phonenumber,content); } }
that's not way working. cannot return in c , expect appear in unity / c#. achieve "two way communication" you'll need following.
unity => ios
c# code
[dllimport ("__internal")] private static extern void _somecmethod(string parameter);
(objective-) c code
void _somecmethod(const char *parameter) { }
when invoke _somemethod
in c#, _somemethod
in (objective-) c code gets called.
ios => unity
objective-c code
- (void)callsomecsharpmethod unitysendmessage("go", "somecsharpmethod", "parameter"); }
c# code (monobehaviour
script attached go
)
void somecsharpmethod(string parameter) { }
when invoke callsomecsharpmethod
in objective-c, somecsharpmethod
in c# code gets called.
converting strings
you'll have convert nsstring
s c strings (const char *
) , vice versa.
const char *
=> nsstring
[nsstring stringwithcstring:string encoding:nsutf8stringencoding];
nsstring
=> const char *
[string cstringusingencoding:nsutf8stringencoding];
note: simple example on how achieve 2 way communication channel between c# , native ios code. of course don't want hardcode e.g. gameobject
's name in code, can pass name (for callbacks objective-c) native ios code @ beginning.
Comments
Post a Comment