Unity3d和iOS、Android的混合开发介绍

一、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();  


你可能感兴趣的:(Unity)