c# - 公共(public) bool 方法无法将类型 `bool' 隐式转换为 `void'

标签 c# android unity-game-engine google-play-games

我在我的 android 游戏中实现了 google play sdk,到目前为止我已经完成了登录和排行榜部分,但是添加成就给我带来了一些麻烦,因为我使用 public bool 方法让我的生活更轻松,以便将来更新并标记解锁的成就。

出于某种原因,我收到此错误: 无法将类型 bool' 隐式转换为 void'

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

我想我已经解决了所有 Unresolved 问题,但我还是收到了这个错误。

感谢任何帮助。 谢谢。

编辑:

它看起来像这样工作

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;
}

谢谢

最佳答案

您的 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);
}

关于c# - 公共(public) bool 方法无法将类型 `bool' 隐式转换为 `void',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104085/

相关文章:

android - 在 Android 中使用 org.apache.poi.ss.examples.html.ToHtml.create(...) 会崩溃

android - 网站页脚在我的移动设备上不稳定

ios - 我可以在 xcode 中自动集成包/框架吗?

C# Unity - 尝试从另一个脚本访问变量

java - Firebase - 将子项添加到数组列表 - java

c# - 团结 : Diagonal movement not corresponding to correct key inputs

c# - ContextMenuOpening 事件未在 WPF 中触发?

c# - ConcurrentDictionary AddOrUpdate 按谓词

c# - 在 Visual Studio 加载项中获取解决方案项文件的路径

c# - 如何检查 net.tcp WCF 服务的可用性