在 Unity5 中使用 .Net 库

本文关键字:Net Unity5 | 更新日期: 2023-09-27 18:30:40

我有一个使用 .Net 3.5 用 c# 编写的大型项目我需要在我的项目中使用 Unity3D。我尝试将Unity导入我的项目,但我发现这是不可能的。因此,现在我想将我用 C# 编写的代码导入到 Unity 中。我使用已有的代码创建了一个库,以将其导入 Unity 并使用它。但是当我尝试导入它时,我收到以下错误:

未处理的异常:系统类型加载异常:无法加载类型 "SpeechTools.ClsSpeechSynthesis"来自汇编"MySpeechSynthesizer, 版本=1.0.0.0,区域性=中性,公钥令牌=空'。 无法加载文件或程序集"System.Speech,版本=3.0.0.0,区域性=中性,公钥令牌=31bf3856ad364e35"或其依赖项之一。

我正在我的库中使用 System.Speech。它在 Unity (Mono) 中不受支持。我想问题是由这种依赖引起的。

谁能帮我?有没有办法在System.Speech.SpeechSynthesizer周围编写一个包装器并在Unity中使用它?

我在网上搜索了很多关于为 c++ 代码编写包装器的教程,但没有关于 c# 和 .Net 库的教程。

在 Unity5 中使用 .Net 库

Unity的Mono版本不支持System.Speech,所以你不走运。您也不能只放入Windows版本的System.Speech DLL,因为它可能无法与Unity的Mono版本一起使用。

也不能编写使用 System.Speech 的 C# 包装器 DLL,因为这本质上与直接放入 DLL 相同。Unity 的 Mono 将尝试加载它并失败。

您必须找到实现所需功能的本机库并围绕该功能编写包装器,或者完全用 C# 编写实现。

您可以围绕 C# DLL 编写本机包装器(即 C++ 包装器)。此包装器将初始化 CLR 并加载 C# DLL。然后,本机包装器将在 Unity 中引用。您必须通过此本机包装器公开整个System.Speech API。我认为这会起作用,但它非常麻烦,并且仅适用于Windows或提供.NET的平台(即没有Web播放器,移动设备,Linux,OS X)。