public bool方法不能隐式地将类型`bool'转换为`void'

时间:2014-06-08 07:52:21

标签: c# android unity3d google-play-games

我实施google play sdk到我的安卓游戏,到目前为止我已经完成登录和排行榜部分,但添加成就让我有点麻烦,因为我使用公共bool方法让我的生活更轻松,以便将来更新并标记成就解锁。

出于某种原因我得到了这个错误: 无法隐式转换类型bool' to void'

public bool unlockAchievement(string achievementName, string achievementID) {
    if(loggedIn == true) {
        Social.ReportProgress(achievementID, 100.0f, (bool success) => {
            return success;
        });
    }
    else return false;
}

我认为我已经涵盖了任何松散的目标,但我却得到了这个错误。

感谢任何帮助。 谢谢。

修改

接缝就像这样工作

public bool unlockAchievement(string achievementName, string achievementID) {
    bool actionDone = false;
    if(loggedIn == true) {
        Social.ReportProgress(achievementID, 100.0f, (bool success) => {
            if(success) actionDone = true;
            else actionDone = false;
        });
        return actionDone;
    }
    else return actionDone;
}

谢谢

1 个答案:

答案 0 :(得分:1)

你的lambda是一个封闭的方法,因此return语句的上下文是lambda方法,而不是unlockAchievement

您可能希望重构代码以使用回调,例如:

public void unlockAchievement(string achievementName, string achievementID, Action<bool> callback) {
    if(loggedIn == true) {
        Social.ReportProgress(achievementID, 100.0f, (bool success) => {
            callback(success);
        });
    }
    else callback(false);
}