二、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方式调 ...
随机推荐
- go grpc流式和非流式的例子
参考grpc官方: https://grpc.io/docs/quickstart/go.html 或官方中文翻译: http://doc.oschina.net/grpc?t=60133 安装pr ...
- 浅入Kubernetes(4):使用Minikube体验
Minikube 打开 https://github.com/kubernetes/minikube/releases/tag/v1.19.0 下载最新版本的二进制软件包(deb.rpm包),再使用 ...
- 为什么HashMap的键值可以为null,而ConcurrentHashMap不行?
写在开头 昨天在写<HashMap很美好,但线程不安全怎么办?ConcurrentHashMap告诉你答案!>这篇文章的时候,漏了一个知识点,知道晚上吃饭的时候才凸显想到,关于Concur ...
- linux 命令行使用codeql
目录 CodeQL 概述 安装 直接使用在线查询(lgtm) vscode使用codeql 下载 库文件 测试 linux控制台运行 下载 安装 创建数据库 编写QL查询数据库 简单解释 CodeQL ...
- ui转py文件
ui文件转py文件并且使用 简单做一个笔记,以后忘了回来看看 转换 在QT Designer中创建完ui文件后,回到pycharm中,右键点击ui文件,选择pyuic 完成后获得了和ui文件同名的py ...
- docker构建带ik分词器Elasticsearch镜像
创建Dockerfile 文件: FROM elasticsearch:7.4.2 RUN cd /usr/share/elasticsearch && sh -c '/bin/ech ...
- C语言趣味编程之三天打鱼两天晒网
include <stdio.h> typedef struct date {//定义一个日期结构体date,三个成员变量year\month\day,使得年月日作为一个整体,相互联系. ...
- vue和xml复习
复习 JS知识梳理 JS定义的位置 行内js(事件名="javascript:js代码"),内部js(
- 跨域! dev: 'http://192.168.40.81:9090/xxx-api/' 平台和项目 两个都要改 要不会跨域!跨域!跨域!
跨域! dev: 'http://192.168.40.81:9090/xxx-api/' 平台和项目 两个都要改 要不会跨域!跨域!跨域!
- 引领汽车营销新趋势,3DCAT实时云渲染助力汽车三维可视化
当前,汽车产业发展正从电动化的上半场,向智能化的下半场迈进.除了车机技术体验的智能化之外,观车体验的智能化也不容忽视. 这是因为,随着数字化.智能化.个性化的趋势,消费者对汽车的需求和期待也越来越高, ...