小白贪狼做塔防(6)

首先我们创建GameData脚本用来处理玩家的数据

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameData : Singleton<GameData> 
{
    public bool isGameOver = false;
    /// <summary>
    /// 场景中防御塔的数量
    /// </summary>
    public int TowerCount = 0;
    /// <summary>
    /// 玩家ID
    /// </summary>
    public int id = 0;
    /// <summary>
    /// 金钱数
    /// </summary>
    public float money = 300;
    /// <summary>
    /// 分数
    /// </summary>
    public float score = 0;
    /// <summary>
    /// 关卡等级
    /// </summary>
    public int level = 1;
    /// <summary>
    /// 水晶血池
    /// </summary>
    public float HP = 100;
    /// <summary>
    /// 怪物生成频率,游戏难度
    /// </summary>
    private float NanDu = 5;

    public void SetData(int id, float money, int level,float score) 
    {
        this.id = id;
        this.money = money;
        this.level = level;
        this.score = score;
        NanDu = NanDu * Mathf.Pow(0.8f,level-1);
        EnemyCreatePos.Instance.CreateSpeed = NanDu;
        GameObject.Find("hp").GetComponent<Text>().text = HP + "";
        GameObject.Find("JinBi").GetComponent<Text>().text = money + "";
        GameObject.Find("level").GetComponent<Text>().text = "LEVEL  " +level + "";
        GameObject.Find("ScoreNum").GetComponent<Text>().text = score + "";
    }

    //高塔血量处理
    public void TakeDamage() 
    {
        HP -= 5;     
        if (HP <= 0) 
        {
            HP = 0;
            isGameOver = true;
            GameMode.Instance.GameOver();
        }
        GameObject.Find("hp").GetComponent<Text>().text = HP + "";
    }

    //金币处理
    public void AddMoney(float num) 
    {
        money += num;
        GameObject.Find("JinBi").GetComponent<Text>().text = money + "";
    }

    public void RemoveMoney(float num) 
    {
        money -= num;
        GameObject.Find("JinBi").GetComponent<Text>().text = money + "";
    }      
        
    //分数处理
    public void DealScore() 
    {
        score += 10;        
        GameObject.Find("ScoreNum").GetComponent<Text>().text = score + "";
        //GameObject.Find("level").GetComponent<Text>().text = "Level  "+level + "";
    }
    //扣分
    public void IncreaseScore()
    {
        score -= 15;
        if (score < 0) 
        {
            score = 0;
        }
        GameObject.Find("ScoreNum").GetComponent<Text>().text = score + "";
    }

    //提示信息

}

然后我们创建DataAdpter脚本,用来数据本地化,即在游戏结束后保存信息

using UnityEngine;
using System.Data;
using Mono.Data.Sqlite;

public class DataAdpter : Singleton<DataAdpter>
{

    public  SqliteConnection Con = new SqliteConnection();
    public  SqliteCommand  Cmd = new SqliteCommand();
    public  DataSet Set = new DataSet();
    public  SqliteDataAdapter  Adp;
    public DataAdpter() 
   {
        Con.ConnectionString = "Data Source = dataP.db";
        Con.Open();
        Cmd.Connection = Con;
    }

    public void CreateTable() 
    {
        //Cmd.CommandText = "create table message(id int(10),money float(20),level int(10),score float(20))";
        Cmd.CommandText = "create table paihangbang(name char(20),score float(20));";
        //Cmd.CommandText = "create table paihangbang(id INTEGER primary key AUTOINCREMENT,name char(20),score float(20))";
        Cmd.ExecuteNonQuery();
    }
 
    public void Add(string name,float score)
    {       
        Cmd.CommandText = "insert into paihangbang(name,score) values('" + name + "',"  +score+ ")";
        Cmd.ExecuteNonQuery();
    }
    //低于最低分的数据删除
    public void Delete(float lowScore,bool po)
    {
        if (po)
        {
            Cmd.CommandText = "delete from paihangbang where score <='" + lowScore + "';";
        }
        else {
            Cmd.CommandText = "delete from paihangbang where score <'" + lowScore + "';";
        }
        
        Cmd.ExecuteNonQuery();
    }

    public void Update(int id,float money,float level,float score)
    {
        //update myte set money = 44 where id = 1;
        //Cmd.CommandText = "update message set money = " + money + ",level = " + level+",score =" +score + " where id = " + id;
        //Cmd.ExecuteNonQuery();
    }
    public ItemData[]  Select()
    {
        Adp = new SqliteDataAdapter ("Select * from paihangbang order by score desc", Con);
        Set = new DataSet();
        Adp.Fill(Set, "paihangbang");
        ItemData[] str = new ItemData[10];
        for (int i = 0; i < str.Length; i++) 
        {
            str[i] = new ItemData();
        }
        if (Set.Tables["paihangbang"].Rows.Count > 0)
        {
            for (int i = 0; i < Set.Tables["paihangbang"].Rows.Count; i++) 
            {
                str[i].name = Set.Tables["paihangbang"].Rows[i]["name"].ToString();
                str[i].score =float.Parse(Set.Tables["paihangbang"].Rows[i]["score"].ToString());
            }
            //str[0] = int.Parse(Set.Tables["paihangbang"].Rows[0]["id"].ToString());
            //str[1] = float .Parse(Set.Tables["paihangbang"].Rows[0]["money"].ToString());
            //str[2]=float .Parse(Set.Tables["paihangbang"].Rows[0]["level"].ToString());
            //str[3] = float.Parse(Set.Tables["paihangbang"].Rows[0]["score"].ToString());
            return str;
        }
        else
        {
            return null ;
        }
    }
    public bool  isTrue()
    {
        string sqlCommandString = @"USE AdventureWorks SELECT name FROM sys.sysobjects WHERE type='U' ORDER BY name";
        //Adp = new SqliteDataAdapter("select * from sqlite_master where type = 'table' and name = 'login'", Con);
        if (sqlCommandString.Equals(null) )
        { 
      
        return true;
        }
        else
        {
            return false;
        }

        Cmd.ExecuteNonQuery();

    }

}

我们来更改一些之前存在的小bug及做一些小改动:
(1)CreatTower脚本:点击图片后,如果点的不是基座,应该清空当前储存的防御塔名字,而不是点了空白后,点击防御塔仍能正常创建。

添加清空代码

(2)EnemyCreatePos脚本,增加随关卡增加怪物生成速度变快的代码,提高难度。

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

推荐阅读更多精彩内容

  • 让我们继续探讨防御塔的建造,升级,卖出建造: 首先,/判断钱够不够/,够的话我们就将基座等级+1,并通过Canva...
    貪狼大人阅读 254评论 1 1
  • 现在我们来探讨怪物的相关事宜:首先我们给怪物加一个EnemyContrl脚本,用来储存怪物的各种属性以及寻路,各种...
    貪狼大人阅读 232评论 0 1
  • 最近学习到了项目期,分配了组员之后,我们经过一番推敲,决定做一个塔防类型游戏,首先我们先建立了游戏场景(第一关)。...
    貪狼大人阅读 492评论 4 4
  • 现在呢我们来搞一下防御塔对怪物的检测逻辑。首先呢,我想到了触发器检测,并配以一条列表储存在该防御塔射程内的所有敌人...
    貪狼大人阅读 424评论 0 1
  • 下面,我们为游戏加一点变数——天气最初的设想为晴天时,火焰·炮弹防御塔正常运行,弩箭·激光武器威力加1/2,冰塔减...
    貪狼大人阅读 368评论 2 2