- 用户指南
- 资源商店 (Asset Store)
- 资源服务器 (Asset Server)(仅限团队许可证)
- 缓存服务器(仅限团队许可证)
- 幕后场景
- 创建游戏
- 运行时实例化预设 (Prefabs)
- 变换 (Transforms)
- 物理
- 添加随机的游戏元素
- 粒子系统(Particle Systems)
- Mecanim 动画系统
- 旧动画系统
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Sound (音频侦听器)
- 游戏界面元素
- 多玩家联网游戏
- iOS 开发入门
- Android 开发入门
- Blackberry 10 开发入门
- Metro:入门指南
- 本地客户端开发入门
- FAQ
- Advanced
- Vector Cookbook
- 资源包(仅限专业版)
- Graphics Features
- 资源数据库 (AssetDatabase)
- 构建播放器管道
- 分析器(仅限专业版)
- 光照贴图快速入门
- 遮挡剔除(仅限专业版)
- 相机使用技巧
- 运行时加载资源
- 通过脚本修改源资源
- 用程序生成网格几何体
- 富文本
- 在 Unity 工程 (Project) 中使用 Mono DLL
- 事件函数的执行顺序
- 移动优化实用指南
- Unity XCode 工程结构
- 优化图形性能
- 减少文件大小
- 理解自动内存管理
- 平台依赖编译
- 泛型函数
- 调试
- 插件(专业版/移动版特有功能)
- 文本场景文件格式(仅限专业版)
- 流媒体资源
- 启动时运行编辑器脚本代码
- 网络模拟
- VisualStudio C 集成
- 分析
- 检查更新
- 安装多版本 Unity
- 故障排除
- Unity 中的阴影
- Unity 中的 IME
- 对集成显卡进行优化
- 网络播放器 (Web Player) 部署
- 使用网络播放器中的信任链系统
为台式机平台构建插件
本页介绍了台式机平台 (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 工程都可在此处查看。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论