Appearance
组件互相操作
组件的相互操作
示例
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 -- 返回组件定义的表