博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity与iOS、Android交互
阅读量:5061 次
发布时间:2019-06-12

本文共 2184 字,大约阅读时间需要 7 分钟。

 

1、Unity调iOS的方法

   在首页的viewcontroller里面实现方法

   

void _PressButton3(const char *args)

{

  //  UnityAppController *unityapp = (UnityAppController *)[UIApplication sharedApplication].delegate;

   // [unityapp ShowWindowssubview];

}

  在Unity里面 直接调用 _PressButton3(content);

 

2、iOS与Unity交互,传值

   

     UnitySendMessage("Scripts", [@"Function" UTF8String], [@"Parameters" UTF8String]);

 

3 .  unity调android里面的方法

     在初始化UnityPlayer的Activity中添加方法,如下:

/**
* 测试Unity调用Android的方法
*/
public void testMethod(String param){
System.out.println("参数为:"+param);
}
对于提供的方法,不可以进行UI操作,因为Unity3D对于android的UI线程来说,只是个子线程,如果要进行UI操作,可以使用Handler发消息。

  .在Unity工程中,利用c#文件来书写,Unity调用的代码:
public static void ActivateShareImage(string content)
{
if (Application.platform == RuntimePlatform.IPhonePlayer)
{
_PressButton3(content);
}
else if (Application.platform == RuntimePlatform.Android)
{
UISystem.Console("test method!");
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("testMethod", "unity");
}
else
{
}
}

 

4、android与unity交互

      UnityPlayer.UnitySendMessage("Scripts", "Function", "Parameters");

 

 

对3补充:unity调用Android的时候,上面的方法大都是适用于Android代码加入到unity工程的data/Android目录下,也就是由unity打包apk。   

 现在小编公司需求,要求Android代码更新比较多,这样若是unity打包就比较麻烦了,故想到解决方法:

 Android建一个 unityMainActivity.java的类,打成jar包,里面声明了unity调用Android的方法 

  public void testMethod(String param){

//System.out.println("参数为:"+param);
}  //只是声明即可   

把jar给unity,放到Android文件下。   unity生成Android project  

eclipse打开project,然后建立 YourMainActivity  extend  unityMainActivity  继承它

然后就可以 overwrite  那些方法,,,,,然后就可操作UI等复杂的产品需求

ps 若是遇到crash的问题,没有报错,可以看看unityMainActivity,去掉 resume  ,同事找到的问题所在,应该是生命周期的问题

 

Unity 调用iOS方法有返回值的情况

在一个viewController声明 UnityGetUserByiOS

const char*  UnityGetUserByiOS()//分享{                NSString *ss = @"测试";        NSLog(@"=GetTexPathByUnity==%@",ss);    return  _MakeStringCopy([ss UTF8String]);//    const char *charstr =[ss UTF8String];//    return ss;}

 

char* _MakeStringCopy( const char* string){    if (NULL == string) {        return NULL;    }    char* res = (char*)malloc(strlen(string)+1);    strcpy(res, string);    return res;}

 

转载于:https://www.cnblogs.com/KingQiangzi/p/4973524.html

你可能感兴趣的文章
linux -- 嵌入式linux下wifi无线网卡驱动
查看>>
SVN使用教程总结
查看>>
SQL中varchar和nvarchar有什么区别?
查看>>
OpenCV矩阵运算总结
查看>>
Java Build Practice 4:Extend and Invoke Ant API
查看>>
[转] Transformer图解
查看>>
FreeBSD方式安装 MAC OSX
查看>>
Linux 根文件系统制作
查看>>
IOS--沙盒机制
查看>>
My.Ioc 的性能
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
hdoj 1846 Brave Game(巴什博弈)
查看>>
Round #345 B. Beautiful Paintings(Div.2)
查看>>
51nod 1018排序
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
linux swoole
查看>>
An Easy Problem?! - POJ 2826(求面积)
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>