美文网首页电竞·游戏
SpriteKit塔防游戏动态改变防御塔价格标签的颜色

SpriteKit塔防游戏动态改变防御塔价格标签的颜色

作者: hopy | 来源:发表于2016-05-12 10:48 被阅读74次

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)

本篇blog在DinoDefense塔防游戏基础之上做一处小的修改,如果不知道该游戏是啥,请自行度娘或谷哥补脑…

该游戏在用户点击防御塔基座时会弹出购买菜单:

游戏HUD界面上方有用户剩余金币数量,每个防御塔有其自己的价格,如果用户持有的金币数量小于塔的价格,应该阻止用户购买并且在这之前用明显的视觉提示用户:钱不够了!

上图中显示的是我对游戏代码做了修改之后的效果,所以你可以看到如果钱不够,塔的价格会显示为红色.

DinoDefense是一个非常吸引人的塔防游戏,不过在这一点上把修改的机会留给了我们.下面就简单谈谈如何做这样一处小的修改,也非常简单,希望大家可以坚持看完,希望可以帮助大家一点点 ;]

首先想到的一种做法是在显示防御塔购买菜单的时候比较塔的价格和剩余金币的数量,不过这样做有2个问题:

1.TowerSelectorNode类中没有引入GameScene类的实例,意味着你无法读取到剩余的金币数量,你只有添加GameScreen实例作为其属性,因此你要修改你的初始化方法,比较繁琐…差评!

2.当你弹出防御塔购买菜单后,价格标签的颜色也就不会改变了,如果此时剩余金币数量发生了变化,价格标签无法做对应的改变,这显然是很差的用户体验…还是差评!

那么如果既做到较少修改原有代码又有完美的用户体验呢?我们可以用通知!

思考之后的解决办法如下:首先TowerSelectNode注册一个GoldChangedNotification通知,当在GameScene中用户剩余金币发生变化时则向其发出通知消息,然后TowerSelectNode做出对应处理…完美!

首先在GameScene.Swift中添加通知消息名称:

let goldChangedNotification = "kGoldChangedNotification"

然后给GaneScene添加实例方法:

func goldDidChanged(){

NSNotificationCenter.defaultCenter().postNotificationName(goldChangedNotification, object: nil, userInfo: ["gold":gold])

}

然后在金币发生变化之后立即调用该方法:

gold -= towerType.cost

goldDidChanged()

然后打开TowerSelectorNode.swift,在init初始化器中添加如下代码:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(goldChanged), name: goldChangedNotification, object: nil)

最后添加以下2个方法:

fun goldChanged(notification:NSNotification){

let glodLeft = notification.userInfo!["gold"] as! Int

changeTextColorByLeftGold(goldLeft)

}

func changeTextColorByLeftGold(goldLeft:Int){

let towerCost = Int(costLabel.text!)

if towerCost > goldLeft{

costLabel.fontColor = SKColor.redColor()

}else{

costLabel.fontColor = SKColor.whiteColor()

}

}

再次运行游戏,发现第一次弹出防御塔购买菜单时,标签颜色是错误的,但剩余金币发生变化后标签的颜色都是正确.

原因很简单,因为你在防御塔购买菜单初始化的时候没有考虑到剩余金币数量的问题!为了修改这一bug,首先我们在GameSceneHelper.swift(GameSceneHelper是GameScene的超类,gold定义在其中)中添加一个全局变量:

let InitGold = 75

//并且修改gold为该值

var gold:Int = InitGold

这时防御塔购买弹出菜单在任何时候的状态都是正确的了:

注意看,当剩余金币大于50时,木塔的价格标签颜色实时变为白色表示此时可以再次购买了,而且购买弹出菜单初始的颜色也是正确的,因为开始石塔是红色的!

如果那位童鞋由于学习需要源代码的可以找我,也可以自行在网上搜索,最后感谢观赏,See you next time ;]

相关文章

  • SpriteKit塔防游戏动态改变防御塔价格标签的颜色

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢...

  • 超现实战场塔防作战

    这是一个你从来没玩过的塔防游戏! 2017最值得期待的杀手级塔防游戏:史诗防御战-元素力量! 游戏支持英语,简体中...

  • 2018-08-27有时多造几座防御塔好过只升几座塔。

    有时多造几座防御塔好过只升几座塔。 近几日,突然迷上了皇家守卫军。这是个很优秀的塔防游戏,相应的难度很高,...

  • 塔防游戏——攻击方设计

    塔防游戏相信大家并不陌生,几个主要元素如下: 1、敌方士兵 2、我方防御塔 3、我方主城 emmmmmmm好像就没...

  • 乱斗塔防

    《乱斗塔防》是一款q版三国塔防游戏,将三国时代中叱咤风云、称霸一方的历史人物,幻化成一座座攻防一体的防御塔。游戏结...

  • 塔防游戏——防御方设计

    我们已经能够通过生成器产生敌人,这些敌人能自动寻路到达主城所在位置进行攻击。主城被攻破后游戏结束。攻击方已经具备。...

  • 乱世塔防

    《乱世塔防》是一款日系风格的三国塔防游戏,将三国时代中叱咤风云、称霸一方的历史人物,幻化成一座座攻防一体的防御塔。...

  • 乱世塔防

    《乱世塔防》是一款日系风格的三国塔防游戏,将三国时代中叱咤风云、称霸一方的历史人物,幻化成一座座攻防一体的防御塔。...

  • 萝卜英雄:拯救王的战争

    可操控的塔防游戏!还在为塔防的没操作感而感到无聊么?试试这款不一样的塔防游戏吧! 【游戏特色】 操作:采用触屏操作...

  • 植物大作战-天天僵尸来袭

    这是一款可操控的塔防游戏,尽在横扫僵尸!还在为塔防的没操作感而感到无聊么?试试这款不一样的塔防游戏吧! 【游戏简介...

网友评论

    本文标题: SpriteKit塔防游戏动态改变防御塔价格标签的颜色

    本文链接:https://www.haomeiwen.com/subject/adpdlttx.html