unity3d嵌入到iOS工程(3d物體和iOS控制元件顯示在同一個view上)
最近公司要開發一款用於3d展示的應用,通過在網上拜讀各大神的帖子,終於完美解決此類問題。(unity3d版本2017.3,xcode9.2)
前邊unity3d打包iOS工程的方法在此就不做贅述,其他帖子基本可以解決,本帖直接上乾貨。
1、在打包好的iOS工程中,找到UnityAppController.m檔案(在classes資料夾下),因為我們需要3d物體和控制元件同屏,所以要首先改造- (void)applicationDidBecomeActive:(UIApplication*)application;這個方法。具體程式碼如下:
- (void)applicationDidBecomeActive:(UIApplication*)application
{
::printf("-> applicationDidBecomeActive()\n");
if(_unityAppReady)
{
if(UnityIsPaused())
{
UnityPause(0);
UnityWillResume();
}
UnitySetPlayerFocus(1);
}
else if(!_startUnityScheduled)
{
_startUnityScheduled = true;
[self performSelector:@selector(startUnity:) withObject:application afterDelay:0];
}
_didResignActive = false;
static dispatch_once_t disOnce;
dispatch_once(&disOnce, ^ {
[self performSelector:@selector(startViewC:) withObject:application afterDelay:0];
});
NSLog(@"_window22222222%@",_window.rootViewController);
}
-(void)startViewC:(UIApplication *)application{
//自己的需要進入的檢視
MyViewController *root = [[MyViewController alloc] init];
_window.rootViewController = root;
GetAppController().unityView.frame = CGRectMake(0, 0, 512, 768);//我這裡只對ipad進行了適配
root.controller = GetAppController();//controller是一個UnityAppController型別
}
2、在我們自己的controller中進行iOS程式碼處理,MyViewcontroller.h
#import <UIKit/UIKit.h>
#import "UnityAppController.h"
@interface MyViewController : UIViewController
@property(nonatomic, strong) UIView *vw;
@property(nonatomic)UnityAppController *controller;
@end
MyViewcontroller.m
#import "MyViewController.h"
@interface MyViewController ()
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIView *uview = [[UIView alloc] initWithFrame:CGRectMake(512, 0, 512, 768)];
[self.view addSubview:uview];
[uview addSubview:self.controller.unityView];
//除了uview之外的區域,iOS的控制元件就可以按自己的專案需求處理了。
}
@end
通過上邊的操作基本上已經解決了iOS和unity同窗的問題,如還有疑問或者覺得寫的有錯誤的地方可以留言。
相關文章
- flutter在IOS上顯示英文FlutteriOS
- iOS SceneKit顯示與互動3D建模(二)iOS3D
- SDWebImage在iOS12上WebP格式圖片不顯示問題WebiOS
- 『自定義View實戰』—— 仿ios圖示下載viewViewiOS
- iOS 隱藏&顯示tabBariOStabBar
- iOS工程師Mac上的必備軟體iOS工程師Mac
- (轉)iOS長按textView複製貼上顯示中文iOSTextView
- iOS之LLDB列印顯示中文iOSLLDB
- iOS彙編入門教程(二)在Xcode工程中嵌入彙編程式碼iOSXCode
- 做⼀個⾼德地圖的 iOS / Android MAUI 控制元件(上)地圖iOSAndroidUI控制元件
- 在同一頁面顯示多個JavaScript統計圖表JavaScript
- iOS逆向工程 iOS工具篇iOS
- iOS開發如何在google地圖上顯示自己的位置iOSGo地圖
- 『ios』view和tableview的截圖和圖片拼接iOSView
- 【Fiddler】iOS抓取全部顯示“Tunnel to......443”iOS
- iOS 大圖顯示解決辦法iOS
- 在Flutter中嵌入原生ViewFlutterView
- iOS學習筆記——基礎控制元件(上)iOS筆記控制元件
- iOS 一個滑動選擇控制元件iOS控制元件
- mac上的ios資料管理軟體:AnyTrans for iOSMaciOS
- iOS 同一個workspace下建立多個專案程式設計iOS程式設計
- iOS LaunchScreen.storyboard啟動白屏(不顯示)iOS
- iOS 左滑按鈕(UITableViewRowAction)顯示圖片iOSUIView
- iOS 深入分析大圖顯示問題iOS
- iOS 高德地圖怎麼在螢幕內顯示所有的Marker?iOS地圖
- iOS上架流程iOS上架流程iOS
- iOS根據圖片比例計算顯示大小iOS
- 在iOS上使用MVVM進行路由iOSMVVM路由
- iOS實現ScrollView中子控制元件(Button,自定義View)的觸控事件響應iOSView控制元件事件
- [譯] Story 中 Type Mode 在 iOS 和 Android 上的實現iOSAndroid
- iOS自定義控制元件 SlideriOS控制元件IDE
- iOS自定義控制元件 AlertViewiOS控制元件View
- iOS自定義控制元件 SegmentiOS控制元件
- unity3d縮放物體Unity3D
- Unity3D 透明物體ShaderUnity3D
- 如何在 SAPGUI 的同一個螢幕顯示兩個 ALV listGUI
- iOS Swift 工程使用 TargetiOSSwift
- IOS自動進行View標記iOSView