找回密码
 立即注册
查看: 867|回复: 5

[笔记] unity写的功能模块如何集成到iOS原生的代码里边?

[复制链接]
发表于 2020-12-21 10:54 | 显示全部楼层 |阅读模式
unity写的功能模块如何集成到iOS原生的代码里边?
发表于 2020-12-21 11:01 | 显示全部楼层
OC版Unity工程融合
1.更改app启动   删除main.storyboard   在app delegate中创建window并添加根控制器
2.在项目中创建Unity文件夹,将Unity中的Library和Native文件夹拖到项目的Unity文件夹下



3.remove references Libraries文件夹下的libel2cpp文件夹
4.remove references Classes/Native文件夹下所有的.h文件
5.将Data文件夹拖到Unity文件夹下,选择 Create folder references



6.添加framework



7.Build-Settings
7.1 Enable-Bitcode     No
7.2 Other Linker Flags   -weak_framework CoreMotion -weak-lSystem
7.3 Header Search Paths



7.4 Library Search Paths



7.5 Other C Flags


7.6 C Language Dialect



7.7 创建pch文件,并设置Prefix Header
  7.8 Precompile Prefix Header   YES
  7.9 C++ Language Dialect



  7.10 Enable C++ Runtime Types    NO
  7.11


  7.12


  7.13 Add User Difined


8. 将Classes文件夹下的pch的内容复制到自己的pch中   #import "UnityAppController.h"
9.将Supporting Files下的main.m文件后缀改成.mm   并将Classes文件夹下main.mm的内容复制(替换)一份到该main.mm中
10.main.mm中修改const char* AppControllerClassName = "AppDelegate";

11. 在Build Phases中的Compile Sources中删除Classes目录下的main.mm

12.在pch文件中添加   #import "UnityAppController.h"

13.在AppDelegate.h中添加
@property (nonatomic,strong)UnityAppController *unityController;

14.在AppDelegate.m中的didFinishLaunchingWithOptions方法中添加
    self.unityController = [[UnityAppController alloc] init];
    [self.unityController application:application didFinishLaunchingWithOptions:launchOptions];
   并在所有对应的启动方法中添加
    [self.unityController applicationWillResignActive:application];
    [self.unityController applicationDidEnterBackground:application];
    [self.unityController applicationWillEnterForeground:application];
    [self.unityController applicationDidBecomeActive:application];
    [self.unityController applicationWillTerminate:application];
15.修改UnityAppController.h文件中GetAppController的代码为
  #import "AppDelegate.h"
      inline UnityAppController*        GetAppController()
{
    AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    return delegate.unityController;}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2020-12-21 11:08 | 显示全部楼层
谢 @朱小杰 邀。
「unity写的功能模块如何集成到iOS原生的代码里边?」
这句话我的理解是,写一个iOS主工程,里面有个模块需要用到Unity的功能,所以希望Unity导出一个SDK,iOS主工程可以选择性的接入一下。
由于我主要做Unity开发,所以没有实现过相关的需求。
在工作中常做的是,Unity导出iOS主工程后,添加、修改代码以及设置,最编译。
从我的理解上来说,Unity导出iOS工程后,其实就是一个原生的iOS工程,并没有太大的区别,所以要做的事只是把这个工程做成SDK,交付其他工程接入使用而已。
之前我写过相关的文章来介绍Unity导出的工程,相信有iOS开发经验的人会很容易理解,权当抛砖引玉。1、导出的Xcode工程
此外,我会尝试实现题主所提到的需求「将Unity导出的iOS工程做成SDK」,实现之后会来更新~
发表于 2020-12-21 11:17 | 显示全部楼层
我还不太明白你想问的。
如果你是在ios上运行unity写的功能,你可以在unity里导出成xcode项目,打包到ios设备上运行。
如果你是想ios和unity互相调用,你可以参考:    Unity3d 与IOS 相互调用
发表于 2020-12-21 11:22 | 显示全部楼层
我写了一篇文章,你可以试一下,有问题可以私信。
Xcode中如何集成Unity - ymonke
发表于 2020-12-21 11:23 | 显示全部楼层
你看一看看这个篇文章unity项目整合嵌入iOS主工程
以及这篇ios★把unity3d项目整合嵌入到xcode中
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 00:27 , Processed in 0.093727 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表