容器

1、游戏里看到的可以有格子装东西的都算容器。由容器预制物、容器UI组成,
2、容器注意事项:
容器预制物的名字(Prefab代码)需要和UI名字(container:WidgetSetup())
(params.xxx)三个地方的名字一样,否则会报错如下
"scripts/widgets/containerwidget.lua"]:29: attempt to index local 'widget' (a nil value),

如果不一样,则需要在容器内重新加载UI。代码如下(下面示例代码是没有物品贴图的)

local assets = {
    Asset("ANIM", "anim/misaka_world_ui_container_4x4.zip"),
}
local function fn()
    local inst = CreateEntity()
    inst.entity:AddTransform()
    inst.entity:AddAnimState()
    inst.entity:AddNetwork()

    inst:AddTag("NOBLOCK")
    inst:AddTag("NOCLICK")

    inst:AddTag("misaka_world_sisters_containers_4x4")
    inst.entity:SetPristine()
    
    --重要注释:WidgetSetup那个UI的名字要和容器预制物的代码名字一样,
    -- 否则就需要加OnEntityReplicated这段,重新在预制体内注册容器。
    if not TheWorld.ismastersim then
         inst.OnEntityReplicated = function(inst)
            inst.replica.container:WidgetSetup("misaka_world_sisters_containers_4x4")
        end
        return inst
    end
    inst:AddComponent("inventoryitem") -- 物品组件
    -- inst.components.inventoryitem.imagename = "misaka_world_firesword" 
    -- 这个名字是必须的,否则会出现物品栏没有贴图的情况,
    -- 如果这个贴图只有一个物品使用,不写也可以,但是如果有两个以上的用就必须写。
    -- inst.components.inventoryitem.atlasname =
    -- "images/inventoryimages/misaka_world_firesword.xml" -- 物品贴图
    inst:AddComponent("container")
    inst.components.container:WidgetSetup("misaka_world_sisters_containers_4x4")

    return inst
end

return Prefab("misaka_world_sisters_storage_space", fn, assets)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容