2013-12-03 14 views
1

Я делаю свой первый Android-подключаемый модуль для единства, и я столкнулся с одной проблемой, которую я не могу решить. Прямо сейчас этот подключаемый модуль очень прост. Все, что он делает, возвращает все большее число, но при этом метод создается в собственном файле Android. Затем я вызываю этот метод изнутри Unity, чтобы увидеть рост числа.не может преобразовать void в int

Вот мой код. Файл 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; 
} 

}

Мой C# файл в Unity:

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 он жалуется, что я не могу преобразовать непорочную a int по следующей строке:

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

Может ли кто-нибудь увидеть изменения, которые мне нужно внести с моим кодом?

+0

Callstatic недействительна. См. Документы: http://docs.unity3d.com/Documentation/ScriptReference/AndroidJavaObject.CallStatic.html – lboshuizen

+0

Возможно, вам нужна 'GetStatic '? –

ответ

2

От docs:

Чтобы вызвать статический метод с Непустым типом возвращаемого значения, используйте общую версии.

// 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"); 
+1

Убей меня на миллисекунду с помощью этого ctrl-c ctrl-v :-) – lboshuizen

Смежные вопросы