我正在为一个库使用 Android Unity 插件,它遵循之前的 Unity 5 建议结构,并且运行良好。该软件包将必要的文件放在 Assets/Plugins/Android 下,jar 文件所在的位置以及文件夹 Assets/Plugins/Android/res/raw 中库使用的一些 .js 和 .css 文件。一切正常,但当升级到 Unity 5 时,出现了数百个关于 .js 和 .css 文件的错误。 (比如在特定行插入分号,或在该行插入预期标记等)
我知道 Unity 5 中的更改,尤其是此处提到的更改:http://docs.unity3d.com/Manual/PluginInspector.html ,但是我找不到合适的解决方案来解决这个问题。所以我认为问题在于 Unity 正在尝试将这些文件解析为与导致错误的 c# 文件不同的东西。如何从该过程中排除 Assets/Plugins/Android/res/raw 中的文件,或者至少我该如何处理这种情况。我是否必须使用新的 Unity 5 重构文件层次结构?据我所知,它们可以保持相同的结构以实现向后兼容性。
最佳答案
我们的一个项目也遇到了类似的问题,似乎没有办法阻止 unity(至少尝试)编译您的所有脚本。此时 unity 期望 .js
文件是“unity script files”并尝试编译它们,然后失败,当 .js
文件是某种网页内容。
我必须承认,我不知道为什么 unity 将行为从 4.x 更改为 5,因为该文件夹确实在版本 5 之前从 unity 的编译中跳过。另请参见下面的“特定文件夹”部分。
可能的解决方案
1。将潜在的脚本文件放在特定文件夹中
有一些特定的文件夹,Unity 不会尝试编译您的文件,例如WebPlayerTemplates
。
参见 http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html
2。重命名潜在的脚本文件
由于统一编译只会对某些文件(例如 .cs
或 .js
)执行,您可以通过将它们重命名为例如.js_
当然,如果您不相应地调整,这两种解决方案都会首先破坏您的插件。
但是您可以做的是,使用预构建 Hook 来恢复您的更改(重命名或移动文件)并使插件在设备上工作。 并在再次构建之后,避免编译(错误)。
如何实现
只需创建一个自定义构建脚本(必须存储在 Editor
文件夹中,例如 Assets/Editor
)。您会在 unity 中找到一个名为 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#
我希望这能以某种方式满足您的需求,如果您不清楚什么地方,请告诉我。
关于android - 升级到 Unity 5 后 res/raw 中的 Android 库插件 .js 文件出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474516/