当前位置: 首页 > news >正文

用网站做邮箱河北网站建设和运营

用网站做邮箱,河北网站建设和运营,微信公众号推广目的,中山一站式营销推广平台最终效果 系列导航 文章目录 最终效果系列导航前言方法一、使用excel配置表excel转txt文本读取txt数据按配置信息生成僵尸 方法二、使用ScriptableObject 配置关卡信息源码结束语 前言 本节主要是推荐两种实现配置关卡信息#xff0c;并按表生成僵尸和关卡波次 方法一、使用…最终效果 系列导航 文章目录 最终效果系列导航前言方法一、使用excel配置表excel转txt文本读取txt数据按配置信息生成僵尸 方法二、使用ScriptableObject 配置关卡信息源码结束语 前言 本节主要是推荐两种实现配置关卡信息并按表生成僵尸和关卡波次 方法一、使用excel配置表 前面我们只是简单的随机生成僵尸实际关卡编辑肯定不可能按这种方式这里教大家一个读取excel配置表的方法具体可以参考我之前的文章这里就不过多介绍了【unity小技巧】unity读excel配置表操作excel转txt文本并读取txt文本内容实例说明 excel转txt文本 比如配置表大概样式 level.xlsx 转换为txt文本后效果 读取txt数据 新增GameConfigData游戏配置表类每个对象对应一个txt配置表 public class GameConfigData {// 存储配置表中的所有数据private ListDictionarystring, string dataDic;// 构造函数参数为字符串public GameConfigData(string str){// 初始化数据字典dataDic new ListDictionarystring, string();// 按换行符切割字符串string[] lines str.Split(\n);// 第一行是存储数据的类型string[] title lines[0].Trim().Split(\t);//tab切割// 从第三行下标为2开始遍历数据第二行数据是解释说明for (int i 2; i lines.Length; i){// 创建新的字典存储每行数据Dictionarystring, string dic new Dictionarystring, string();// 按tab切割每行数据string[] tempArr lines[i].Trim().Split(\t);// 将切割后的数据添加到字典中for (int j 0; j tempArr.Length; j){dic.Add(title[j], tempArr[j]);}// 将字典添加到数据列表中dataDic.Add(dic);}}// 获取所有行的数据public ListDictionarystring, string GetLines(){return dataDic;}// 根据ID获取一行数据public Dictionarystring, string GetOneById(string id){// 遍历数据列表for (int i 0; i dataDic.Count; i){// 获取当前字典Dictionarystring, string dic dataDic[i];// 如果字典中的ID与参数相同返回该字典if (dic[Id] id){return dic;}}// 如果没有找到返回nullreturn null;}// 根据levelId获取数据public ListDictionarystring, string GetListByLevelId(string levelId){ListDictionarystring, string levelList new ListDictionarystring, string();// 遍历数据列表for (int i 0; i dataDic.Count; i){// 获取当前字典Dictionarystring, string dic dataDic[i];// 如果字典中的levelID与参数相同if (dic[levelID] levelId){// 将字典添加到数据列表中levelList.Add(dic);}}return levelList;} }新增GameConfigManager代码如下 // 游戏配置管理类 public class GameConfigManager {public static GameConfigManager Instance new GameConfigManager();private GameConfigData levelData;//关卡数据// 文本资源private TextAsset textAsset;// 初始化配置文件txt文件 存储到内存public void Init(){// 加载关卡数据textAsset Resources.LoadTextAsset(Data/level);levelData new GameConfigData(textAsset.text);}// 获取关卡行数据public ListDictionarystring, string GetLevelLines(){return levelData.GetLines();}// 根据ID获取关卡数据public Dictionarystring, string GetLevelById(string id){return levelData.GetOneById(id);}//根据关卡id获取数据public ListDictionarystring, string GetLevelList(string levelId){return levelData.GetListByLevelId(levelId);} }按配置信息生成僵尸 修改GameManager初始化配置表信息并获取当前关卡数据 public int curLevelId 1; //当前关卡 public int curProgressId 1;//当前进度 public ListDictionarystring, string listData;//当前关卡数据private void Awake() {Instance this;//初始化配置表GameConfigManager.Instance.Init();//获取当前关卡数据listData GameConfigManager.Instance.GetLevelList(curLevelId.ToString()); }修改GenerateZombies调用配置表信息并使用 public class GenerateZombies : MonoBehaviour {public static GenerateZombies Instance { get; private set; }public ListGameObject curProgressZombie;//保存当前进度的敌人int zOrderIndex 0;//排序private void Awake(){Instance this;}private void Start(){curProgressZombie new ListGameObject();TableCreateZombie();}//生成僵尸private void TableCreateZombie(){//判断是否是最后一波敌人如果表格中当前进度没有可以创建的敌人及游戏胜利bool canCreate false;//获取当前关卡数据GameManager.Instance.listData.ForEach(data {//属于当前进度的僵尸if (data[progressId] GameManager.Instance.curProgressId.ToString()){//延迟一段时间创建僵尸StartCoroutine(ITableCreateZombie(data));//代表当前进度有敌人canCreate true;}});if(!canCreate){StopAllCoroutines();//停止所有的携程//TODO:游戏胜利处理Debug.Log(游戏胜利);}}IEnumerator ITableCreateZombie(Dictionarystring, string levelItem){yield return new WaitForSeconds(float.Parse(levelItem[createTime]));//加载预制件从Resources文件夹中加载例如Zombie1GameObject zombiePrefab Resources.Load(Prefabs/Enemy/Zombie levelItem[zombieType]) as GameObject;//生成僵尸实例GameObject zombie Instantiate(zombiePrefab);//根据配表的生成位置找到父物体Transform zombieLine transform.GetChild(int.Parse(levelItem[bornPos]));zombie.transform.parent zombieLine;zombie.transform.localPosition Vector3.zero;zombie.GetComponentSpriteRenderer().sortingOrder zOrderIndex;zOrderIndex ;curProgressZombie.Add(zombie);}//消灭敌人public void ZombieDied(GameObject gameObject){if(curProgressZombie.Contains(gameObject)){curProgressZombie.Remove(gameObject);}//当前进度的僵尸全部消灭了开启下一个进度if(curProgressZombie.Count 0){GameManager.Instance.curProgressId 1;TableCreateZombie();}} }修改Zombie里的OnDie方法消灭敌人时调用下面代码控制游戏进度变化 GenerateZombies.Instance.ZombieDied(gameObject);记得配置敌人信息 效果可以看到僵尸按配置表在指定位置逐渐生成 方法二、使用ScriptableObject 配置关卡信息 前面的excel转txt配置表使用比较方便如果你觉得太复杂并不理解他的用法。那也没关系这里推荐另一种方法使用ScriptableObject 做配置关卡信息省去了读excel和txt的步骤也能实现一样的效果 新增LevelData using System.Collections.Generic; using UnityEngine;[CreateAssetMenu(fileName LevelData, menuName LevelData, order 0)] public class LevelData : ScriptableObject {// 存储关卡数据的列表public ListLevelItem levelDataList new ListLevelItem(); }// 表示单个关卡的数据 [System.Serializable] public class LevelItem {public int id; // 关卡IDpublic int levelId; // 等级IDpublic int progressId; // 进度IDpublic int createTime; // 创建时间public int zombieType; // 僵尸类型public int bornPos; // 出生位置// 自定义的ToString方法用于返回关键信息的字符串表示overridepublic string ToString(){return [id]: id.ToString();} }配置和excel表基本一样然后再去获取这个LevelData 使用即可使用方法和前面类似这里就不多介绍了 源码 源码不出意外的话我会放在最后一节 结束语 赠人玫瑰手有余香如果文章内容对你有所帮助请不要吝啬你的点赞评论和关注以便我第一时间收到反馈你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法也欢迎评论私信告诉我哦 好了我是向宇https://xiangyu.blog.csdn.net 一位在小公司默默奋斗的开发者出于兴趣爱好最近开始自学unity闲暇之余边学习边记录分享站在巨人的肩膀上通过学习前辈们的经验总是会给我很多帮助和启发php是工作unity是生活如果你遇到任何问题也欢迎你评论私信找我 虽然有些问题我也不一定会但是我会查阅各方资料争取给出最好的建议希望可以帮助更多想学编程的人共勉~
http://www.dnsts.com.cn/news/104680.html

