位置: 编程技术 - 正文

Unity3d游戏开发之如何接入SDK(Unity3D游戏开发标准教程)

编辑:rootadmin
言废话:开发手机游戏都知道,你要接入各种平台的SDK。那就需要Unity3d与iOS中Objective-C的函数有交互,所以你就需要用到如下内容:一、Unity3d To iOS:1、创建一个C#文件 SdkToIOS.cs 这是调用iOS函数的接口:public class SdkToIOS: MonoBehaviour{ //平台接入开关 public static bool isOpenPlatform = false; //导入定义到.m文件中的C函数 [DllImport("__Internal")]private static extern void _PlatformInit(); //定义接口函数供游戏逻辑调用 public static void InitSDK() { if (isOpenPlatform) { _PlatformInit(); } } }[color=rgb(, , ) !important]复制代码2、编写与接口对应的Objective-c函数:// MyIOSSdk.h#import <Foundation/Foundation.h>@interface MyIOSSdk : NSObject@end// MyIOSSdk.m#import "MyIOSSdk.h"//这里引用SDK的头文件#import "SDKPlatform.h"#if defined(__cplusplus)extern "C"{#endif extern void UnitySendMessage(const char *, const char *, const char *); extern NSString* _CreateNSString (const char* string);#if defined(__cplusplus)}#endif//*****************************************************************************@implementation MyIOSSdk//**********************//message tools&#; (void)sendU3dMessageNSString *)messageName paramNSDictionary *)dict{ NSString *param = @""; if ( nil != dict ) { for (NSString *key in dict) { if ([param length] == 0) { param = [param stringByAppendingFormat"%@=%@", key, [dict valueForKey:key]]; } else { param = [param stringByAppendingFormat"&%@=%@", key, [dict valueForKey:key]]; } } }UnitySendMessage("SDK_Object", [messageName UTF8String], [param UTF8String]);}//**********************//SDK fun//初始化SDK-(void)SDKInit{ SDKcfg *cfg = [[[SDKcfg alloc] init] autorelease]; cfg.appid =; cfg.appKey =@"aoaoaoaoaoaoaoaoaoaoaoaoaaoaoaoaoaoaoao"; cfg.orientation = UIDeviceOrientationLandscapeLeft; //调用SDK的初始化函数 [[SDKPlatform defaultPlatform] SDKInit:cfg]; //添加回调监听 [[SDKPlatform defaultPlatform] addObserver:self selectorselector(SNSInitResultnameNSString *)kInitNotification object:nil];}//获取用户ID-(NSString*)SDKGetUserID{ [[SDKPlatform defaultPlatform] SDKGetUserID];}//**********************//call back fun//初始化更新回调- (void)SNSInitResultNSNotification *)notify{ [MyIOSSdk sendU3dMessage"SDKMsgInit" param:nil];}@end//*****************************************************************************#if defined(__cplusplus)extern "C"{#endif //字符串转化的工具函数 NSString* _CreateNSString (const char* string) { if (string) return [NSString stringWithUTF8String: string]; else return [NSString stringWithUTF8String: ""]; } char* _MakeStringCopy( const char* string) { if (NULL == string) { return NULL; } char* res = (char*)malloc(strlen(string)&#;1); strcpy(res, string); return res; } static MyIOSSdk *mySDK; //供u3d调用的c函数 void _PlatformInit() { if(mySDK==NULL) { mySDK = [[MyIOSSdk alloc]init]; } [lsSDK SDKInit]; } //注意这个函数是返回字符串 const char* _PlatformGetUin() { if(lsSDK==NULL) { lsSDK = [[MyIOSSdk alloc]init]; } return _MakeStringCopy([[lsSDK SDKGetUserID] UTF8String]); } #if defined(__cplusplus)}#endif[color=rgb(, , ) !important]复制代码&#;得一提的是在上面的代码中特意写了一个返回字符串的例子,因为你要获取用户ID 、昵称什么的。对应在cs文件中导入函数如下:[DllImport ("__Internal")]private static extern string _PlatformGetUin();这里的const char* 会被C#自动转换成string因为在m文件中使用了内存申请,该段内存自然是处在堆内存中,这样转成string符合c#的内存管理机制,我们不用担心它的释放问题。【狗刨学习网】3、在你的工程目录中找个地方保存iOS的文件打包出XCode工程后导入进去,加入你的SDK就可以了。有一点需要说明,如果存放目录为AssetsPluginsiOS,那么Unity3d会自动将该目录下的所有文件(暂不支持子文件夹)当做插件文件打包到Xcode工程下的Libraries目录下,这样你就不需要在手动添加了,否则会报错重复声明什么的。这种文件各个平台会有多个,可以使用同一头文件且定义的C函数名也都相同,这样更有利于多版本管理。二、iOS To Unity3d:这个在上面的 MyIOSSdk.m 文件中已经有剧透了,就是利用unity3d 的UnitySendMessage函数,其中参数1是场景中接受消息的对象,参数2是要执行的函数名,参数3为传入参数,只要按照如下步骤就可以实现这个机制:1、在场景中创建一个对象用于接受iOS消息,或者用现有的也可以;2、为SDK消息写一个脚本,里面包含各种消息函数;3、将脚本挂到之前创建的对象上完事;需要注意:这个对象在场景切换时候要始终存在,或者你在每个场景中都加个这玩意也可以,总之只要能收到消息就行了;另外,针对参数的传递对应上面的sendU3dMessage函数,我还在消息接受脚本中写过一个消息参数的解析: void ParseMsg(string msg, out Dictionary<string, string> dicMsg){ if( null == msg || 0 == msg.Length ){ dicMsg = null; return; } dicMsg = new Dictionary<string, string>(); string[] msgArray = msg.Split('&'); for( int i=0; i<msgArray.Length; i&#;&#;){ string[] elementArray = msgArray.Split('='); dicMsg.Add(elementArray[0],elementArray[1]); } }

