如何在Unity AndroidJavaClass中访问枚举

时间:2015-03-17 04:21:58

标签: c# android unity3d enums

我是Unity的新手。我在Eclipse中有一个Android项目,在包Test中有一个Java类com.mytestcode。在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中的值?

谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:0)

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

//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#并没有提供枚举 - &#34; class-type&#34 ;

所以我建议将你的枚举转换为int,直到你直接在c#

上开始一个新项目