gpt4 book ai didi

ios - 将游戏中心成就添加到我的游戏中

转载 作者:行者123 更新时间:2023-11-28 06:54:55 35 4
gpt4 key购买 nike

我试图将成就添加到我的一个游戏中,我列了一个列表并开始在 itunes connect 中添加带有图像和描述的成就,但是我找不到用 swift 编写的教程,并且没有像 unlockachievement 这样的简单功能成就id在里面传递

在我的游戏中,在游戏结束屏幕的 viewdidload 中我做了这个

if (achievement condition){
//unlock achievement ("achievementID")
}

这是添加成就的正确方法吗?在这个 View 中,我从之前的 View 中传递了很多统计数据,所以如果我将解锁成就功能放在这里,弹出窗口应该出现在游戏结束时,而不会分散玩家的注意力

对于排行榜我做了一个获取分数和排行榜的函数,我想对成就做同样的事情,我该怎么做?这可能吗?

我也在游戏中心 View 中看到了成就进度,是否可以避免它?尤其是只有在满足条件时才会显示的隐藏成就

最佳答案

我是这样解决的

func loadAchievementPercentages() {
print("get % ach")
GKAchievement.loadAchievementsWithCompletionHandler { (allAchievements, error) -> Void in

if error != nil {
print("GC could not load ach, error:\(error)")
}
else
{
//nil if no progress on any achiement
if(allAchievements != nil) {
for theAchiement in allAchievements! {

if let singleAchievement:GKAchievement = theAchiement {

self.gameCenterAchievements[singleAchievement.identifier!] = singleAchievement
}
}
}

for(id,achievement) in self.gameCenterAchievements {
print("\(id) - \(achievement.percentComplete)")
}

}
}
}
func incrementCurrentPercentageOfAchievement (identifier:String, amount:Double) {

if GKLocalPlayer.localPlayer().authenticated {

var currentPercentFound:Bool = false

if ( gameCenterAchievements.count != 0) {

for (id,achievement) in gameCenterAchievements {

if (id == identifier) {
//progress on the achievement found
currentPercentFound = true

var currentPercent:Double = achievement.percentComplete

currentPercent = currentPercent + amount

reportAchievement(identifier,percentComplete:currentPercent)

break
}
}
}
if (currentPercentFound == false) {
//no progress on the achievement

reportAchievement(identifier,percentComplete:amount)

}
}
}

func reportAchievement (identifier:String, percentComplete:Double) {

let achievement = GKAchievement(identifier: identifier)

achievement.percentComplete = percentComplete

let achievementArray: [GKAchievement] = [achievement]

GKAchievement.reportAchievements(achievementArray, withCompletionHandler: {

error -> Void in

if ( error != nil) {
print(error)
}

else {

print ("reported achievement with % complete of \(percentComplete)")

self.gameCenterAchievements.removeAll()
self.loadAchievementPercentages()
}

})
}

在 View 中确实加载了我有这个

if (conditions for the achievement)                           
{

incrementCurrentPercentageOfAchievement("achievementID", amount: 100)
}

现在测试成功了,现在我想做一些不同的事情,我不想增加成就百分比而是设置百分比,例如:

成就 - 10 的组合 - 玩个游戏 - 8 的组合并显示 80% 的成就进度 - 另一场比赛 - 2 的组合

使用我现在的代码,它应该解锁成就,因为百分比是累积的,所以我必须编写另一个函数来更改成就进度百分比并将其设置为 20现在如果我在一局游戏中满足要求解锁了成就,在下一局游戏中我没有再次达到这个条件,成就仍然是解锁的,对吧?

关于ios - 将游戏中心成就添加到我的游戏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33920501/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com