代码剥离错误Unity

时间:2014-04-21 11:28:32

标签: c# dll mono unity3d

我为Unity3d制作了一个单独的小型C#库作为插件,以便其他开发人员可以使用dll文件,他们可以开始使用它进行编码。图书馆很好。但是,建立统一时会出现此错误 UnityException:Failed assembly stripper:

可能是什么原因。在某些主题中,我发现禁用代码剥离,将调用优化设置为缓慢安全,甚至使用 .Net Subset

我的播放器设置如下。 Player Settings

答案按照描述进行。但我想要的是拥有自己的dll和我的播放器设置。因为我看过许多第三方图书馆或dll,我的播放器设置可以100%正常工作。例如 Prime31 Neatplug 以及统一资产商店中的更多插件。

如果您有任何解决方案,请告诉我。

在创建库项目时,我遵循了Unitys Dll tutorial

中提到的步骤

2 个答案:

答案 0 :(得分:1)

这很可能来自设置.NET 2.0 Subset。您的插件可能需要在使用子集构建时不会出现的功能。请参阅此链接和以下引用:http://docs.unity3d.com/Manual/ReducingFilesize.html

"为了避免浪费内存,Unity还支持.NET 2.0 Subset API配置文件。这与Mono“monotouch”配置文件非常相似,因此“monotouch”配置文件的许多限制也适用于Unity的.NET 2.0子集配置文件。 (有关“monotouch”配置文件限制的更多信息,请访问:http://developer.xamarin.com/guides/ios/advanced_topics/limitations/)。游戏中不常用的许多库例程都不在此配置文件中以节省内存。但是,这也意味着依赖于这些例程的代码将无法正常工作。此选项可以是一个有用的优化,但您应该检查现有代码在应用后仍然有效。"

从您的问题看来,您似乎已经尝试将其设置为正常的.NET 2.0并且运行正常,因此您需要将其保留为该设置,或者删除对未包含的例程的任何依赖性在子集中。

答案 1 :(得分:0)

在我的情况下,问题是Nullable类型。我正在使用这样的东西:

var i = Math.Max(1, SomeClass.NullableProperty ?? DefaultValue);