版本:Unity 6 (6000.0)
语言:英语
托管插件
分析低级原生插件

原生插件

Unity 支持原生 插件在 Unity 之外创建的一组代码,用于在 Unity 中创建功能。在 Unity 中可以使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(特定于平台的原生代码库)。更多信息
参见 术语表
,它们是你可以使用 C、C++ 和 Objective-C 等语言编写的原生代码库。插件允许你用 C# 编写的代码调用这些库中的函数。此功能允许 Unity 与中间件库或现有的 C/C++ 代码集成。

原生插件一个特定于平台的原生代码库,它是在 Unity 之外创建的,用于在 Unity 中使用。允许访问操作系统调用和第三方代码库等功能,这些功能在 Unity 中无法使用。 更多信息
参见 术语表
提供了一个简单的 C 接口,C# 脚本随后会将其暴露给你的其他 脚本一段代码,允许你创建自己的组件,触发游戏事件,随时间推移修改组件属性,并以你喜欢的任何方式响应用户输入。 更多信息
参见 术语表
。当发生某些低级渲染事件时(例如,当你创建图形设备时),Unity 也可以调用原生插件导出的函数。有关详细信息,请参阅 低级原生插件接口

有关原生插件的示例,请参阅 原生渲染器插件

使用原生插件

要使用原生插件

  1. 用基于 C 的语言编写函数以访问所需的功能。
  2. 将它们编译成库。
  3. 在 Unity 中,创建一个调用原生库中函数的 C# 脚本。

你使用目标平台上的原生代码编译器构建原生插件。由于插件函数使用基于 C 的调用接口,因此必须使用 C 连接声明函数,以避免名称改编问题。

示例

具有单个函数的简单原生库可能具有如下所示的代码

float ExamplePluginFunction () { return 5.0F; }

要从 Unity 内部访问此代码,请使用以下 C# 脚本

using UnityEngine;
using System.Runtime.InteropServices;

class ExampleScript : MonoBehaviour {
    #if UNITY_IPHONE
    // On iOS plugins are statically linked into
    // the executable, so we have to use __Internal as the
    // library name.
    [DllImport ("__Internal")]
    #else
    // Other platforms load plugins dynamically, so pass the
    // name of the plugin's dynamic library.
    [DllImport ("PluginName")]   
    #endif
    private static extern float ExamplePluginFunction ();

    void Awake () {
        // Calls the ExamplePluginFunction inside the plugin
        // And prints 5 to the console
        print (ExamplePluginFunction ());
       }
    }

其他资源

托管插件
分析低级原生插件