I have a MOGA Power Pro I wanted to get working with my Unity projects. Thankfully, there's a plugin here. Except that it doesn't work. Again, thankfully, someone else did all the work figuring it out, and you can totally go there if you want to read about all the details and the reasons and stuff.


  1. Import the MOGA plugin from the asset store.
  2. Delete Assets/Plugins/Windows8 you don't need or want it.
  3. Pop open Assets/Standard Assets/Scripts/Moga_Controler.cs and find the init() method. It looks like this:
    public bool init()
        return mController.Call<bool>("init");

Make it look like this:

    public bool init()
        bool mIsBound = mController.Get<bool>("mIsBound");
        if (!mIsBound) {
            AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", "com.bda.controller.IControllerService");
            intent.Call<AndroidJavaObject>("setPackage", "com.bda.pivot.mogapgp");
            AndroidJavaObject mContext = mController.Get<AndroidJavaObject>("mContext");
            mContext.Call<AndroidJavaObject>("startService", intent);
            bool result = mContext.Call<bool>("bindService", intent, mController.Get<AndroidJavaObject>("mServiceConnection"), 1);
            mController.Set("mIsBound", true);
            mIsBound = true;
        return mIsBound;

Then just follow the readme to connect up to your project.