迷你世界UGc3.0脚本Wiki[组件说明]
Skip to content迷你世界UGC3.0脚本WikiMenuOn this pageSidebar Navigation快速入门欢迎MOD、组件介绍什么是Lua编程组件介绍组件说明组件互相操作组件函数组件属性事件触发器事件管理组件事件管理函数库服务模块对象模块管理接口 GameObject角色模块管理接口 Actor玩家模块管理接口 Player生物模块管理接口 Monster方块模块管理接口 Block背包模块管理接口 Backpack界面模块管理接口 CustomUI图文信息模块管理接口 Graphics区域模块管理接口 Area容器模块管理接口 WorldContainer资源模块管理接口 Mod计时器模块管理接口 Timer状态模块管理接口 Buff消息模块管理接口 Chat普通变量数据管理接口 Data数组变量数据管理接口 Array二维表变量数据管理接口 TableKV表变量数据管理接口 Map世界模块管理接口 World道具模块管理接口 Item全局函数全局函数枚举枚举库脚本常见问题开发者常见问题进阶指南全局函数触发器脚本交互对象介绍KV排行榜介绍二维表介绍道具实例更新日志更新日志组件说明组件进入对象或者世界编辑后我们可以看到它们身上都挂载了许多组件。这些组件可以控制对象的外观、属性、物理特性、行为逻辑等等给“舞台”上的“演员”赋予了生命。官方提供了一些封装好的组件我们可以通过组件面板直接更改对象的属性。也可以卸载掉一些不需要使用的组件。如果官方组件不能满足需求我们也可以通过添加触发器组件/脚本组件来制作新的组件。对于高手来说通过把同类型的逻辑封装成组件可以让我们的代码更加精简易于管理。如果不了解触发器可以查看 触发器文档例如我们制作一个掉落物组件来设置不同的生物被击败后掉落不同的物品。lualocal 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.y1,event.z, self.varNum) -- 预制体类型ObjType.DropItem 为掉落物可以在wiki中查看其他类型 -- 掉落物类型:self.varItem从属性面板读取创建的道具类型 -- 事件中的位置 event.x,event.y1,event.z, event.y1让创建的高度必死亡的高一格 -- 掉落物数量self.varNum从属性面板读取创建的掉落物数量 end return Script完整视频教程所有自定义的组件除了在编辑对象时使用之外还可以在资源背包里统一编辑管理。此处编辑组件会影响所有调用了这个组件的对象概述组件依附在对象的逻辑片段不可直接运行需要挂载到对象上才能生效一种组件在同一个对象上只能挂载一个。2.0的脚本功能就等同挂载在世界或者ui对象上的组件。组件的属性示例注意在这里定义的属性数据会自动保存 更多类型参考 属性说明lualocal Script {} Script.propertys { -- 完整定义一个变量数字属性字段为num num { type Mini.Number, -- 属性类型 default 100, -- 默认值 displayName 数字, -- 属性别名 permission CmpProPermission.Private -- 最大值等 其他属性说明配置参考属性说明 }, --大部分属性类型支持简单定义 比如 age 8, str 你好, bool true, color Mini.Color(255, 0, 0, 255), -- 红色 } function Script:OnStart() -- 组件属性的读写示例 -- 修改属性值 self.num 88 --这里 num 属性声明了 permission CmpProPermission.Private 表示该属性是私有的其他组件是无法读写的。组件的属性默认是 Public 公开的。 -- 获取属性变量 if self.num then self.size self.num 1 end end return Script组件的数据存储lualocal Script {} Script.propertys { -- 完整定义一个变量数字属性字段为num num { type Mini.Number, -- 属性类型 default 100, -- 默认值 displayName 数字, -- 属性别名 }, age { type Mini.Number, -- 属性类型 default 100, -- 默认值 displayName 数字, -- 属性别名 isSave false -- 表示不自动存数据每次进游戏或者出了区块重新加载都是默认值 }, } function Script:OnStart() -- 组件存数据除了全局kv变量等变量库的方式还有组件属性本身也是会自动落地只有声明了isSave false 不保存默认都会存 -- 没有特殊情况尽量用属性存不要用全局变量存这样就不需要自行维护对象是否删除。 -- 数据不希望别人能修改可以设置属性为私有或者只读 end return Script:::组件的生命周期函数示例更多参考 组件函数lualocal Script {} -- 组件启动时调用 function Script:OnStart() --在这个函数初始化监听事件等 -- 监听触发器事件 玩家点击方块事件 self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.OnPlayerClickBlock) end function Script:OnPlayerClickBlock(event) print(玩家点击方块) end --定义了OnTick 则会有驱动。不需要时候尽量不定义tick,提高效率 --定时逻辑可使用定时器代替 function Script:OnTick(dt) end -- 当组件删除 function Script:OnDestroy() end return Script组件函数访问权限配置示例注意 组件函数默认是私有函数开放给其他组件调用时候需要额外配置否则访问不到lualocal Script {} -- 定义组件表 --属性 Script.propertys { -- 完整定义一个变量数字属性字段为num num { type Mini.Number, -- 属性类型 default 100, -- 默认值 displayName 数字, -- 属性别名 -- 最大值等 其他属性说明配置参考属性说明 }, --大部分属性类型支持简单定义 比如 age 8, str 你好, bool true, color Mini.Color(255, 0, 0, 255), -- 红色 } -- 需要开放给别的组件访问的函数需要配置配置后触发器也能访问 Script.openFnArgs { -- 函数开放配置示例 Add { returnType Mini.Number, -- 返回值不填则为无返回值 displayName 函数别名, -- 触发器上显示的别名不填缺省则显示函数名Add params {Mini.Number, Mini.Number},-- 参数列表类型不填则为无参数 }, -- 只想支持其他脚本组件访问不需要支持触发器的简单写法可以直接配置 -- Add true, } -- 函数定义示例 function Script:Add(a, b) if a and b then return a b end end -- 组件启动时调用 function Script:OnStart() -- 调用自己定义的函数示例 ps:调用本组件的函数不需要任何配置 local result self:Add(1, 2) print(result, result) end return Script -- 返回组件定义的表组件的相互操作示例lua-- 组件A local Script {} -- 定义组件表 -- 需要开放给别的组件访问的函数需要配置配置后触发器也能访问 Script.openFnArgs { -- 函数开放配置示例 Add { returnType Mini.Number, -- 返回值不填则为无返回值 displayName 函数别名, -- 触发器上显示的别名不填缺省则显示函数名Add params {Mini.Number, Mini.Number},-- 参数列表类型不填则为无参数 }, -- 只想支持其他脚本组件访问不需要支持触发器的简单写法可以直接配置 -- Add true, } -- 函数定义示例 function Script:Add(a, b) if a and b then return a b end end -- 组件启动时调用 function Script:OnStart() -- 调用自己定义的函数示例 ps:调用本组件的函数不需要任何配置 local result self:Add(1, 2) print(result, result) end return Script -- 返回组件定义的表lua-- 组件B local Script {} -- 定义组件表 -- 组件启动时调用 function Script:OnStart() -- 同对象下操作 -- 获取对象上组件A local cmpA self:GetComponent(组件id) --组件id需要通过迷你世界脚本编辑器顶部选择【ID库】——【组件】插入 -- 调用组件A的函数 local result cmpA:Add(1, 2) print(result, result) -- 跨对象操作 -- 获取一般对象 local obj GameObject:FindObject(对象id) -- 世界对象的获取方式 local world GetWorld() -- 获取对象上组件A local cmpA world:GetComponent(组件id) --组件id需要通过迷你世界脚本编辑器顶部选择【ID库】——【组件】插入 if cmpA then -- 调用组件A的函数 local result cmpA:Add(1, 2) print(result, result) --获取cmpA组件的age属性 local age cmpA.age --设置cmpA的age属性值为123 官方和开发者的操作都是一样的 cmpA.age 123 end end return Script -- 返回组件定义的表组件使用简单示例Last updated: 2026/4/20 10:34PagerPrevious page什么是Lua编程Next page组件互相操作