我在我的 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/