美文网首页编程爱好者
iOS - 将Unity导出的Xcode工程导入到另一个Xcod

iOS - 将Unity导出的Xcode工程导入到另一个Xcod

作者: Farmers | 来源:发表于2016-09-14 12:25 被阅读1044次

    http://blog.csdn.net/dylan_lwb_/article/details/51452470#comments

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    demo下载地址http://pan.baidu.com/s/1pLcpKpl

    1.Unity导出工程时设置bundle

    id要与项目一致

    2.修改bit code为NO

    3.删除Main.storyboard,代码设置控制器(方便切换window)

    4.将Classes,Libraries,MapFileParser.sh拖入到项目(选中Copy items if needed,选中Create groups)

    将Data拖入到项目(选中Copy items if needed,选中Create folder references)

    5.添加framework(最下边三个是HiAR UnitySDK里边的)

    6.添加Header Search Paths和Library Search Paths

    7.other C Flags -> -DINIT_SCRIPTING_BACKEND=1

    8.添加User-Defined (UNITY_RUNTIME_VERSION版本号与导出工程的Unity版本号一致)

    9.Unity/Classes/Prefix.pch的代码复制到新建的pch文件,

    设置pch文件路径

    10.将Classes/main.mm全部内容复制到main.m 并把扩展名改为.mm, 修改如下代码

    11.添加Run Script

    12. 修改UnityAppController.h如下代码

    13.在AppDelegate.h .m中添加如下代码

    在集成过程中可能遇到的问题

    1.Unknown type name 'UnityViewControllerBase'

    UnityViewControllerBase报错, 把它改成UIViewController

    2.Unknown type name 'AppDelegate'

    在新建的项目里边不会报错, 但是我集成到公司项目的时候报这个错, 于是改成如下代码, 目前没有出现问题, 如果有人知道原因, 请在评论区告诉我

    3.Undefined symbols for architecture armv7

    遇到这个错的同学请添加AssetsLibrary.framework和Accelerate.framework

    4.编译时遇到Permission denied错误的是因为当前开发账号对项目目录没有权限执行MapFileParser.sh

    解决办法: 在终端执行命令 sudo chmod -R 777 所在的目录

    5.Functions that differ only in their return type cannot be overloaded

    解决办法: 把Enable Strict Checking of objc_msgSend Calls 改为NO

    6.Control reaches end of non-void function

    解决办法: 把Mismatched Return Type 改为NO

    // 可能有的步骤忘记了, 有疑问的可以在评论区留言

    // 转载请注明原地址

    相关文章

      网友评论

      • superDo:"_za874cd02b9", referenced from:
        _z696d75d124 in libHiARWrapper.a(545e348be01fe35810e1b09b40005c99.o)
        _za1fbe7a204 in libHiARWrapper.a(545e348be01fe35810e1b09b40005c99.o)
        _z7c739f229b in libHiARWrapper.a(545e348be01fe35810e1b09b40005c99.o)
        _z72fe1ea9e2 in libHiARWrapper.a(545e348be01fe35810e1b09b40005c99.o)
        ld: symbol(s) not found for architecture arm64
        clang: error: linker command failed with exit code 1 (use -v to see invocation)

        十多个类似这种报错,你的demo。
      • paintingStyle:iOS端内部嵌入了两款AR的游戏,进入不同的场景使用 UnitySendMessage("Controller", "OpenSence",data);传递不同的参数,但是只有第一次启动他才能进入其中一个,当进入第二个发送新的消息时还是会显示第一个的游戏画面,iOS端Unity是无法关闭的,后来测试加入 UnityLoadApplication();
        Profiler_InitProfiler();
        切换偶尔是正常的,但有时候会显示错乱,麻烦看下
        (void)showUnityWindow {

        if (_didResignActive) {

        UnityPause(false);
        }
        _didResignActive = NO;

        UnityLoadApplication();
        Profiler_InitProfiler();

        self.window.hidden =YES;
        self.unityWindow.hidden = NO;
        [self.unityWindow makeKeyWindow];
        }

        (void)hideUnityWindow {

        UnityPause(true);
        _didResignActive = YES;
        Profiler_UninitProfiler();

        self.unityWindow.hidden = YES;
        self.window.hidden = NO;
        [self.window makeKeyWindow];
        }

        发送消息代码:

        (void)wjBtnDidClicked {

        [kAppDelegate showUnityWindow];

        [self toUnityPageWithValue:@"wj"];
        }

        (void)scenesBtnDidClicked {

        [kAppDelegate showUnityWindow];

        [self toUnityPageWithValue:@"scenes"];
        }

        #pragma mark - 跳转到对应的Unity页面

        (void)toUnityPageWithValue:(NSString *)value {

        // TODO: 新增代码
        //报错SendMessage: object Controller does not have receiver for function openSence! 说明UnitySendMessage传递的对象不具备相应的方法

        const char *data = [value UTF8String];

        /**
        你那边需要打开场景的话 需要 传值给 OpenSence这个函数 通过ios给unity对象传值的方式 值有两个 "wj" 和 ”scenes“

        "Controller" "openSence" "wj 或者 scenes"
        */

        UnitySendMessage("Controller", "OpenSence",data);
        }
        New_卡迪熊:/Users/zsc/Desktop/spacecraftApp的副本/Libraries/Mono.Security.dll.s:2:1: Cannot use dot operator on a type能不能帮我看下这是啥问题啊
        Farmers:Application.LoadLevel (1);//重载场景 在C#中调用重置当前场景
      • ltw1228:下载了你的demo 运行了出现了201个错 怎么回事 也不知道怎么解决这样的错误
        Farmers:@ltw1228 需要真机调试
      • 睿少:Showing Recent Messages clang: error: linker command failed with exit code 1 (use -v to see invocation)
        老是报这个错!
      • 睿少:遇到文件缺失怎么回事啊

      本文标题:iOS - 将Unity导出的Xcode工程导入到另一个Xcod

      本文链接:https://www.haomeiwen.com/subject/ltyvettx.html