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封装方法的更多相关文章

  1. UNITY调用安桌方法出现 JNI: Init'd AndroidJavaClass with null ptr!

    UNITY调用安桌方法出现 JNI: Init'd AndroidJavaClass with null ptr! 原因是····· 得运行在一个真正的Android设备上! 得运行在一个真正的And ...

  2. unity调用c++ dll方法介绍

    摘要 unity用的很普遍,现在很多代码还是用c++写的,需要用unity去调用c++的代码.这里介绍了一种unity调用c++ dll的方法,希望有所帮助. 我采用的软件是Visual Studio ...

  3. JQuery调用WebService封装方法

    //提交的webservice链接 //var url = "/wsstafffrate?OpenWebService"; //请求前拼接好的soap字符串 //var soapd ...

  4. unity调用摄像头的方法

    http://blog.csdn.net/cocoa_china/article/details/10527995 using UnityEngine; using System.Collection ...

  5. Unity 调用 Android Native 方法(一) 获得Android系统音量

    学习雷锋,好榜样,接下来的这一系类教程里,将通过unity来实现Android端的一些常用功能, 不需要在 Asset/Plugins/Android 目录下引用jar包或者aar包,这是重点. us ...

  6. 八、MD5加密并封装,并调用封装方法

    一.MD5加密 封装Md5 public class Md5 { //十六进制下数字到字符的映射数组 private static final char hexDigits[] = { '0', '1 ...

  7. Unity调用Android相册

    最近有一个项目有这个需求,让用户上传自己的交易凭证的截图,之前因为对调Android原生的东西不太熟悉,就先放了一边 因为项目已经上线,只不过是该功能未开放而已,那么现在为什么要写这篇博客呢,是因为. ...

  8. Python开发基础-Day20继承实现原理、子类调用父类的方法、封装

    继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...

  9. python基础之继承实现原理、子类调用父类的方法、封装

    继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...

  10. php分页类的二种调用方法(转载)

    php分页类的二种调用方法 原文地址:http://www.xfcodes.com/php/fenye/25584.htm 导读:php分页类的二种调用用法,ajax调用php分页类,非ajax方式调 ...

随机推荐

  1. vscode编译多个C/CPP文件

    修改vscode里面的tasks.json文件,下面是修改好的,参考 "args": [ "-fdiagnostics-color=always", " ...

  2. 17. Class字节码指令解析

    ## 1. 概述 官方文档:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html Java 字节码对于虚拟机,就好像汇编语言对于 ...

  3. 菜单导航tab切换样式的小技巧

    1.最终效果 2.HTML结构 <div class="licaiMenu"> <ul class="navi"> <li> ...

  4. MySQL日志15连问,redo log与biglog

    1. redo log是什么? 为什么需要redo log? redo log 是什么呢? redo log 是重做日志. 它记录了数据页上的改动. 它指事务中修改了的数据,将会备份存储. 发生数据库 ...

  5. Codeforces Round #848 (Div. 2) A~F 题解

    A. Flip Flop Sum 能换 \(-1,-1\) 就换,不能能换 \(1,-1\) 或 \(-1,1\) 也可以,否则只能换 \(1,1\). B. The Forbidden Permut ...

  6. Zabbix“专家坐诊”第198期问答汇总

    问题一 Q:请问一下,自带的思科SNMP交换机模板,怎么不监控down的接口? A1:这种一般在自动发现规则里加个过滤器,过滤出IFSTATUS匹配(1|3)的就能实现只发现up的端口了. A2: 1 ...

  7. npm install --legacy-peer-deps 安装出现依赖包冲突的解决方案

    npm install --legacy-peer-deps 安装出现依赖包冲突的解决方案 为什么 在安装依赖包的时候,会有依赖包的冲突 比如A包引用了C的1.0版本 B包依赖了C的1.1版本 win ...

  8. vue-router tomcat 下报404 WEB-INF 放入 web.xml 即可

    vue-router tomcat 下报404 WEB-INF 放入 web.xml 即可 <?xml version="1.0" encoding="UTF-8& ...

  9. 2.4G无线音频一对多传输解决方案难点解析

    前记     2.4G无线音频传输是一个非主流的应用,做这个的人 相对要比较少.但是,这个领域所涉及到的知识却不少,也就导致了这个领域是好入门,但是东西想做好特别难.这里涉及到声学,无线协议,电子,设 ...

  10. 毕设系列之Linux V4L2(图形图像采集篇)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...