无法将void转换为int

时间:2013-12-03 11:30:36

标签: c# java android unity3d

我正在制作我的第一个Android插件以实现统一,我遇到了一个我无法解决的问题。现在,这个插件非常简单。所有这一切都会返回一个越来越多的数字,但该方法是在原生Android文件中创建的。然后我从Unity内部调用此方法以查看数字上升。

这是我的代码。 Android Java文件:

package com.test.app;

import com.unity3d.player.UnityPlayerActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Config;
import android.util.Log;

public class PluginTest extends UnityPlayerActivity
{
    private static final String TAG = "PluginTest_Unity";
    private static int number = 0;

@Override
protected void onCreate(Bundle myBundle)
{
    super.onCreate(myBundle);
}

@Override
protected void onResume()
{
    if(Config.DEBUG)
    {
        Log.d(TAG, "onResume");
    }
    super.onResume();
}

@Override
protected void onPause()
{
    super.onPause();
}

@Override
protected void onStop()
{
    if(Config.DEBUG)
    {
        Log.d(TAG, "onStop");

    }
    super.onStop();
}

public static int getNumber()
{
    number++;
    return number;
}

}

Unity中的我的C#文件:

using UnityEngine;
using System.Collections;

public class NumberExample : MonoBehaviour 
{
    public GUIText number_output_text;
    AndroidJavaClass pluginTutorialActivityJavaClass;

    // Use this for initialization
    void Start () 
    {
        AndroidJNI.AttachCurrentThread();
        pluginTutorialActivityJavaClass = new AndroidJavaClass("com.test.app.PluginTest");
    }

    // Update is called once per frame
    void Update () 
    {
        int number = pluginTutorialActivityJavaClass.CallStatic("getNumber");
        number_output_text.text = "nr: " + number;
    }
}

然而,当我尝试在Unity中构建我的程序时,它抱怨我无法使用以下行将void转换为int:

int number = pluginTutorialActivityJavaClass.CallStatic("getNumber");

任何人都可以看到我需要使用我的代码进行的更改吗?

1 个答案:

答案 0 :(得分:2)

来自docs

  

要使用非void返回类型调用静态方法,请使用泛型   版本

// Create a java.lang.String object, and call static method valueOf(float value).
function Start() {
    var jo = new AndroidJavaObject("java.lang.String");
    var valueString = jo.CallStatic<string>("valueOf", 42.f);
}

你应该打电话给

int number = pluginTutorialActivityJavaClass.CallStatic<int>("getNumber");