无法从Unity Android项目访问R.class

时间:2014-01-18 02:58:55

标签: android unity3d

我有一个Android库,我现在正在构建一个Unity3D插件。 Android库对R.Styleable类执行反射,以检索“declare-styleable”资源上的数据,以实现与this类似的功能。

第一步如下:

Field[] fields = Class.forName( context.getPackageName() + ".R$styleable" ).getFields();

当库作为Eclipse中原生Android项目的一部分运行时,上述行不会出现问题。但是,当通过Unity Android应用程序运行时,它会抛出NoClassDefFoundError。 (如果用上面简单的“.R”替换“.R& $ styleable”,也会发生同样的情况。)

我已经阅读过很多说明Unity不会生成R.class文件的帐户。这是真的?我知道至少在Unity的“StagingArea / gen”文件夹中生成一个R.java文件。如果是这样,除了通过Context.getResources()之外,没有其他方法可以动态访问Unity Android项目中的资源吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码。

final R.drawable drawableResources = new R.drawable();
        final Class<R.drawable> c = R.drawable.class;
        final Field[] fields = c.getDeclaredFields();
        int resourceId;
        for (Field field : fields) {
            try {
                resourceId = field.getInt(drawableResources);
                //TODO do something
            } catch (Exception e) {
                continue;
            }
        }