公司网站建设合同需要交印花税,电子商务网站的基本流程,门户网站的流程,遵义网吧PC的事实上根本不用说#xff0c;毕竟C#和C交互的文章已经够多了#xff0c;当然我自觉得经过几次折腾后。差点儿全部游戏须要到的操作我都掌握了(各种传參方法#xff0c;各种坑#xff0c;不懂的能够留言问。尽管基本上没人看。哈哈)废话不多说#xff0c;我们主要来讲两…PC的事实上根本不用说毕竟C#和C交互的文章已经够多了当然我自觉得经过几次折腾后。差点儿全部游戏须要到的操作我都掌握了(各种传參方法各种坑不懂的能够留言问。尽管基本上没人看。哈哈)废话不多说我们主要来讲两大平台——iOS和android——与unity的native代码交互这里啰嗦一下就是去网上搜都是各种蛋疼的东西比方假设要调用unity C#的函数怎么办差点儿清一色是给出UnitySendMessage的方法。在项目中用这个简直是作死。那么多函数那么复杂的參数你这个破函数顶个屁用啊。iOS还好说。Android更是坑竟然要你去和java代码交互简单来说就是C/C -》 Java -》C#。而实际上大部分时候你根本不须要这么蛋疼直接C/C -》C#就能够了。由于C/C差点儿能够操作全部底层资源。当然个别需求例外正题typedef struct Parameter {int a;int b;} Param;typedef void (*CallBack)(Param* p);void TestFunc(CallBack cb){Param p;p.a 10;p.b 20;cb(p);}extern “C” 这样的细节就不多说了由于我直接建立的是.c文件所以不须要这个标记这里直接用典型的回调函数做样例由于有了回调。你就不必考虑怎样使用C/C调用C#或者反过来由于这个样例实际上已经包括了信息的交换public class NewBehaviourScript : MonoBehaviour {[StructLayout(LayoutKind.Sequential)]struct Parameter {public int a;public int b;}delegate void CallBack(IntPtr param);[DllImport(TestLib)]static extern void TestFunc(CallBack cb);[MonoPInvokeCallback(typeof(CallBack))]static void CallBackFunc(IntPtr param) {var p (Parameter)Marshal.PtrToStructure(param, typeof(Parameter));Debug.Log(a: p.a b: p.b);}// Use this for initializationvoid Start () {TestFunc(CallBackFunc);}// Update is called once per framevoid Update () {}}以上是unity的脚本。输出ab。注意到关键没对就是[MonoPInvokeCallback(typeof(CallBack))]这个标签。没有这个标签就无法回调成功。使用这种方法就能够保证编码效率和运行效率你不须要进行各种中间层的封装。不需把字符串转来转去这全然归功于Mono的跨平台机制。Unity仅仅是进行了一些简便操作另外须要注意的是Android可能须要编译各种相应的.so。其有用AndroidStudio一下子全部编译出来然后丢到unity就好了还有在PC平台以下不须要这个标签事实上假设不是为了保护代码对于unity开发差点儿都能够在C#中完毕C#功能已经足够强大了对于Android保护C#也在上篇文章提到过尽管个人并不知道安全性假设唯一的提示就是使用Coroutine之后反编译无法看到其过程。可是我并不知道是否仅仅是移到别的地方去了。我个人在把一下敏感信息放在Coroutine里面来防止反编译(尽管可能然并卵)