饥荒Mod 开发(二四):制作一把万能工具
在前面的文章介绍了很多和饥荒相关的知识点,做了很多有趣的东西,接下来简单做个总结,总结一下组件的用法
组件用法
一个预制物可以添加多个组件,每个组件会有自己的功能,当你的预制物添加了组件之后, 物品就拥有了这个组件的能力,添加组件很简答
--添加组件
inst:AddComponent(${
组件名})
--调用组件的XXX 方法
inst.components.${
组件名}:XXX()
常用组件
1 可检查
inst:AddComponent("inspectable")
moamain.lua 中设置检查显示提示
-- LIGHTSWORD 是预制物的大写名称
GLOBAL.STRINGS.CHARACTERS.GENERIC.DESCRIBE.LIGHTSWORD = "这是一把光剑"

2 可放入物品栏
--需要先加载资源
local assets=
{
Asset("ANIM", "anim/lightsword.zip"), -- 加载动画资源
Asset("ATLAS", "images/inventoryimages/lightsword.xml"), -- 加载图像资源
}
inst:AddComponent("inventoryitem") -- 添加库存物品组件
inst.components.inventoryitem.atlasname = "images/inventoryimages/lightsword.xml" -- 设置在物品栏的图像

3 可装备
--添加可装备组件
inst:AddComponent("equippable") -- 添加可装备组件
--装备在手上
inst.components.equippable.equipslot = EQUIPSLOTS.HANDS
inst.components.equippable:SetOnEquip(function(inst, owner) -- 设置装备时的回调函数
owner.AnimState:OverrideSymbol("swap_object", "lightsword", "lightsword") -- 设置玩家的动画
owner.AnimState:Show("ARM_carry") -- 显示玩家的手臂
owner.AnimState:Hide("ARM_normal") -- 隐藏玩家的手臂
end)
inst.components.equippable:SetOnUnequip(function(inst, owner) -- 设置卸下时的回调函数
owner.AnimState:Hide("ARM_carry") -- 隐藏玩家的手臂
owner.AnimState:Show("ARM_normal") -- 显示玩家的手臂
end)

4 可当燃料使用
-- 添加燃料组件
inst:AddComponent("fuel")
-- 设置燃料值为100
inst.components.fuel.fuelvalue = 100
-- 设置燃料类型为"BURNABLE"
inst.components.fuel.fueltype = "BURNABLE"

5 防雨
很多装备都可以防雨,比如雨衣,雨伞等
-- 添加防水组件
inst:AddComponent("waterproofer")
-- 设置防水效果为最大
inst.components.waterproofer:SetEffectiveness(TUNING.WATERPROOFNESS_HUGE)

6 防御不同的类型攻击
比如防蜂服可以防御蜜蜂的攻击
-- 添加护甲组件
inst:AddComponent("armor")
-- 初始化护甲的条件,设置为蜜蜂帽的防御值和吸收率
inst.components.armor:InitCondition(TUNING.ARMOR_BEEHAT, TUNING.ARMOR_BEEHAT_ABSORPTION)
-- 设置护甲的标签为"bee",表示可以防御蜜蜂的攻击
inst.components.armor:SetTags({
"bee"})

可堆叠
-- 添加可堆叠组件
inst:AddComponent("stackable"

本文详细介绍了如何在饥荒Mod中使用各种组件,如可检查、库存、装备、燃料、防护等,展示了如何通过组件扩展预制物的功能,包括添加、调用方法以及组件的常见用法和设置。

5724

被折叠的 条评论
为什么被折叠?



