【问题标题】:How to access enum in Unity AndroidJavaClass如何在 Unity AndroidJavaClass 中访问枚举
【发布时间】:2015-03-17 04:21:58
【问题描述】:

我是 Unity 的新手。我在 Eclipse 中有一个 Android 项目,在包 com.mytestcode 中有一个 Java 类 Test。在测试中有一个嵌套类Test.login,其中login 是一个定义为enum login {APP, WEB, APP_WEB} 的枚举。在 Eclipse 中,我可以正常运行;

package com.mytestcode;
import com.mytestcode.Test;
...
public testMethod(Test.login abc)
{
    if(Test.login.APP == abc){
     // do something
    }
}

来Unity,这些错误我都来过

AndroidJavaClass test = new AndroidJavaClass("com.mytestcode.Test"); //work fine
AndroidJavaClass test2 = new AndroidJavaClass("com.mytestcode.Test.login"); //return ClassNotFound error

AndroidJavaObject test3 = new AndroidJavaClass("com.mytestcode.Test.login"); //return NoSuchFieldError error
AndroidJavaObject test4 = test.GetStatic<AndroidJavaObject>("login.APP"); //return NoSuchFieldError error
AndroidJavObject test5 = test.GetStatic<AndroidJavaObject>("Test.login.APP") //return NoSuchFieldError error

如何访问枚举 Test.login 中的值?

谢谢。

【问题讨论】:

  • 我也遇到了同样的问题

标签: c# android unity3d enums


【解决方案1】:

我的第一个想法是枚举不能直接转换.. 来测试一下:

//create a new enum in its own class and test
AndroidJavaClass test6 = new AndroidJavaClass("com.mytestcode.Login"); 
AndroidJavObject test7 = test6.GetStatic<AndroidJavaObject>("Login.APP");

我也开始使用 java-android 大量使用枚举来保存大量数据,当我使用 c#-unity 时,我意识到 c# 不提供枚举-“类类型”

所以我建议将您的枚举转换为 int,直到您直接在 c# 上开始一个新项目

【讨论】:

    【解决方案2】:

    试试这个

    AndroidJavaClass ajc= new    AndroidJavaClass("com.mytestcode.Test$login");
    AndroidJavaObject ajo = ajc.GetStatic<AndroidJavaObject>("APP");
    

    【讨论】:

    • 这对我尝试在 Bitmap 类中访问 Android 的配置很有用,干杯!
    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多