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
- Unity3D整合到iOS工程Unity3DiOS
- App在iOS 11下真機顯示正常模擬器上顯示有問題APPiOS
- iOS SceneKit顯示與互動3D建模(二)iOS3D
- iOS - SceneKit顯示與互動3D建模(一)iOS3D
- iOS 怎麼在滾動檢視上懸浮一個ViewiOSView
- iOS開發 - touchBegan事件判斷點選的位置在View上還是在View的子View上iOS事件斷點View
- SDWebImage在iOS12上WebP格式圖片不顯示問題WebiOS
- IOS 特定於裝置的開發:獲取和使用裝置姿勢(通過手機方向控制3d物體顯示)iOS3D
- iOS 隱藏&顯示tabBariOStabBar
- Xamarin iOS教程之顯示和編輯文字iOS
- 『自定義View實戰』—— 仿ios圖示下載viewViewiOS
- view的隱藏和顯示View
- (轉)iOS長按textView複製貼上顯示中文iOSTextView
- 在同一頁面顯示多個JavaScript統計圖表JavaScript
- iOS開發自定義View佈局子控制元件iOSView控制元件
- 一個問題——在MDI窗體中新增控制元件後顯示子窗體控制元件
- 如何設計一個 iOS 控制元件? iOS 控制元件完全解析iOS控制元件
- iOS工程師Mac上的必備軟體iOS工程師Mac
- iOS之LLDB列印顯示中文iOSLLDB
- iOS 新增 GPUImage 到自己的工程!iOSGPUUI
- ios view touchiOSView
- iOS設定tabbar不顯示文字,只顯示圖片iOStabBar
- iOS UILabel顯示html標籤iOSUIHTML
- iOS開發之顯示微博表情iOS
- iOS開發如何在google地圖上顯示自己的位置iOSGo地圖
- iOS - 實現在有限label上 動態顯示所有文字iOS
- iOS彙編入門教程(二)在Xcode工程中嵌入彙編程式碼iOSXCode
- 在Flutter中嵌入原生ViewFlutterView
- 做⼀個⾼德地圖的 iOS / Android MAUI 控制元件(上)地圖iOSAndroidUI控制元件
- 在iOS上捕捉簽名iOS
- iOS 大圖顯示解決辦法iOS
- iOS Swift 仿微信聊天圖片顯示iOSSwift
- Swift iOS : 顯示SVG檔案的方法SwiftiOSSVG
- Xamarin iOS教程之檢視顯示影像iOS
- IOS呼叫相簿顯示英文解決方法iOS
- iOS逆向工程 iOS工具篇iOS
- iOS呼叫系統相簿顯示英文標題,如何顯示中文呢?iOS