二、Unity调用Xcode封装方法
1、开始封装Unity调用接口
我们在Xcode中 写的接口需要在extern "C"中(加上extern "C"后,会指示编译器这部分代码按C语言的进行编译),需要了解这个作用的童鞋可以自行百度一下这个的作用
#ifdef __cplusplus
extern "C"{
#endif
NSString * charToString(char * c){
return [NSString stringWithCString:c encoding:NSUTF8StringEncoding];
}
void init(char * objserver){
[UnityExtend share];
[UnityExtend share].observer = charToString(objserver);
NSLog(@"传入的物体名称%s:",objserver);
}
#ifdef __cplusplus
}
#endif

2、打包.a库 复制到unity目录下方
我们先选择 下图这个样子,然后点击旁边的运行按钮

运行之后我们会出现这个.a文件 我们把这个文件从文件夹复制到unity的Plugins文件夹下


3、我们开始编写c#代码
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
/// <summary>
/// ios 接口
/// </summary>
public class IosInterface
{
#if UNITY_IOS
[DllImport("__Internal")]
public static extern void init(string observer);
#endif
}
using System.Collections;
using System.Collections.Generic;
/// <summary>
/// api 接口类
/// </summary>
public class Extend:CvMonoSignten<Extend>
{
public override void Init()
{
base.Init();
DontDestroyOnLoad (this);
}
public void InitSDK(){
#if UNITY_IOS
IosInterface.init(this.gameObject.name);
#endif
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 单例工具类
/// </summary>
/// <typeparam name="T">泛型</typeparam>
public abstract class CvMonoSignten<T> : MonoBehaviour where T :CvMonoSignten<T>
{
private static T m_Instance;
public static T Instance{
get{
if(m_Instance == null){
m_Instance = GameObject.FindObjectOfType (typeof (T)) as T;
if(m_Instance == null){
m_Instance = new GameObject ("CvSingleton of " + typeof(T).ToString(), typeof(T)).GetComponent<T> ();
m_Instance.Init ();
}
}
return m_Instance;
}
}
public virtual void Init(){
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestExtend : MonoBehaviour
{
private void Start()
{
Debug.Log("------开始运行");
Extend.Instance.InitSDK();
}
}
4、现在我们开始打包Ios 工程

5、打包成功之后我们开始运行
双击我们刚刚打包的这个文件

打包之后 选择我们的账号,等待验证通过

通过之后我们直接运行,运行之后可以看到我们调用成功

二、Unity调用Xcode封装方法的更多相关文章
- UNITY调用安桌方法出现 JNI: Init'd AndroidJavaClass with null ptr!
UNITY调用安桌方法出现 JNI: Init'd AndroidJavaClass with null ptr! 原因是····· 得运行在一个真正的Android设备上! 得运行在一个真正的And ...
- unity调用c++ dll方法介绍
摘要 unity用的很普遍,现在很多代码还是用c++写的,需要用unity去调用c++的代码.这里介绍了一种unity调用c++ dll的方法,希望有所帮助. 我采用的软件是Visual Studio ...
- JQuery调用WebService封装方法
//提交的webservice链接 //var url = "/wsstafffrate?OpenWebService"; //请求前拼接好的soap字符串 //var soapd ...
- unity调用摄像头的方法
http://blog.csdn.net/cocoa_china/article/details/10527995 using UnityEngine; using System.Collection ...
- Unity 调用 Android Native 方法(一) 获得Android系统音量
学习雷锋,好榜样,接下来的这一系类教程里,将通过unity来实现Android端的一些常用功能, 不需要在 Asset/Plugins/Android 目录下引用jar包或者aar包,这是重点. us ...
- 八、MD5加密并封装,并调用封装方法
一.MD5加密 封装Md5 public class Md5 { //十六进制下数字到字符的映射数组 private static final char hexDigits[] = { '0', '1 ...
- Unity调用Android相册
最近有一个项目有这个需求,让用户上传自己的交易凭证的截图,之前因为对调Android原生的东西不太熟悉,就先放了一边 因为项目已经上线,只不过是该功能未开放而已,那么现在为什么要写这篇博客呢,是因为. ...
- Python开发基础-Day20继承实现原理、子类调用父类的方法、封装
继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...
- python基础之继承实现原理、子类调用父类的方法、封装
继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...
- php分页类的二种调用方法(转载)
php分页类的二种调用方法 原文地址:http://www.xfcodes.com/php/fenye/25584.htm 导读:php分页类的二种调用用法,ajax调用php分页类,非ajax方式调 ...
随机推荐
- 【Azure Redis 缓存】Azure Redis 遇见的连接不上问题和数据丢失的情况解答
问题描述 PHP应用再连接Azure Redis服务时,出现Connection Timed out.当通过升级提高Azure Redis的性能时候,发现之前的数据丢失了. 问题解答 当Redis服务 ...
- java数组案例
数组: 数组就是用来存储一批同类型数据的内存区域(容器) 数组中的最大值实现方法: 数据拿到程序中去,用数组装起来. 定义一个变量,用于记录最大值.这个变量建议默认存储第一个元素作 ...
- 开源好用的所见即所得(WYSIWYG)编辑器:Editor.js
@ 目录 特点 基于区块 干净的数据 界面与交互 插件 标题和文本 图片 列表 Todo 表格 使用 安装 创建编辑器实例 配置工具 本地化 自定义样式 今天介绍一个开源好用的Web所见即所得(WYS ...
- 摆脱鼠标系列 - 百度搜索 - 火柴 - 快捷键 Ctrl两次
摆脱鼠标系列 - 百度搜索 - 火柴 - 快捷键 Ctrl两次 有两款软件 utools 和 火柴,试用后觉得火柴符合试用功能 这里只用网络搜索 其他功能均不用 搜索用双核浏览器 因为用的老的chro ...
- Prettier 和 ESLint 冲突解决方案 eslint-config-prettier eslint-plugin-prettier
划重点 eslint-config-prettier 禁用 eslint 冲突配置 eslint-plugin-prettier Prettier先格式化 (默认是先eslint格式化,再Pretti ...
- Android Studio源码导入与调试
从事Android开发都需要涉及到Android源码的阅读,特别是系统应用或者Framework开发,读代码的时间远远比写代码的时间更多. 一. 生成iml与ipr 在Android Studio中导 ...
- js实现展开多级数组
1.递归 function steamrollArray(arr) { let res = [] for (const a of arr) { if(a instanceof Array){ res ...
- APT案例之点击事件
目录介绍 01.创建项目步骤 1.1 项目搭建 1.2 项目功能 02.自定义注解 03.创建Processor 04.compiler配置文件 05.编译jar 06.如何使用 07.编译生成代码 ...
- 记录--uniapp 使用原生子窗体进行视频聊天
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 现在 uniapp 开发的实时音视频聊天类的 APP 大部分都要在 nvue 页面上进行开发.虽然 nvue 与 vue 的区别不是很大, ...
- PLSQL的异常传播
文章概要: 本文对主要就PLSQL的异常传播进行知识性小结,分为四个部分,PLSQL异常传播小结,编写小案例验证5种传播规则,示例了一个容易理解出错的案例,以及使用goto结合异常处理的案例. 一,异 ...