最近在研究unity和swift,网上教程也有,但是大多是把unity的项目整合到swift中,但是我们这个是unity的项目,所以不能整合到swift中。后面会用swift写蓝牙和swift的一些东西,研究清楚了会写一下swift的蓝牙。
unity打包iOS,自动是OC的文件,其实传值和OC的差不多,unity给iOS传值,我前面有一篇文章,OC给unity传值用 UnitySendMessage 这个方法。在OC里面直接使用。在swift中,也一样用同一个方法。下面会说一下桥接,以及我这里出现的问题。
首先,我在unity中,用了了一个button,和text,C#不熟悉,所以每次都是这些简单的东西,哈哈。
这个主要就是点击一个按钮通知iOS中的swift中的一个方法给text传个值。
我这里的unity的版本号很重要(5.5.0f3),因为后面有个坑,我怀疑是和版本有很大关系的。
然后写一下脚本
然后就打包iOS。在Xcode中,新建一个OC管理类,和一个Swift文件。这里你新建Swift的时候,会问你是否新建一个桥接的头文件,按照系统的来就可以了。
在oc中使用swift需要:
在swift使用OC的方法需要:
当这一切都完成了,按照常理说,就没有问题了,但是我这里出现了问题,因为我编译后,会报错:(非常奇怪的问题,我在不同的Mac上面做同样的事情,一台报错,一台没有问题,唯一的区别是一个是unity2017,一个是我现在用的5.5.0f3)报错的是5.5.0f3打包过来的文件。
这里我也找了一些资料,但是基础浅薄,看的不是很明白。
https://stackoverflow.com/questions/8815200/receiver-type-for-instance-message-is-a-forward-declaration
https://stackoverflow.com/questions/8815200/receiver-type-for-instance-message-is-a-forward-declaration
最后我解决的办法可以说是蒙的,我也不知道我为什么会这样想
最后在swift里面写一个传值就好
好了,跑一下手机: