5.数据相关

5.数据相关


5.1 知识点

制作图集,放入道具icon

使用Excel道具表配置道具信息

在转换网站把 Excel 道具表转成 JSON,打包进 AB 包

[
    {"id":1,"name":"弓箭","icon":"Icon_2","type":1,"tips":"威力巨大的武器"},
    {"id":2,"name":"手套","icon":"Icon_1","type":1,"tips":"增强免疫力"},
    {"id":3,"name":"蓝药","icon":"Icon_3","type":2,"tips":"加魔法的药水"},
    {"id":4,"name":"红药","icon":"Icon_4","type":2,"tips":"加血量的药水"},
    {"id":5,"name":"红宝石","icon":"Icon_5","type":3,"tips":"合成高级道具的必备之物"},
    {"id":6,"name":"蓝宝石","icon":"Icon_6","type":3,"tips":"合成高级道具的必备之物"}
]

把json和ui资源打成ab包


打AB包时遇到xLua的报错,需要添加缺失的部分并重新生成xLua代码再打AB包


创建Lua道具表脚本并在Lua主脚本调用,把生成的json配置表读取到并存储到道具表中

ItemData.lua

-- 将Json数据读取到Lua中的表中进行存储

-- 首先应该先把json表 从AB包中加载出来 AB包名是json
-- 加载的Json文件 TextAsset对象
local txt = AssetBundleManager:LoadAssetBundleResource("json", "ItemData", typeof(TextAsset))
print("AB包加载的ItemData.json的值是:"..txt.text)

-- 获取它的文本信息 进行json解析
local itemList = Json.decode(txt.text)

-- 加载出来是一个像数组结构的数据
-- 不方便我们通过 id去获取里面的内容 所以 我们用一张新表转存一次
-- 而且这张 新的道具表 在任何地方 都能够被使用
-- 一张用来存储道具信息的表
-- 键值对形式  键是道具ID 值是道具表一行信息
ItemData = {}
for _, value in pairs(itemList) do
    ItemData[value.id] = value
end

for key, value in pairs(ItemData) do
    print(key,value)
    -- X	table: XXXXXXXXXXXX
end

LuaMain.lua

-- 初始化数据
-- 初始化道具表信息
require("ItemData")

创建Lua玩家数据脚本,创建玩家数据表,提供初始化方法,并在Lua主脚本调用

PlayerData.lua

PlayerData = {}

-- 我们目前只做背包功能 所以只需要它的道具信息即可

-- 三个tab 玩家数据的子表
PlayerData.equips = {}
PlayerData.items = {}
PlayerData.gems = {}

-- 为玩家数据写了一个 初始化方法 以后直接改这里的数据来源即可
function PlayerData:Init()
    -- 道具信息 不管存本地 还是存服务器 都不会把道具的所有信息存进去
    -- 道具ID和道具数量  
        
    -- 目前因为没有服务器 为了测试 我们就写死道具数据作为玩家信息
    table.insert(self.equips, {id = 1, num = 1})
    table.insert(self.equips, {id = 2, num = 1})

    table.insert(self.items, {id = 3, num = 50})
    table.insert(self.items, {id = 4, num = 20})

    table.insert(self.gems, {id = 5, num = 99})
    table.insert(self.gems, {id = 6, num = 88})
end

LuaMain.lua

--玩家信息 
--1.从本地读取  本地存储有几种方式 PlayerPrefs 和 Json 或者 二进制
--2.网络游戏 从服务器获取
require("PlayerData")
PlayerData:Init()


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