拾取物品添加到背包(Lua)

1.物品是由配置表xml 生成的拾取物品添加到背包(Lua)_第1张图片使用Lua语言读取Xml配置表进行解析 点击地面的cube 生成物品到背包当中

require("UnityUtil")
local  drag={}
--两个总表
local Bagdata={}
local EquipData={}
--因为是随机一个物品  需要一个时间戳
math.randomseed(os.time())
function drag:OnStart()
--要生成的在那个节点下面相当 父亲类
cont=self.cont.transform
--读取xml 文件的路径 注意把xml  文件放在Lua 文件夹下面
local xmlfile=System.IO.File.ReadAllText(UnityEngine.Application.dataPath.."/Lua/XMLBag.xml")
    print(xmlfile)
    --开始解析xml 
    local  datapath=xml:ParseXmlText(xmlfile)
    print(datapath)
    --获取xml的根节点
    local  length=#datapath.Doucument.items
    print(length)
    --遍历它的长度
    for i = 1, length do
        local equip = {}
        --一个背景格子 一张物品图片  添加到一张表当中
        equip.item = datapath.Doucument.items[i].item:value()
        equip.it = datapath.Doucument.items[i].it:value()
        --添加到表当中
        table.insert(EquipData, equip)
    end

end
function  drag:OnUpdate()

    if Input.GetMouseButtonDown(1) then
        ray=UnityEngine.Camera.main:ScreenPointToRay(Input.mousePosition)
        local  ok,hit=UnityEngine.Physics.Raycast(ray,nil)
        if ok then
            if hit.collider.name=="Cube" then
                GameObject.Destroy(hit.collider.gameObject)
                --随机一个物品
                local index = Mathf.Random(1, #EquipData)
                --添加到背包当中
                table.insert(Bagdata,EquipData[index])
                local ge=Resources.Load("bk1")
                local  geinstant=GameObject.Instantiate(ge,cont,false)
                local res=Resources.Load(EquipData[index].it,typeof(UnityEngine.Sprite))
                geinstant.transform:Find("prefab"):GetComponent(typeof(UI.Image)).sprite=res
            end
        end
    end
end

return drag

拾取物品添加到背包(Lua)_第2张图片

你可能感兴趣的:(Lua,UnIty)