首页 文章

FB.Init()在Facebook上为Unity SDK 6.0提供问题

提问于
浏览
0

我使用以下代码初始化Facebook SDK(在 OnGUI() 中):

if(GUI.Button(buttonRect, "Login")) {
  if(!FB.IsInitialized) {
    FB.Init(OnInitComplete, OnHideUnity);
  } else {
    OnInitComplete();
  }
}

它的回调函数:

private void OnInitComplete() {
  Debug.Log("FB.Init completed: Is user logged in? " + FB.IsLoggedIn);
  Application.LoadLevel("NextScreen");
}

private void OnHideUnity(bool isGameShown) {
  Debug.Log("Is game showing? " + isGameShown);
}

然后,我使用 iOS 8.1.2 在真正的iPhone 5s中运行应用程序,日志显示在Xcode 6中:

FB.Init()已被调用 . 你只需要调用一次,只需调用一次 .

NullReferenceException: Facebook object is not yet loaded.  Did you call FB.Init()?
  at FB.get_FacebookImpl () [0x00000] in <filename unknown>:0 
  at FB.Init (Facebook.InitDelegate onInitComplete, System.String appId, Boolean cookie, Boolean logging, Boolean status, Boolean xfbml, Boolean frictionlessRequests, Facebook.HideUnityDelegate onHideUnity, System.String authResponse) [0x00000] in <filename unknown>:0 
  at FB.Init (Facebook.InitDelegate onInitComplete, Facebook.HideUnityDelegate onHideUnity, System.String authResponse) [0x00000] in <filename unknown>:0 
  at TitleScreen.StartGame () [0x00000] in <filename unknown>:0 
  at TitleScreen.Update () [0x00000] in <filename unknown>:0 

(Filename:  Line: -1)

FB.Init completed: Is user logged in? True

此问题不会在Android中发生,也不会在Unity中运行 . 我该如何解决这个问题?

附:此错误并不禁止我登录Facebook . 其他一切都很正常 .

引用其他类似问题(thisthat),情况不同,因为版本不同(使用的Graph API版本也不同)

注意:使用Unity 4.6.1,面向Unity 6.0.0的Facebook SDK

2 回答

  • 2

    我在this question中看到有人建议不要依赖FB.IsInitalized因为它总是返回true .

    我可以告诉你,对我有用的是在Awake()函数中调用FB.Init,就像在Facebook Unity Games Integration Tutorial中所做的那样 . 我在一个自定义类中创建了这个,我创建了一个单例,所以我知道它只被初始化一次 .

    private void Awake() {
        // Initialize FB SDK              
        enabled = false;                  
        FB.Init(SetInit, OnHideUnity);  
    }
    
    private void SetInit()                                                                       
    {                                                                                            
        Util.Log("SetInit");                                                                  
        enabled = true; // "enabled" is a property inherited from MonoBehaviour                  
        if (FB.IsLoggedIn)                                                                       
        {                                                                                        
            Util.Log("Already logged in");                                                    
            OnLoggedIn();                                                                        
        }                                                                                        
    }
    
  • 0

    我认为这是关于IOS Sdk的 . See this link

    所以现在我觉得这个解决方案有效 .

    1-)用记事本或其他东西打开你的FBUnityInterface.mm .

    2-9)在“UnitySendMessage(g_fbObjName,”OnInitComplete“,”“)之前将”self.isInitializing = NO;“添加到第110行;”

相关问题