Skip to content

MOD、组件介绍

1. 什么是MOD

MOD(模组)就像是给游戏准备的 “超级补丁”。想象一下,你有一个自己很喜欢的玩具(游戏),但是玩了一段时间后,觉得它还可以有一些新玩法或者新样子。MOD(模组)就是能帮你实现这个想法的东西。

在迷你世界里面,你可以通过模组给游戏添加各种各样的新东西,比如新的物品、方块、生物、地形等,让你有更多的素材去建造和探索。

你还能改变游戏的玩法规则,像把生存模式变得更难或更简单,另外还可以提升游戏的画面效果,让游戏里的世界看起来更漂亮、更真实,比如有更好的光影效果、更精美的材质等。甚至还能为你提供一些实用的工具和功能,比如方便的背包整理、地图导航、物品合成提示等。

多个模组还可以整合到一个地图里,融合成一个定制化的冒险世界。

那MOD是如何通过编辑器制作的呢?


2. 编辑器搭建一个“舞台”

游戏世界是一个舞台,可以把编辑器想象成一个搭建舞台(游戏世界)的工具。

首先,这个舞台有一个很大的空间,这个空间可能有各种各样的天气、时间变化、以及不同的灯光效果等,这个称为**“环境”**。

在这个空间里,你可以放置各种各样的东西,比如角色(像游戏里的英雄、怪物)、道具(武器、药品)、建筑(城堡、房屋)等。这些东西都被称为 游戏**“对象”**。例如,你要制作一个简单的冒险游戏,你可以先在这个 “舞台” 上放置一个代表玩家角色的游戏对象,再放置一些代表敌人的游戏对象,以及一些地牢、城堡、灯笼等作为场景装饰。

**“UI界面”**就像是游戏世界里的一个特殊区域,这个区域是专门为玩家和游戏进行交互而设立的。可以把它看作是一个操作控制台,上面有各种按钮、滑块、输入框等,就像我们生活中电器的遥控器一样。

上述所说的环境、对象、UI界面,对应在迷你世界里是这样的。


3. 组件是演员的技能和装备

每个游戏对象就像一个演员,它们有自己的 “技能” 和 “装备”,这些被称为 “组件”

比如,对于玩家角色这个游戏对象,它可能有一个物理组件,开启了 “碰撞事件”,这就好比演员有了触觉,能够感知自己什么时候碰到了其他东西。如果玩家角色碰到了敌人,就可以通过这个组件来检测到碰撞,然后触发战斗场景。

通过模型组件,我们可以更改演员的外观以及物品的材质贴图。另外,游戏对象还可以有 触发器组件,这就像是演员的大脑,能够让它按照你编写的规则来行动,比如让玩家角色在按下某个按键时跳跃或者攻击。


4. 触发器、Lua是演员的表演指导

触发器、Lua是工具中非常重要的部分,它就像是给游戏对象(演员)的表演指导。例如,你写了一个逻辑,告诉玩家角色,当按下键盘上的 “W” 键时,就向前移动。这个逻辑会被附加到玩家角色这个游戏对象的 “自定义组件” 上。

而且逻辑还可以控制游戏对象之间的交互。比如,你可以写一个脚本,当玩家角色碰到一个金币道具(另一个游戏对象)时,就把金币的数量加 1,同时让金币消失。这样,通过逻辑,游戏中的各种游戏对象就能够按照你想要的方式进行互动,让游戏变得更加有趣。


5. 世界编辑

点击玩法,我们可以对世界进行基本设定。包括对时间、天气、天空盒、滤镜、音乐音效、生物生成规则、开局设定、重生规则、界面等等基本设置。

另外在资源背包里,仍有一部分内容也属于这个世界的运转规则和资源,我们导入或编辑之后,可以使用触发器或者组件来调用他们。

其中配方和熔炼属于迷你世界冒险里面的特有规则,配方是工作台或者秘银锅等的合成配方配置,而熔炼则是配置冶炼台的可燃烧材料、冶炼材料和熔炼产出。


6. 组件编辑

进入对象或者世界编辑后,我们可以看到它们身上都挂载了许多组件。这些组件可以控制对象的外观、属性、物理特性、行为逻辑等等,给“舞台”上的“演员”赋予了生命。

官方提供了一些封装好的组件,我们可以通过组件面板直接更改对象的属性。也可以卸载掉一些不需要使用的组件。

如果官方组件不能满足需求,我们也可以通过添加触发器组件/脚本组件来制作新的组件。(对于高手来说,通过把同类型的逻辑封装成组件,可以让我们的代码更加精简易于管理。)如果不了解触发器可以查看 触发器文档

例如:我们制作一个掉落物组件,来设置不同的生物被击败后,掉落不同的物品。

lua
local Script = {}

--属性定义
Script.propertys = {
    varNum = {
    	type = Mini.Number, --定义了一个数值类型的参数
    	default = 2,--默认值
    	displayName = "掉落物数值",
    },
    varItem = {
    	type = Mini.Item,-- --定义了一个道具类型的参数
    	default = 11668,-- 默认值
    	displayName = "掉落物道具",-- 属性别名
    },
}

-- 组件启动时调用
function Script:OnStart()
    -- 监听个体事件 当此对象被击败时触发
    self:AddEvent(ObjectEvent.ObjectDie, self.OnObjectDie)
    -- ObjectEvent.ObjectDie为官方事件,可以在wiki的事件库中查看更多事件
    -- self.OnObjectDie 为下方自定义的一个函数
end

function Script:OnObjectDie(event)
    -- 定义此生物死亡时的动作
    GameObject:CreatePrefab(ObjType.DropItem, self.varItem, event.x,event.y+1,event.z, self.varNum)  
    -- 预制体类型:ObjType.DropItem 为掉落物,可以在wiki中查看其他类型
    -- 掉落物类型:self.varItem从属性面板读取创建的道具类型
    -- 事件中的位置: event.x,event.y+1,event.z, event.y+1让创建的高度必死亡的高一格
    -- 掉落物数量:self.varNum从属性面板读取创建的掉落物数量
end

return Script

完整视频教程

所有自定义的组件,除了在编辑对象时使用之外,还可以在资源背包里统一编辑管理。(此处编辑组件,会影响所有调用了这个组件的对象)

接下来,你可以继续学习Lua语言的基础语法,也可以阅读详细的迷你世界API接口