相关文章:

  • 2015做那些网站致富wordpress 转node
  • 教育网站网址广州工商注册地址
  • 网站查询工具seo网站开发架构分类
  • 做网站怎么去工信部缴费小学网站模板下载
  • 网站出现404网站建设dream
  • 企业做网站一般多少钱龙岩网站制作公司
  • 网站开发好学嘛做电影网站服务器
  • 长沙城市建设档案馆网站网站建设企业需要符合哪些建
  • 企业门户网站属于什么层wordpress给博客主题添加自定义主题设置页面
  • 广州市网站建设公网站备案是不是就是空间备案
  • 做网站代理商好赚吗建网站的公司
  • 搜狗官方网站腾讯云做网站步骤
  • windows做网站的工具网站的建设方式有哪些
  • 国外对旅游网站建设的现状国外扁平化网站设计欣赏
  • 网站制作 那种语言好旅游网络营销的渠道有哪些
  • 苏州专业网站seo推广广州网站设计公司兴田德润活动
  • 怎么做网站竞价推广给公司做网站和公众号需要多少钱
  • 自己做网站做什么内容宁波公司网站建设
  • 厦门做网站公司哪家好php网站开发需要学什么软件
  • 那些网站企业可以免费展示app软件程序开发
  • 查询网站是否正规网站怎么登陆后台
  • 多层分销网站建设软件平台公司
  • 深圳建网站哪个公司h5制作软件是什么
  • 完整php网站开发网站程序购买
  • 怎么写公司网站的文案赣州市微语网络科技有限公司
  • 泰州网站关键词优化软件咨询网站微信建设方案
  • 汕头网站快速排名提升网络公司排名及利润
  • 广州正规网站建设企业网站域名后缀cc
  • win本地网站建设搜狗推广后台登录
  • 三门峡住房和建设局网站上海建工网站