Unity3d - 在Window Phone中与Facebook共享的2个问题

时间:2014-05-03 04:22:04

标签: c# facebook facebook-graph-api unity3d screenshot

每个人,我必须说我已经在Unity社区发布了这个问题3次(包括答案​​中心及其论坛),但没人能解决。 我使用TakeScreenShot()函数(它在FB SDK for Unity的InteractiveConsole示例中)截取屏幕截图并将其发布到FB。但是出现了两个问题:

  • 首先:截取的屏幕截图是一个灰色的空白:http://i7.minus.com/iXiHlCcSWaVfC.jpg

  • 第二:除了我之外,没有人能看到我的帖子,尽管我将照片公之于众。

如何解决这些问题?

以下是TakeScreenShot()函数的代码:

private IEnumerator TakeScreenshot() {

    yield return new WaitForEndOfFrame();

    var width = Screen.width;
    var height = Screen.height;
    var tex = new Texture2D(width, height, TextureFormat.RGB24, false);
    // Read screen contents into the texture
    tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);
    tex.Apply();
    byte[] screenshot = tex.EncodeToPNG();

    var wwwForm = new WWWForm();
    wwwForm.AddBinaryData("image", screenshot, "InteractiveConsole.png");
    wwwForm.AddField("message", "herp derp.  I did a thing!  Did I do this right?");

    FB.API("me/photos", Facebook.HttpMethod.POST, Callback, wwwForm);
    Debug.Log("done");
}

1 个答案:

答案 0 :(得分:0)

我希望你解决了你的问题,但我会回答你的问题:

•首先:截取的屏幕截图是一个灰色的空白。

我认为这仅适用于Windows Phone,因为最近在Unity 4.5上,更新并再试一次。 Unity 4.5 Windows Phone Fixes

如果您忘记调用Apply方法,则会发生灰色纹理。如果忘记打电话,你会得到一个灰色的纹理。我看到你正在调用tex.Apply(),但我的猜测是你稍后添加它,你可能会看到一个旧的灰色纹理。您的代码应该按原样运行。如果在更新到4.5或更高版本后仍然获得灰色纹理,请尝试在应用和调用EncodeToPNG()之间等待一段时间,可能在这些调用之间产生。请记住,两者都是昂贵的操作。

•第二:除了我之外,没有人能看到我的帖子,尽管我将照片公之于众。

那是因为你还没有上传(公开)你的Facebook应用程序,在开发过程中你只会看到你和你的开发团队会看到这些消息。顺便说一句,fecebook不会批准硬编码的邮件,所以即使这可能有用,而且我知道你在facebook自己的smaples上编写你的代码,你需要允许用户在发布之前编辑邮件。