c# h5 unity3d_Unity3D与iOS的交互

1. 关于Unity3DUnity3D(以下简称U3D)是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。作为一款跨平台开发工具,难免会与原生平台进行一些交互操作来完成一些特定的平台功能。例如:你需要直接操作iOS的IAP来实现游戏中的内付费功能;甚至一些第三方SDK没...
摘要由CSDN通过智能技术生成

1. 关于Unity3D

Unity3D(以下简称U3D)是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

作为一款跨平台开发工具,难免会与原生平台进行一些交互操作来完成一些特定的平台功能。例如:你需要直接操作iOS的IAP来实现游戏中的内付费功能;甚至一些第三方SDK没有提供U3D版本的情况下,你会直接在原生系统平台调用其提供接口等等。

下面将为大家介绍,在U3D下如何实现与iOS系统的交互工作,来满足一些需要借助原生系统的功能需求。

2. From U3D to iOS

2.1 实现原理

由于U3D无法直接调用Objc或者Swift语言声明的接口,幸好U3D的主要语言是C#,因此可以利用C#的特性来访问C语言所定义的接口,然后再通过C接口再调用ObjC的代码(对于Swift代码则还需要使用OC桥接)。例如,有如下C语言方法:

void nativeMethod ()

{

NSLog(@"------- objc method call...\n");

}

在C#中则可以像下面代码一样进行引入和调用:

using System.Runtime.InteropServices;

[DllImport("__Internal")]

internal extern static void nativeMethod();

其中DllImport为一个Attribute,目的是通过非托管方式将库中的方法导出到C#中进行使用。而传入"__Internal"则是表示这个是一个静态库或者是一个内部方法。通过上面的声明,这个方法就可以在C#里面进行调用了。如:

public class Sample

{

public void test ()

{

nativeMethod();

}

}

2.2 实现步骤

下面通过一个拼接字符串的例子来说明怎么样从U3D中传入两个字符串到iOS中,然后由iOS拼接后通过NSLog输出结果:

首先新建test.m和test.h两个文件。分别写入如下内容:

/// test.h

extern "C"

{

extern void outputAppendString (char *str1, char *str2);

}

/// test.m

#import

void outputAppendString (char *str1, char *str2)

{

NSString *string1 = [[NSString alloc] initWithUTF8String:str1];

NSString *string2 = [[NSString alloc] initWithUTF8String:str2];

NSLog(@"###%@", [NSString stringWithFormat:@"%@ %@", string1, string2]);

}

然后将上面的两个文件放到U3D项目的Assets目录中。如图:

放入U3D项目

分别选择test.h和test.m文件,在Inspector面板中去掉Any Platforms的勾选,然后保留iOS这一项选中。如图:

设置平台插件

新建一个叫Sample的C#脚本文件,并在这个文件中写入c接口的声明,如:

public class Sample : MonoBehaviour

{

//引入声明

[DllImport("__Internal")]

static extern void outputAppendString (string str1, string str2);

}

在Start方法中调用该方法,如:

void Start ()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值