我正在使用一个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重新构建文件层次结构?据我所知,他们可以保持相同的结构以实现向后兼容。
答案 0 :(得分:0)
我们在其中一个项目中遇到了类似的问题,似乎没有办法阻止统一(至少,尝试)编译所有脚本。在这一点上,Unity希望.js
文件是"统一脚本文件"当.js
文件是某种web内容时,尝试编译它们,然后失败。
我必须承认,我不知道为什么Unity将行为从4.x更改为5,因为文件夹确实在版本5之前从统一编译中跳过。另请参阅"特定文件夹&#34 ;以下部分。
有一些特定的文件夹,其中unity不会尝试编译您的文件,例如WebPlayerTemplates
。
请参阅http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html
由于统一编辑仅针对某些文件(例如.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_)
}
}
可以在网上找到更高级的脚本,或者只是随意添加你的创造力;-) 我在这里得到了一些启发:http://jon-martin.com/?p=309
有关如何重命名一堆文件,您可能需要查看此帖子:Renaming files in folder c#
我希望这会以某种方式满足您的需求,如果您不清楚某些事情,请告诉我。