Facebook Unity SDK FB.Feed导致NullReferenceException

时间:2014-04-07 00:34:20

标签: facebook sdk unity3d facebook-unity-sdk

使用Facebook Unity API时遇到问题,调用FB.Feed()方法。它结束了这个错误:

NullReferenceException: Object reference not set to an instance of an object
UnityEngine.GUILayoutUtility.DoGetRect (UnityEngine.GUIContent content,
UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) (at
C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/GUILayoutUtility.cs:264)

紧接着是:

ArgumentException: Getting control 1's position in a group with only 1 controls
when doing Repaint

我知道第二个错误通常是由GUI元素在GUI事件调用之间切换等因素引起的。但是,在我的情况下,我根本没有在OnGUI中做任何事情。事实上,由于试图弄清楚问题是什么而撕裂我的头发,我创建了一个全新的项目 - 一个带有基本按钮登录的场景,然后使用FB.Feed“吹嘘”。我已经按照文档显示的确切方式编写了它,并且我得到了完全相同的错误。

我希望也许有人能够对我所缺失或做错的事情有所了解。

这是我的简单准系统场景中的完整代码,也会导致此错误:

void Start()
{
    FB.Init(OnInitComplete, OnHideUnity);
}

void OnInitComplete()
{
    Debug.Log("FB Initialized");
}

    void OnHideUnity(bool isGameShown)
    {
        Debug.Log("OnHideUnity");
        if (!isGameShown)               
            Time.timeScale = 0;
        else
            Time.timeScale = 1;
    }

    void Update()
    {

    }

    void OnGUI()
    {
        if (!FB.IsLoggedIn)
        {
            if (GUI.Button(new Rect(10, 10, 100, 30), "Login"))
                FBLogin();
        }
        else
        {
            if (GUI.Button(new Rect(10, 50, 100, 30), "Brag"))
            {
                Brag();
            }
        }

    }

    void Brag()
    {
        FB.Feed(
            linkCaption: "This is testing the testapp FEED",
            picture: "http://myapp.com/myapplogo.jpg",
            linkName: "Foo Link",
            link: "http://apps.facebook.com/" + FB.AppId + "/?challenge_brag=" + (FB.IsLoggedIn ? FB.UserId : "guest")
            ); 
    }

    void FBLogin()
    {
        FB.Login("email, publish_actions", OnLoggedIn);
    }

    void OnLoggedIn(FBResult result)
    {
        if (FB.IsLoggedIn)
            Debug.Log("Logged in successfully");
    }

我的Facebook API是版本140220,我的Unity是4.3.4

我会尽力回答任何其他问题我错过的信息

我也尝试使用FB API版本131022,结果相同。

此问题也发生在FriendSmash示例以及随插件提供的InteractiveConsole示例场景中。

我还应该指出,Window会为帖子打开,并加载图片,链接等。但是例外会阻止其他任何工作

其他信息:我发现当应用程序在实际的Android设备上运行时,Feed帖子没有问题。它似乎只在Unity编辑器中出现此错误。测试用户在Android设备上登录时我遇到了另一个问题 - 如果设备安装了Facebook应用程序本身,他们就不能这样做了,但是这个问题可能需要单独提出问题

1 个答案:

答案 0 :(得分:1)

我认为它并没有得到它所要求的所有资源。 docs说不要担心,编辑只能这么做。我得到下面的一个。不过很遗憾,我的设备没有使用,但是如果是的话,我不会太担心它。

NullReferenceException: Object reference not set to an instance of an object
UnityEngine.GUILayoutUtility.DoGetRect (UnityEngine.GUIContent content, UnityEngine.GUIStyle style, UnityEngine.GUILayoutOption[] options) (at C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/GUILayoutUtility.cs:264)
UnityEngine.GUILayoutUtility.GetRect (UnityEngine.GUIContent content, UnityEngine.GUIStyle style) (at C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/GUILayoutUtility.cs:257)
Facebook.FbSkinnedDialog.TwoButtonBar (System.String label, System.String cancelLabel)
Facebook.FeedDialog.UpdateDialog (Int32 windowID)
Facebook.FbSkinnedDialog.GeneralUpdateDialog (Int32 windowId)
UnityEngine.GUI.CallWindowDelegate (UnityEngine.WindowFunction func, Int32 id, UnityEngine.GUISkin _skin, Int32 forceRect, Single width, Single height, UnityEngine.GUIStyle style) (at C:/BuildAgent/work/d3d49558e4d408f4/artifacts/EditorGenerated/GUI.cs:1395)