找回密码
 立即注册
查看: 239|回复: 1

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

[复制链接]
发表于 2022-7-21 19:37 | 显示全部楼层 |阅读模式
次        前言:昨天整理了一下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的同学约定好字符串的切割格式。
事例:
[[self ufw] sendMessageToGOWithName: "AvatarSys" functionName: "ChangeModel" message: "hair-4"];
在不懈的努力下终于将项目完成,当时花费了不少时间,脑袋疼,头发脱了好多,但是觉得没有白付出,值啦。如果大家需要帮忙的话,可以加我,咱们一起讨论,一起进步。觉得有帮助的小伙伴请帮忙点点赞  ,谢谢大家。

本帖子中包含更多资源

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

×
发表于 2022-7-21 19:42 | 显示全部楼层
请问,oc调用unity的函数,向unity传地图场景的路径,如果unity工程对应一个地图可以加载成功,但是unity工程对应多个地图场景加载失败,报Failed to read data for the AssetBundle 错误。我用你的方式集成unity的framework到oc工程,pause,unloadApplication,quitApplication,这三个方法都无效
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-18 22:35 , Processed in 0.113075 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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