找回密码
 注册帐号

扫一扫,访问微社区

为台式机平台构建插件

2015-1-8 18:07| 发布者: 杨炎| 查看: 1932| 评论: 0|原作者: 蛮牛|来自: unity3d脚本manual

摘要: 为台式机平台构建插件本页介绍了台式机平台 (windows/mac os x/linux) 的本地代码插件。请注意:出于安全考虑,网络播放器已有意禁用所有插件。为 mac os x 构建插件在 mac osx 上,插件被部署为束。选择文件 (file) ...

为台式机平台构建插件

本页介绍了台式机平台 (windows/mac os x/linux) 的本地代码插件。请注意:出于安全考虑,网络播放器已有意禁用所有插件。

为 mac os x 构建插件

在 mac osx 上,插件被部署为束。选择文件 (file)->新工程 (newproject...),然后选择束 (bundle)->carbon/cocoa 可加载束 (carbon/cocoa loadable bundle)(xcode 3) 或os x->框架和库 (framework & library)->束 (bundle)(xcode 4),即可创建带 xcode 的束工程。

如果使用 c++ (.cpp) 或 objective-c (.mm) 实现插件,则必须确保使用 c linkage 方式声明函数,避免名称重整问题

extern "c" {

float foopluginfunction ();

}

为 windows 构建插件

windows 插件为带输出函数的 dll 文件。事实上任何能够创建 dll 文件的语言或者开发环境都可以用来创建插件。

在 mac osx 中,必须使用 c linkage 方式声明所有的 c++ 函数,避免名称重整问题。

为 linux 构建插件

linux 插件为带输出函数的.so文件。这些库主要以 c 或 c++ 编写,但可以使用任何语言。

和其他平台一样,必须使用 c linkage 方式声明所有的 c++ 函数,避免名称重整问题。

32 位和 64 位库

根据平台的不同,32 位和 64 位插件问题也需要不同的处理方法。

windows 和 linux

在 windows 和 linux 上,插件可以手动管理(例如,在构建 64 位播放器之前,应将 64 位库复制到资源/插件 (assets/plugins)文件夹,在构建 32 位播放器之前,应将 32 位播放器复制到assets/plugins文件夹),或者,可以将 32 位版本的插件放在assets/plugins/x86中,并将 64 位版本的插件放在assets/plugins/x86_64中。默认情况下编辑器将首先在特定结构的子目录中查找,如果此目录不存在,它将从assets/plugins根文件夹中复制插件。

请注意:对于 universal linux 构建,必须使用特定结构的子目录(在构建 universal linux 版本时,编辑器将不会从assets/plugins根文件夹中复制任何插件)。

mac os x

对于 mac os x,应该将插件构建为通用二进制,同时包含 32 位和 64 位结构。

从 c# 中使用插件

构建插件之后,束应被放在 unity 工程的资源 (assets)->插件 (plugins)文件夹中(或对应的特定结构子文件夹内)。若在 c# 脚本中定义如下函数,unity 将按名称查找插件:-

[dllimport ("pluginname")]

private static extern float foopluginfunction ();

请注意:pluginname不应包含库后缀名或文件扩展名。例如,在 windows 中,插件文件的实际名称可以是 pluginname.dll,在 linux 中可以是 libpluginname.so。

需注意的是,每次在插件 (plugin) 中更改代码之后,都必须在工程中重新编译脚本,否则,插件将不会包含最新编译的代码。

部署

对于跨平台插件,必须在插件 (plugins) 文件夹内包含 .bundle (mac)、.dll (windows) 和 .so (linux) 文件。 之后,无需进行其他工作。unity 将自动为目标平台选择正确的插件,并将其打包至播放器。

示例

最简单的插件

此插件工程仅实现了一些最基本的操作(打印数字、打印字符串、添加两个浮点、添加两个整数)。如果这是您的第一个 unity 插件,此示例将很有帮助。

此工程可在此处查看,且包含 windows、mac、和 linux 工程文件。

从 c++ 代码中渲染

您可在本地插件界面页面查看 unity 跨平台的多线程渲染插件项目示例。

midi 插件

plugin 界面的完整示例可在此处查看。

此示例展示了使用 apple coremidi api 的完整的 os x midi 插件。它也提供了可以从 unity 访问的简单 c api 和 c# 类。c# 类包含高级别 api,可以轻松访问 noteon 和 noteoff 事件及其 velocity。

纹理插件

这个例子说明如何在 opengl 中直接向纹理分配图像数据(注意前提是 unity 使用 opengl 渲染器)。此示例包括 xcode 和 visual studio 工程文件。插件和随附的 unity 工程都可在此处查看。

相关阅读

文章点评
相关文章
蛮牛教育10.1大促销!全站6折扣!