一、Android平台:
1、android调用Unity3d:
继承:public class MainActivity extends UnityPlayerActivity
调用统一方式:UnityPlayer.UnitySendMessage("GameObject", "ShowText", “参数”);
2、Unity3d调用android:
public void MyShowDialog()
{
// Android的Java接口
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
// 参数
string[] mObject = new string[2];
mObject[0] = "数据0";
mObject[1] = "数据1";
// 调用方法
string ret = jo.Call<string>("ShowText", mObject);
}
二、iOS平台:
1、iOS调用Unity3d:
继承:Unity3D环境下在Asset目录下建mm类通过Unity3d编译导出iOS工程后编写自己的MyMainViewController,
eg:mm为:U3DAppControllerView::UnityAppController,h和mm文件内容如下:
@property (nonatomic,strong)UINavigationController *navc;
-(void)createUI;
@end
-(void)createUI{
_rootController = [[UIViewController alloc]init];
_rootView = [[UIView alloc]initWithFrame:[UIScreenmain Screen].bounds];
_rootController.view =_rootView;
MyMainViewController *vc = [[MyMainViewController alloc]init];
self.navc = [[UINavigationController alloc]initWithRootViewController:vc];
[_rootView addSubview:self.navc.view];
_window.rootViewController =_rootController;
[_window bringSubviewToFront:_rootView];
[_window makeKeyAndVisible];
}
@end
IMPL_APP_CONTROLLER_SUBCLASS(U3DAppControllerView)
调用:UnitySendMessage("iOSSendMessageToUnity", "moveGameObject", "");
其中: //参数1 场景中模型的名字
//参数2 脚本名称方法
//参数3 想unity传递一个char类型的数据
2、Unity3d调用iOS:
Unity3D工程中新建脚本: public class UnitySendMessageToiOS : object {
//导出按钮以后将在xcode项目中生成这个按钮的注册
//iOS中的注册格式
[DllImport("__Internal")]
private static extern void _moveSceneXBtn();
public static void moveSceneIniOS(){
if (Application.platform != RuntimePlatform.OSXEditor) {
_moveSceneXBtn ();
}
}
}
调用: UnitySendMessageToiOS.moveSceneIniOS();
本文介绍了如何在Unity3D环境中实现与Android及iOS平台的交互。在Android平台上,通过继承UnityPlayerActivity并使用UnityPlayer.UnitySendMessage进行通信;在iOS上,通过Unity3D的mm类与UnitySendMessage进行调用。同时详细阐述了两端的调用过程和方法。

9480

被折叠的 条评论
为什么被折叠?



