FeastSC 发表于 2022-7-21 19:37

iOS原生集成unity—framework形式集成(2)

次      前言:昨天整理了一下Unity以framework形式集成到Xcode中,接下来我们说一下iOS与Unity的交互,我的项目中总共有12个方法,还在Unity中加入了“退出”按钮,因为安卓开发者的集成方式不一样,直接在界面中写的退出按钮,但是我的退出按钮是写在了Unity的界面上,所以当时想要从Unity的项目返回到原生界面的时候花费了好久才想通。好的,废话不多说,我们现在开始总结。
第一步:需要明确交互是是否含有参数,是否给Unity返回数据,我们的方法是有返回数据(后面会将不带返回数据的方法讲解)。
1、与Unity开发人员定义好需要的方法名,将方法名放到NativeCallProxy的m文件中,方法名要相同。



方法名定义

2、在NativeCallProxy的m文件中,要申明需要调用的方法。



外部调用方法声明

3、在调用的原生界面中导入头文件#include <UnityFramework/NativeCallProxy.h>,遵守NativeCallsProtocol协议



遵守协议

4、实现定义的方法



实现方法返回数据

完成这一步的话,这说明交互实现完成。若只是调用原生方法的话,那就不给Unity返回数据,这样更加简单,也是与Unity开发人员定义好需要的方法,如下图



定义方法,实现方法



声明方法

因为我是需要在Unity的界面中实现动画效果,所以需要自己写个界面,需要在UnityAppController中写入开启动画的方法。



实现动画效果方法

截止到目前,已完成Unity调用iOS端方法的步骤已完成,若想iOS端调用Unity的方法,请继续往下看
第二步:OC调用unity的函数
oc调用unity函数的方式就更简单了,直接用下面的函数就可以了
- (void)sendMessageToGOWithName:(const char*)goName functionName:(const char*)name message:(const char*)msg
参数一:直接问unity的同学拿就可以了
参数二:函数名
参数三:传参,只能字符串传递,多个参数的情况下,与unity的同学约定好字符串的切割格式。
事例:
[ sendMessageToGOWithName: "AvatarSys" functionName: "ChangeModel" message: "hair-4"];
在不懈的努力下终于将项目完成,当时花费了不少时间,脑袋疼,头发脱了好多,但是觉得没有白付出,值啦。如果大家需要帮忙的话,可以加我,咱们一起讨论,一起进步。觉得有帮助的小伙伴请帮忙点点赞,谢谢大家。

ainatipen 发表于 2022-7-21 19:42

请问,oc调用unity的函数,向unity传地图场景的路径,如果unity工程对应一个地图可以加载成功,但是unity工程对应多个地图场景加载失败,报Failed to read data for the AssetBundle 错误。我用你的方式集成unity的framework到oc工程,pause,unloadApplication,quitApplication,这三个方法都无效
页: [1]
查看完整版本: iOS原生集成unity—framework形式集成(2)