【发布时间】:2014-07-14 09:28:31
【问题描述】:
在尝试构建我的第一个游戏应用时,我遇到了一些超出我编程知识的问题。
我使用 Unity 来制作我的游戏,并使用 eclipse 制作了一个可以工作的 admob 插件,以便在统一中使用。我按照this 教程这样做。
到目前为止没有问题,并且凭借我对制作统一插件的新知识,我决定根据谷歌找到的教程制作第二个插件here。
但是,为了使我的插件正常工作,我不能“扩展”插件的类。这让我很困惑,因为如果我不使用“扩展”,我将没有 onCreate、onActivityResult 等回调。
我知道一定有办法让这个工作,但是我对java的了解太少,无法解决这个问题。
我已经尝试了各种各样的方法来至少编译代码,但基本上我只是在黑暗中摇摆。
我的代码已经到此为止了,不用说它只会在我调用 Test() 时让我的游戏崩溃:
package google.signin;
import com.google.android.gms.ads.*;
import com.google.example.games.basegameutils.GameHelper;
import com.google.example.games.basegameutils.GameHelper.GameHelperListener;
import com.unity3d.player.UnityPlayer;
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
public class SignIn {
private Activity activity; //Store the android main activity
private GameHelper mHelper;
public SignIn()
{
activity = UnityPlayer.currentActivity;
activity.runOnUiThread(new Runnable() {
public void run(){
Activity subactivity = new Activity() {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// create game helper with all APIs (Games, Plus, AppState):
mHelper = new GameHelper(this, GameHelper.CLIENT_ALL);
GameHelperListener listener = new GameHelper.GameHelperListener() {
@Override
public void onSignInSucceeded() {
// handle sign-in success
}
@Override
public void onSignInFailed() {
// handle sign-in failure (e.g. show Sign In button)
}
};
mHelper.setup(listener);
}
@Override
protected void onStart() {
super.onStart();
mHelper.onStart(this);
}
@Override
protected void onStop() {
super.onStop();
mHelper.onStop();
}
@Override
protected void onActivityResult(int request, int response, Intent data) {
super.onActivityResult(request, response, data);
mHelper.onActivityResult(request, response, data);
}
};
}
});
}
public void Test()
{
activity.runOnUiThread(new Runnable() {
public void run(){
mHelper.beginUserInitiatedSignIn();
}
});
}
}
Logcat 说这是问题所在:
07-14 11:19:10.786: E/AndroidRuntime(31262): FATAL EXCEPTION: main
07-14 11:19:10.786: E/AndroidRuntime(31262): Process: com.ChocolatePinecone.PrincessRescueRun, PID: 31262
07-14 11:19:10.786: E/AndroidRuntime(31262): java.lang.Error: FATAL EXCEPTION [main]
07-14 11:19:10.786: E/AndroidRuntime(31262): Unity version : 4.3.4f1
07-14 11:19:10.786: E/AndroidRuntime(31262): Device model : samsung GT-I9505
07-14 11:19:10.786: E/AndroidRuntime(31262): Device fingerprint: samsung/jfltexx/jflte:4.4.2/KOT49H/I9505XXUGNF1:user/release-keys
07-14 11:19:10.786: E/AndroidRuntime(31262): Caused by: java.lang.NullPointerException
07-14 11:19:10.786: E/AndroidRuntime(31262): at google.signin.SignIn$2.run(SignIn.java:78)
07-14 11:19:10.786: E/AndroidRuntime(31262): at android.os.Handler.handleCallback(Handler.java:733)
07-14 11:19:10.786: E/AndroidRuntime(31262): at android.os.Handler.dispatchMessage(Handler.java:95)
07-14 11:19:10.786: E/AndroidRuntime(31262): at android.os.Looper.loop(Looper.java:157)
07-14 11:19:10.786: E/AndroidRuntime(31262): at android.app.ActivityThread.main(ActivityThread.java:5356)
07-14 11:19:10.786: E/AndroidRuntime(31262): at java.lang.reflect.Method.invokeNative(Native Method)
07-14 11:19:10.786: E/AndroidRuntime(31262): at java.lang.reflect.Method.invoke(Method.java:515)
07-14 11:19:10.786: E/AndroidRuntime(31262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
07-14 11:19:10.786: E/AndroidRuntime(31262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
07-14 11:19:10.786: E/AndroidRuntime(31262): at dalvik.system.NativeStart.main(Native Method)
我认为它崩溃是因为 onStart 和子活动中的所有内容都没有被调用。 我不知道我在这里所做的是否是解决这个问题的正确方向。在我继续挥杆之前,我希望这里有人可以启发我,或者至少给我一些指示......
【问题讨论】:
标签: android eclipse plugins unity3d google-play-services