迷你世界UGC3.0脚本Wiki组件说明
迷你世界UGC3.0脚本Wiki
Menu
On this page
Sidebar Navigation
快速入门
首页组件介绍
MOD、组件介绍
什么是Lua编程
开发者常见问题
组件介绍
组件函数组件属性
全局函数
对象介绍
触发器脚本交互
脚本方法
二维表介绍
组件说明
事件
触发器事件管理组件事件管理
函数库
服务模块
世界模块管理接口 World对象模块管理接口 GameObject
角色模块管理接口 Actor
玩家模块管理接口 Player
生物模块管理接口 Monster
方块模块管理接口 Block
道具模块管理接口 Item
背包模块管理接口 Backpack
界面模块管理接口 CustomUI
图文信息模块管理接口 Graphics
区域模块管理接口 Area
容器模块管理接口 WorldContainer
资源模块管理接口 Mod
计时器模块管理接口 Timer
状态模块管理接口 Buff
消息模块管理接口 Chat
普通变量数据管理接口 Data
数组变量数据管理接口 Array
二维表变量数据管理接口 Table
云服模块管理接口 CloudSever
全局函数
全局函数脚本常见问题
开发者常见问题进阶指南
触发器脚本交互对象介绍
二维表介绍
更新日志
更新日志组件说明
组件
进入对象或者世界编辑后,我们可以看到它们身上都挂载了许多组件。这些组件可以控制对象的外观、属性、物理特性、行为逻辑等等,给“舞台”上的“演员”赋予了生命。官方提供了一些封装好的组件,我们可以通过组件面板直接更改对象的属性。也可以卸载掉一些不需要使用的组件。
如果官方组件不能满足需求,我们也可以通过添加触发器组件/脚本组件来制作新的组件。(对于高手来说,通过把同类型的逻辑封装成组件,可以让我们的代码更加精简易于管理。)如果不了解触发器可以查看 触发器文档
例如:我们制作一个掉落物组件,来设置不同的生物被击败后,掉落不同的物品。
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 为下方自定义的一个函数
endfunction 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从属性面板读取创建的掉落物数量
endreturn Script
完整视频教程所有自定义的组件,除了在编辑对象时使用之外,还可以在资源背包里统一编辑管理。(此处编辑组件,会影响所有调用了这个组件的对象)
概述
组件依附在对象的逻辑片段,不可直接运行,需要挂载到对象上才能生效,一种组件在同一个对象上只能挂载一个。2.0的脚本功能就等同挂载在世界或者ui对象上的组件。
组件的属性
示例注意:在这里定义的属性数据会自动保存, 更多类型参考 属性说明
local Script = {}
Script.propertys = {
-- 完整定义一个变量数字,属性字段为num
num = {
type = Mini.Number, -- 属性类型
default = 100, -- 默认值
displayName = "数字", -- 属性别名
-- 最大值等 其他属性说明配置参考属性说明
},--大部分属性类型支持简单定义, 比如:
age = 8,
str = "你好!",
bool = true,
color = Mini.Color(255, 0, 0, 255), -- 红色
}function Script:OnStart()
-- 组件属性的读写示例-- 修改属性值
self.num = 88-- 获取属性变量
if self.num then
self.size = self.num + 1
endend
return Script
组件的生命周期函数
示例更多参考 组件函数
local Script = {}-- 组件启动时调用
function Script:OnStart()--在这个函数初始化,监听事件等
-- 监听触发器事件 玩家点击方块事件
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.OnPlayerClickBlock)
endfunction Script:OnPlayerClickBlock(event)
print("玩家点击方块")
end--定义了OnTick 则会有驱动。不需要时候尽量不定义tick,提高效率,
--定时逻辑可使用定时器代替
function Script:OnTick(dt)end
-- 当组件删除
function Script:OnDestroy()end
return Script
组件函数访问权限配置
示例注意: 组件函数默认是私有函数,开放给其他组件调用时候需要额外配置,否则访问不到
local 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 -- 返回组件定义的表
组件的相互操作
示例
-- 组件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 -- 返回组件定义的表-- 组件B
local Script = {} -- 定义组件表-- 组件启动时调用
function Script:OnStart()-- 同对象下操作
-- 获取对象上组件A
local cmpA = self:GetComponent("组件A")-- 调用组件A的函数
local result = cmpA:Add(1, 2)
print("result", result)
-- 跨对象操作-- 获取一般对象
local obj = GameObject:FindObject("对象id")
-- 世界对象的获取方式
local world = GetWorld()-- 获取对象上组件A
local cmpA = world:GetComponent("组件A")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
endreturn Script -- 返回组件定义的表
组件使用简单示例
组件简单示例Last updated: 2025/4/27 14:27
Pager
Previous page
二维表介绍
Next page
触发器事件管理