推荐整理分享Unity3d游戏开发之如何接入SDK(Unity3D游戏开发标准教程),希望有所帮助,仅作参考,欢迎阅读内容。

Unity3d游戏开发之如何接入SDK(Unity3D游戏开发标准教程)

文章相关热门搜索词:unity3d引擎开发游戏,unity3d手机游戏开发,unity3d手机游戏开发,unity 3d游戏开发(第2版),unity游戏项目开发教程,Unity3D游戏开发标准教程,unity游戏项目开发教程,unity游戏项目开发教程,内容如对您有帮助,希望把文章链接给更多的朋友!

unity游戏开发之相关的注意事项及技巧 1.打开后缀名为.packadge的文件报错(图1),想必很多朋友都碰到过这个问题,其实只要更改一下文件的位置就可以了(文件存放的路径不可以包含中文

在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视

【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学

标签: Unity3D游戏开发标准教程

本文链接地址:https://www.jiuchutong.com/biancheng/381511.html 转载请保留说明!

上一篇:Unity3D游戏开发之格式简析(Unity3D游戏开发标准教程)

下一篇:unity游戏开发之相关的注意事项及技巧(unity5.x游戏开发指南)

  • 一般纳税企业所得税税率是多少2019
  • 总资产报酬率的计算公式
  • 预付账款借贷方表示什么意思
  • 小规模纳税人批发机动车
  • 企业所得税本年实际缴纳不包括上年汇算清缴补缴税款吗
  • 股东借钱给公司,公司经营不善倒闭!借款公司要还不
  • 残疾人加计扣除政策文件
  • 劳务公司涉及的税收
  • 购销合同签定有法律效力吗
  • 企业安全防护措施有哪些
  • 营改增是初次分配还是再分配
  • 银行贴现差额部分计入什么科目?
  • 收到实物返利
  • 出口发票税率是怎么算的
  • 广告制作费可以计入印刷费吗
  • 年末增值税结转账务处理流程
  • 个人所得税0申报逾期
  • 免征政府性基金预缴税款
  • 增值普通发票税率怎么算
  • 什么情况下要办居住证
  • 采购原材料运费会计分录
  • 购销合同的会计分录怎么写
  • 版权使用费属于什么税目
  • 土地转让怎么缴纳增值税
  • 应收账款及票据
  • 车位租赁费和房屋租赁能开一张发票吗
  • 个人独资企业生活费用扣除
  • 华为鸿蒙怎么打开5g
  • 开发票时的数据可以四舍五入吗
  • 收到厂家商品的会计分录
  • mac怎么卸载软件core sync
  • 为什么Windows 7搜不到网
  • 网络和共享中心在哪里打开
  • PHP:curl_share_setopt()的用法_cURL函数
  • 注册资本增加了
  • 发票填开有哪些规范性要求
  • 利润分配的会计分录怎么写
  • 代理业务资产的核算方法
  • js生成条形码的方式有哪些
  • 开源项目排行榜
  • vue事件bus
  • python每行输出五个且对齐
  • 银行承兑汇票贴现分录
  • 利息收入做账
  • 公司年夜饭怎么说话
  • 关联企业之间业务往来如何定价
  • 工会经费缴纳后会返还吗
  • markdown小小白常用语法
  • 织梦配置文件
  • 织梦系统
  • 增发股票购买子公司
  • 发票跨月还可以作废吗
  • 发票行业税目怎么选
  • 非税收入票据可以跨年度使用吗
  • 第四季度所得税跟汇算清缴是一样吗
  • mysql批量新增字段
  • 小规模纳税人的认定标准是什么
  • 个体户生产经营所得
  • 股权和出资的关系
  • 开办费怎么做帐
  • 在建工程的人工费进行了全员申报后,清算时怎么处理?
  • 备用金分为哪两种
  • 车间不生产折旧计提放哪里
  • 在途物资入库怎么记账
  • 仲裁是什么意思举个例子
  • 简述mysql的优势
  • 多人共用一台电脑,如何保密
  • win8系统电脑没声音怎么办
  • win8.1的ie浏览器
  • nodejs使用express如何跨域
  • js数组洗牌
  • unity c#开发
  • 详解Python装饰器由浅入深
  • 一个android项目一般包含哪些目录?各有什么用途?
  • json遍历对象集合
  • 土地重置成本价
  • 西安市交房要交多少钱
  • 收到海关进口增值税专用缴款书怎么确定库存商品的金额
  • 进项税跨月转出
  • 年度关联业务往来报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设