【发布时间】:2013-12-24 13:48:49
【问题描述】:
我是 Unity 的新手。我有一个 Android 库 jar,我也想将它作为 Unity 的插件提供。
在库 jar 中,我有一个文件夹 html,其中包含一个文件 temp.json。在 jar 文件中(如果我解压缩),结构如下:html/temp.json(请注意,在 Unity 之外的任何 Android 应用程序中运行时 jar 都可以正常工作)
这些是我通过 Unity 调用我的库的步骤:
1) 在我的 Unity 项目层次结构中创建文件夹 Assets/Plugins/ Android
2) 将我的库 jar 文件与 AndroidManifest.xml
一起放在那里3) 创建了一个 bridge.cs 文件,我用它来调用 jar 文件中的函数
调用了 jar 中的函数,但在我调用的库生命周期中 Android 端某处的 jar 代码中:
InputStream inputStream = MyClass.class.getClassLoader()
.getResourceAsStream("html/temp.json");
我得到一个 ResourceNotFound 异常
根据我的阅读,Unity 在打包时会忽略这些文件(如 .json)。因此,根据我的理解,为了在打包时将它们保留在 Jar 中,我创建了以下 Unity 结构:
Assets/Plugins/Android/assets/StreamingAssets/html/temp.json
我意识到放置在 StreamingAssets 文件夹中的任何文件都会被复制到库的 assets 文件夹中。
我现在用 Java 调用:
inputStream = activity.getResources().getAssets().open("html/temp.json");
但是我仍然收到文件未找到的异常。
谁能帮助我/向我解释在 Unity for Android 上执行时我必须遵循的程序才能在 Java 端读取这些文件?
【问题讨论】:
-
你能告诉我
MyClass在哪个包里吗? -
MyClass 是库类。该库可以作为任何 Android 项目中的库正常工作。该问题仅在 Unity 中出现
-
您是否尝试将 json 文件统一放在资源文件夹中?因为““资源”文件夹中的所有资产都将包含在构建中。”[链接]docs.unity3d.com/Documentation/ScriptReference/Resources.html
-
就我目前而言,在 Unity 中构建时包含它的唯一方法是在构建时将 res/ 文件夹放在 tour Plugin/Android/ 文件夹中。但是,这限制了您可以使用项目结构完成的很多事情。