Unity调用IOS的方法,顺便科普一下简单OC代码——最白话,手把手教你做系列。

原因:要用Unity接入一些IOS原生的SDK之类的东西。
合作开发就是这样,突然就会有这种莫名其妙对接的时候,然后让人措手不及。而且现在身边也没有一个搞IOS原生的大佬。于是只能抱着C#语法硬撸了。

1,导出Xcode工程

这个相信打过IOS包的都不陌生。选IOS环境,Build,然后就是一个Xcode工程了。

2,如何交互

网上说了很多方法,五花八门。但我是对OC语言一窍不通的,因为语法和C,JAVA,C#等等不太一样,还有一大推符号@#*,看了很长时间,也不是很明白。然后想到之前有大佬写过IOS震动的脚本,只需要一个.m和.h文件就能用了。于是就决定用这种方法了。

3,.h和.m文件

这其实是个很简单的东西,但是没不明白的话OC之路就到此为止了。
我之前一直以为.h和.m是自己按照某种格式手撸的。经过Google之旅才知道,这是IOS的基础。
右键你的工程NewFile,命名一下,一路到底就能生成一组文件.h 和.m。
在这里插入图片描述至于理解我简单的来讲,h 表示头文件,用来声明各种成员变量,方法,属性之类的。
.m 主要用来实现.h 里声明的方法。
具体看下图:
绿色左侧为.h文件里声明的静态方法OC语言+为静态方法,-为普通方法
绿色右侧为.m文件里对.h文件里声明的方法的具体实现方法。

在这里插入图片描述到了这个部分你就可以吧.m和.h放在Plugins/iOS下用

    [DllImport("__Internal")]
    public static extern void InitSdk();

    [DllImport("__Internal")]
    public static extern void ShowLogin();

这两个方法调用了。没错,现在你已经可以调用IOS的方法了。一般情况就是求IOS原生大佬把方法封装好,然后把想调用的方法放进.m文件的具体实现方法里就行了(方法名可自定义但要和C#中的引用一致)。你只是个Unity程序,不要为难自己了。

调用的话到此截止

现在可能你已经觉得你会OC了,So easy。因为你只是做了一个连接OC和Unity的通道。你不觉得和C#的方法很像吗?那是因为你写的方法是C语言并不是OC啊。

真正的OC代码是图中下面红色框中的代码。一堆符号和字符串起来的东西。
OC方法是这么定义的 +/-(标记方法类型)(返回值)方法名{ 具体实现 }
[ 对象 方法名:参数 ]; 是OC调用方法的结构
括号里的第一个被我称为对象的东西,我随便称呼的,因为这个东西还可能是一个[ 对象 方法名 ]这样的东西。类似C#中 Init( XXX.GetID( XX.id ) );
*GSLoginViewController login = [[GSLoginViewController alloc] init]; 实例化一个对象
反正类似这种奇怪的东西比较多,不是原生开发就不用耗时探究这个是什么玩意了。知道是这么个意思就完了。

大概是我看了一整天OC代码的总结。应该有下面这部分就能大致看明白一些简答的OC代码的功能了。

以上。
补充一点:我在测试.m和.h文件的时候发现其实.h文件中即使不去声明方法名,直接在.m文件中写方法实现然后用Unity仍然可以调用。
我的IOS开发朋友这么说:不在头文件声明 直接实现 这个方法就是私有方法,Unity能调用可能是因为unity使用的是runtime的机制,直接使用调用方法名的方式是可以调到的。

以上。

扫描二维码关注公众号,回复: 8752153 查看本文章
发布了27 篇原创文章 · 获赞 26 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_39860954/article/details/103788519