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. 【Azure 存储服务】Azure Storage Account 下的 Table 查询的性能调优

    问题描述 Azure Storage Account 下的 Table 查询的性能调优? 问题解答 因为Azure Storage Table服务(表服务) 与常规的关系型数据库不一样(例如:MySQ ...

  2. curl比较有用的参数

     精选参数: --include // -i curl的输出中包含http头信息--verbose // 比-i更加丰富,>表示请求的信息, <表示curl接收的信息 *表示curl额外提 ...

  3. 轻量级NuGet—BaGet

    1. 介绍 BaGet是一个轻量级的包管理服务.有些时候公司或者个人不希望某一些包进行公开,那么就需要使用私有的包管理服务程序,该服务是用.netcore进行编写的(感谢开发者为社区做出的共享) Gi ...

  4. Android switch语句报错Constant expression required

    方案一 :可以用 if来替代  如下 原因:在Android Studio中使用JDK17以上版本,会出现switch语句报错"Constant expression required&qu ...

  5. SpringMVC快速复习(超详细)

    目录 一.SpringMVC简介 1.什么是MVC 2.什么是SpringMVC 3.SpringMVC的特点 二.HelloWorld 1.开发环境 2.创建maven工程 a>添加web模块 ...

  6. left jon连接查询踩坑记

    项目开发中经常会使用到多张表进行关联查询,比如left join关联查询. 如果有一张表A和一张表B,查询语句 SELECT a.*,b.name from A a left join B b On ...

  7. Idea编译/运行Java程序慢

    修改前: 修改后: 参考: https://www.jjput.com/archives/macbookpro14m1mavenslowcompilation 问题 JDK尽量不要换版本 class ...

  8. 基于python的opus编解码实力解析

    一 opus   pyogg是一个非常不错的库,用这个做音频的编码和解码非常方便.   二 源码解析   import wave from pyogg import OpusEncoder from ...

  9. 用python进行二进制bin文件合并

    一 基本概念 bin文件合并是嵌入式中常用的,这里给一个实例. 二  实例分析 import os import argparse import hashlib offset1 = 0x0010000 ...

  10. Dll堆栈问题(Dll的静态变量与全局变量、vs的MT与MD)

    问题引入:dll有一个导出函数,函数参数是string&,string在函数内部被=赋值.在exe动态加载此dll,调用此导出函数后,会崩溃. 原因:如果任何STL类的实现中使用了静态变量(我 ...