使用xlua读取XlsxToLua生成的配置文件
发表于2018-08-06
XLua是腾讯开发分享出来的一个开源项目,主要用于Unity 项目的热更新。下面和大家介绍的是如何使用xlua读取XlsxToLua生成的配置文件。
//LuaDataInfo using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using XLua; public class TableDataHeroPojo { public int HeroId { get; set; } public string Name { get; set; } public int Rare { get; set; } public int Type { get; set; } public int DefaultStar { get; set; } public bool IsOpen { get; set; } //public LitJson.JsonData Attributes { get; set; } } public class LuaDataInfo : MonoBehaviour { string lua_hero = "DataConfig/Hero"; void Start() { LuaEnv luaEnv = new LuaEnv(); //luaEnv.AddLoader(LoadLuaByName); luaEnv.AddLoader(new LuaLoader((ref string filepath) => { filepath = string.Format(GameConfig.LuaLoaderPath, Application.streamingAssetsPath, filepath); if (File.Exists(filepath)) { return File.ReadAllBytes(filepath); } else { return null; } })); string path = string.Format(GameConfig.LuaPath, lua_hero); luaEnv.DoString(path); LuaTable tab = luaEnv.Global.GetInPath<LuaTable>("Hero"); LuaTable hero1 = tab.Get<int, LuaTable>(1); string Name = hero1.Get<string>("name"); int heroId = hero1.Get<int>("heroId"); LuaTable attr = hero1.Get<LuaTable>("attributes"); string desc = attr.Get<string>("petPhrase"); Debug.LogError(" heroId = " + heroId + " ,name = " + Name + " ,pet phrase = " + desc); } public byte[] LoadLuaByName(ref string filepath) { string tempPath = string.Format(GameConfig.LuaDataConfigPath,filepath); if (File.Exists(tempPath)) { return File.ReadAllBytes(tempPath); } else { return null; } } }
-- heroId int 英雄ID -- name lang 英雄名称(仅客户端用) -- rare int 稀有度(11-13) -- type int 英雄职业(1:法师,2:战士,3:牧师,4:勇士) -- defaultStar int 英雄初始星数 -- isOpen bool 当前是否在游戏中开放(即可在英雄图鉴看到,可以被抽卡抽到) -- attributes json 战斗属性 Hero = { [1] = { heroId = 1, name = "英雄法师", rare = 11, type = 1, defaultStar = 1, isOpen = true, attributes = { attack = { physical = 20, magic = 100, canCrit = true, hitRate = 0.9, ult = { [1] = { name = "CoupDeGrace", params = { [1] = "circle", [2] = 1, [3] = 0, [4] = true, }, cd = 5, }, }, }, defence = { physical = 10, magic = 60, }, hp = 200, modelSize = { [1] = 4, [2] = 5, [3] = 10.5, }, petPhrase = "I will kill you!", }, }, [2] = { heroId = 2, name = "英雄战士", rare = 11, type = 2, defaultStar = 1, isOpen = true, attributes = nil, }, [3] = { heroId = 3, name = "英雄牧师", rare = 11, type = 3, defaultStar = 1, isOpen = false, attributes = nil, }, [4] = { heroId = 4, name = "英雄勇士", rare = 11, type = 4, defaultStar = 1, isOpen = false, attributes = { attack = { physical = 140, magic = 0, canCrit = true, hitRate = 0.9, ult = { [1] = { name = "CoupDeGrace", params = { [1] = "sector", [2] = 150, [3] = 0, [4] = true, }, cd = 5, }, }, }, defence = { physical = 40, magic = 0, }, hp = 150, modelSize = { [1] = 3.5, [2] = 4, [3] = 8, }, petPhrase = "Death to all who oppose me!", }, }, }