标题: unity3d web player的限制 [打印本页] 作者: 会飞的鱼 时间: 2012-3-10 11:25 标题: unity3d web player的限制 Plugins (Pro/Mobile-Only Feature)
Unity has extensive support for Plugins, which are libraries of native code written in C, C++, Objective-C, etc. Plugins allow your game code (written in Javascript, C# or Boo) to call functions from these libraries. This feature allows Unity to integrate with middleware libraries or existing C/C++ game code.
Note: On the desktop platforms, plugins are a pro-only feature. For security reasons, plugins are not usable with webplayers.
In order to use a plugin you need to do two things:-
Write functions in a C-based language and compile them into a library.
Create a C# script which calls functions in the library.
The plugin should provide a simple C interface which the C# script then exposes to other user scripts. It is also possible for Unity to call functions exported by the plugin when certain low-level rendering events happen (for example, when a graphics device is created), see the Native Plugin Interface page for details.
Here is a very simple example:
C File of a Minimal Plugin:
float FooPluginFunction () { return 5.0F; }
C# Script that Uses the Plugin:
using UnityEngine;
using System.Runtime.InteropServices;
class SomeScript : MonoBehaviour {
#if UNITY_IPHONE || UNITY_XBOX360
// On iOS and Xbox 360 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
Note that when using Javascript you will need to use the following syntax, where DLLName is the name of the plugin you have written, or "__Internal" if you are writing statically linked native code:
@DllImport (DLLName)
static private function FooPluginFunction () : float {};
Creating a Plugin
In general, plugins are built with native code compilers on the target platform. Since plugin functions use a C-based call interface, you must avoid name mangling issues when using C++ or Objective-C.
For further details and examples, see the following pages:-
Building Plugins for Desktop Platforms
Building Plugins for iOS
Building Plugins for Android
Further Information
Native Plugin Interface - this is needed if you want to do rendering in your plugin.