版本: 2022.3
语言 : 英语
托管插件
为桌面平台构建插件

本地插件

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 ());
       }
    }

更多信息

您可以在以下页面了解更多关于使用本地插件与其他第三方代码库交互的信息,包括如何在您的插件中实现渲染:

托管插件
为桌面平台构建插件