小白贪狼做塔防(2)

让我们继续探讨防御塔的建造,升级,卖出
建造:

void Biuld()
    {
        if (GameData.Instance.money < gameObj.tw.GetComponent<CheckEnemy>().value)
        {
            return;
        }
        hitInfo.collider.gameObject.GetComponent<Tower>().level++;
        //动态加载防御塔
        gameObj.tw = (GameObject)Resources.Load("Prefabs_Turrets/" + bt.cv.GetComponent<Text>().text + hitInfo.collider.gameObject.GetComponent<Tower>().level.ToString());
        //金币处理      
        GameData.Instance.money -= gameObj.tw.GetComponent<CheckEnemy>().value;
        //实例化o
        o = Instantiate(gameObj.tw, hitInfo.collider.gameObject.transform.position + Vector3.up * 2.8f, hitInfo.collider.gameObject.transform.rotation) as GameObject;
        o.transform.parent = hitInfo.collider.gameObject.transform;
        hitInfo.collider.gameObject.GetComponent<Tower>().towername = bt.cv.GetComponent<Text>().text;
        //o = Instantiate(gameObj.tower, hitInfo.collider.gameObject.transform.position + Vector3.up * 2.8, hitInfo.collider.gameObject.transform.rotation) as GameObject;
        hitInfo.collider.gameObject.GetComponent<Tower>().isBiuld = true;       
        bt.cv.GetComponent<Text>().text = "";
    }

首先,/判断钱够不够/,够的话我们就将基座等级+1,并通过Canvas上的Text获取想要建造的名字(前面已经判断基座上没有塔,并判定Canvas上的Text是否为空),并/扣除对应金币/,然后实例化防御塔,并将isBiuld设为true,表明基座上已经有塔,避免同一位置重复建造。然后重点来了,一定一定要将bt.cv.GetComponent<Text>().text清空,不然,你建完一座塔后,鼠标点中其他基座,也会建造并扣钱。
卖出:

void Des()
    {
        GameData.Instance.money += (hitInfo.collider.gameObject.transform.GetChild(1).gameObject.GetComponent<CheckEnemy>().value*0.7f);
        Debug.Log("卖了之后,金币数-----" + GameData.Instance.money);
        Destroy(hitInfo.collider.gameObject.transform.GetChild(0).gameObject);
        //卖炮塔   
        hitInfo.collider.gameObject.GetComponent<Tower>().isBiuld = false;        
        bt.cv.GetComponent<Text>().text = "";
    }

这个逻辑比较简单,选中卖出操作后,点击基座。如果上面没有塔,则将bt.cv.GetComponent<Text>().text清空,若有塔,则将点击的塔的子物体销毁(我之前将防御塔实例化再基座的子物体上了)并返还部分金币。

升级:

void Up()
    {
        hitInfo.collider.gameObject.GetComponent<Tower>().level++;
        gameObj.tw = (GameObject)Resources.Load("Prefabs_Turrets/" + hitInfo.collider.gameObject.GetComponent<Tower>().towername + hitInfo.collider.gameObject.GetComponent<Tower>().level.ToString());
        //金币处理
        if (GameData.Instance.money < gameObj.tw.GetComponent<CheckEnemy>().value)
        {
            hitInfo.collider.gameObject.GetComponent<Tower>().level--;
            return;
        }
        GameData.Instance.money -= gameObj.tw.GetComponent<CheckEnemy>().value;
        Debug.Log("金币数-----" + GameData.Instance.money);       
        //实例化
        o = Instantiate(gameObj.tw, hitInfo.collider.gameObject.transform.position + Vector3.up * 2.8f, hitInfo.collider.gameObject.transform.rotation) as GameObject;
        o.transform.parent = hitInfo.collider.gameObject.transform;        
        //销毁旧       
        Destroy(hitInfo.collider.gameObject.transform.GetChild(1).gameObject);
        hitInfo.collider.gameObject.GetComponent<Tower>().isBiuld = true;
        bt.cv.GetComponent<Text>().text = "";
    }

当时我卡在升级操作一整个上午,完全找不到错误,知道某一位神明在冥冥之中点醒了我,原来我之前在上级函数里,写的还是,销毁原来的塔,并实例化level+1的塔,我却忽略了,我是使用Canvas上的Text获取的“塔名”,但是事实上并没有“LvUp”这个塔,所以我在Tower脚本里加了String towername,用来记录基座上面塔的名字(在Biuld里,赋值)。并且在钱不够的return,操作我忘记了把升过的级扣回去,导致出现了,钱不够时点击也会升级底座记录的等级,不过不实例化,然后当你钱够在该塔基座建新塔时,会出现用一级的钱造出2级甚至3级塔的bug(已修复)。

biuld.gif
Up.gif
Destory.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 最近学习到了项目期,分配了组员之后,我们经过一番推敲,决定做一个塔防类型游戏,首先我们先建立了游戏场景(第一关)。...
    貪狼大人阅读 492评论 4 4
  • Unity3D塔防开发流程 配置环境及场景搭建 编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG Mo...
    Grape_葡萄阅读 2,931评论 1 3
  • 下面,我们为游戏加一点变数——天气最初的设想为晴天时,火焰·炮弹防御塔正常运行,弩箭·激光武器威力加1/2,冰塔减...
    貪狼大人阅读 368评论 2 2
  • 现在呢我们来搞一下防御塔对怪物的检测逻辑。首先呢,我想到了触发器检测,并配以一条列表储存在该防御塔射程内的所有敌人...
    貪狼大人阅读 424评论 0 1
  • 首先我们创建GameData脚本用来处理玩家的数据 然后我们创建DataAdpter脚本,用来数据本地化,即在游戏...
    貪狼大人阅读 352评论 0 2