Appearance
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
完整视频教程
所有自定义的组件,除了在编辑对象时使用之外,还可以在资源背包里统一编辑管理。(此处编辑组件,会影响所有调用了这个组件的对象)