Unity3d与iOS交互开发——接入平台SDK必备技能
2016-06-12 19:51
316 查看
http://www.2cto.com/kf/201401/273337.html
前言废话:开发手机游戏都知道,你要接入各种平台的SDK。那就需要Unity3d与iOS中Objective-C的函数有交互,所以你就需要用到如下内容:
一、Unity3d To iOS:
1、创建一个C#文件 SdkToIOS.cs 这是调用iOS函数的接口:
?
2、编写与接口对应的Objective-c函数:
?
?
值得一提的是在上面的代码中特意写了一个返回字符串的例子,因为你要获取用户ID 、昵称什么的。对应在cs文件中导入函数如下:
?
这里的const char* 会被C#自动转换成string因为在m文件中使用了内存申请,该段内存自然是处在堆内存中,这样转成string符合c#的内存管理机制,我们不用担心它的释放问题。
3、在你的工程目录中找个地方保存iOS的文件
打包出XCode工程后导入进去,加入你的SDK就可以了。
有一点需要说明,如果存放目录为\Assets\Plugins\iOS,那么Unity3d会自动将该目录下的所有文件(暂不支持子文件夹)当做插件文件打包到Xcode工程下的Libraries目录下,这样你就不需要在手动添加了,否则会报错重复声明什么的。
这种文件各个平台会有多个,可以使用同一头文件且定义的C函数名也都相同,这样更有利于多版本管理。
二、[b]iOS To Unity3d:[/b]
这个在上面的 MyIOSSdk.m 文件中已经有剧透了,就是利用unity3d 的UnitySendMessage函数,其中参数1是场景中接受消息的对象,参数2是要执行的函数名,参数3为传入参数,只要按照如下步骤就可以实现这个机制:
1、在场景中创建一个对象用于接受iOS消息,或者用现有的也可以;
2、为SDK消息写一个脚本,里面包含各种消息函数;
3、将脚本挂到之前创建的对象上完事;
需要注意:这个对象在场景切换时候要始终存在,或者你在每个场景中都加个这玩意也可以,总之只要能收到消息就行了;
另外,针对参数的传递对应上面的sendU3dMessage函数,我还在消息接受脚本中写过一个消息参数的解析:
?
前言废话:开发手机游戏都知道,你要接入各种平台的SDK。那就需要Unity3d与iOS中Objective-C的函数有交互,所以你就需要用到如下内容:
一、Unity3d To iOS:
1、创建一个C#文件 SdkToIOS.cs 这是调用iOS函数的接口:
?
?
?
3、在你的工程目录中找个地方保存iOS的文件
打包出XCode工程后导入进去,加入你的SDK就可以了。
有一点需要说明,如果存放目录为\Assets\Plugins\iOS,那么Unity3d会自动将该目录下的所有文件(暂不支持子文件夹)当做插件文件打包到Xcode工程下的Libraries目录下,这样你就不需要在手动添加了,否则会报错重复声明什么的。
这种文件各个平台会有多个,可以使用同一头文件且定义的C函数名也都相同,这样更有利于多版本管理。
二、[b]iOS To Unity3d:[/b]
这个在上面的 MyIOSSdk.m 文件中已经有剧透了,就是利用unity3d 的UnitySendMessage函数,其中参数1是场景中接受消息的对象,参数2是要执行的函数名,参数3为传入参数,只要按照如下步骤就可以实现这个机制:
1、在场景中创建一个对象用于接受iOS消息,或者用现有的也可以;
2、为SDK消息写一个脚本,里面包含各种消息函数;
3、将脚本挂到之前创建的对象上完事;
需要注意:这个对象在场景切换时候要始终存在,或者你在每个场景中都加个这玩意也可以,总之只要能收到消息就行了;
另外,针对参数的传递对应上面的sendU3dMessage函数,我还在消息接受脚本中写过一个消息参数的解析:
?
相关文章推荐
- Unity3D研究院之IOS全自动打包生成ipa
- 如何添加AdMob广告到现有的Unity3D ios游戏
- Unity3D研究院之IOS&Android收集Log文件
- Unity 发布到Android的注意事项开发环境
- Unity 发布到IOS的注意事项
- HoloLens开发手记 - Unity之World Anchor空间锚
- Unity3d的iOS调试实用技巧
- OnBeforeSerialize And OnAfterDeserialize
- unity3d项目版本管理设置
- 深入浅出聊Unity3D优化:从Draw Calls到GC
- Unity3D和网页数据交互的基本原理
- Unity3d文件部署到IIS,图解 配置说明
- unity 代码设置要打包的AssetBundle
- Unity学习日常问题记录八-反弹和静止条件值是可以设的,ParticleSystem的方向
- 【Unity3d】如何绘制椭圆
- unity知识总结
- 关于游戏对象隐藏和重新显示之前触发的消息。
- 关于unity5鼠标在物体上的检测相关问题
- 【Unity】Could not get texture importer UnityEditor.TrueTypeFontImporter:GenerateEditableFont(String)
- 【Unity技巧】Unity中的优化技术