Skip to content

组件互相操作

组件的相互操作

示例

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 -- 返回组件定义的表

组件使用简单示例

组件简单示例