升级到Unity 5后,res / raw中的Android库Plugin .js文件出现问题

时间:2015-04-06 15:42:55

标签: android unity3d assets

我正在使用一个Android Unity插件,该插件遵循先前的Unity 5建议结构,并且它运行良好。该软件包将必要的文件放在Assets / Plugins / Android下,其中存在jar文件,并在文件夹Assets / Plugins / Android / res / raw中放置库使用的.js和.css文件。一切都运行得很好但是当升级到Unity时,出现了关于.js和.css文件的数百个错误。 (比如在特定行插入分号,或在该行插入预期的标记等)。

我知道Unity 5中的更改,特别是如此处所提到的:http://docs.unity3d.com/Manual/PluginInspector.html,但我无法找到解决此问题的正确解决方案。所以我认为问题是Unity试图将这些文件解析为最不同的c#文件导致错误。如何从该过程中排除Assets / Plugins / Android / res / raw中的文件,或者至少如何处理这种情况。我是否必须使用新的Unity 5重新构建文件层次结构?据我所知,他们可以保持相同的结构以实现向后兼容。

1 个答案:

答案 0 :(得分:0)

我们在其中一个项目中遇到了类似的问题,似乎没有办法阻止统一(至少,尝试)编译所有脚本。在这一点上,Unity希望.js文件是"统一脚本文件"当.js文件是某种web内容时,尝试编译它们,然后失败。

我必须承认,我不知道为什么Unity将行为从4.x更改为5,因为文件夹确实在版本5之前从统一编译中跳过。另请参阅"特定文件夹&#34 ;以下部分。

可能的解决方案

1。将潜在的脚本文件放在特定的文件夹中

有一些特定的文件夹,其中unity不会尝试编译您的文件,例如WebPlayerTemplates

请参阅http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html

2。重命名潜在的脚本文件

由于统一编辑仅针对某些文件(例如.cs.js)执行,因此您可以通过将其重命名为例如来避免编译。 .js_


当然,如果你不能相应地调整它们,两种解决方案都会首先打破你的插件。

你可以做的是,使用预构建挂钩来恢复你的更改(重命名或移动文件)并使插件在设备上运行。 然后再次构建,以避免编译(错误)。


如何实现这个

只需创建自定义构建脚本(必须存储在Editor文件夹中,例如Assets/Editor)。您将在名为Build的统一中找到一个新的菜单,其中包含条目CustomBuild,您可以(并且必须)开始构建。

最低版本:

using UnityEditor;
using UnityEngine;

public class BuildProcessor {

    [MenuItem ("Build/Custom Build", false, 0)]
    static void CustomBuild() {
        PreProcess();
        BuildPipeline.BuildPlayer(new string[] { "your-main-scene.unity" }, "build-output-dir", BuildTarget.Android, BuildOptions.None);
        PostProcess(); 
    }

    static void PreProcess() {
        //Your pre-process here (e.g. rename all files from .js_ to .js)
    }

    static void PostProcess() {
        //Your post-process here (e.g. rename all files back from .js to .js_)
    }
}

我希望这会以某种方式满足您的需求,如果您不清楚某些事情,请告诉我。