Skip to content

对象介绍

概述

对象是组件逻辑的载体, 对象上可以挂载多个组件。目前对象类型有:世界、ui、方块、玩家、生物、实体、投掷物、区域、位置、掉落物

注意:不同对象类型上的组件限制不一样

  • 世界对象/ui对象: 可以使用触发器事件,其他对象只能使用个体对象事件
  • 方块对象:方块上的组件只能使用位置去操作方块,方块并没有每个方块都独立实例化,一个类别只实例一个
  • ui对象:每个ui工程只有一个实例,每个玩家没有独立实例界面,组件上需要根据玩家去操作
  • 道具目前不支持挂组件,只能使用各种自定义效果

对象的API函数(注意:不是所有对象类型都有全部接口)

序号函数名函数描述
1GetId(...)获取游戏对象id
2GetObjType(...)获取对象类型
3IsValid(...)判断对象是否有效
4AddComponent(...)在对象上添加指定组件
5RemoveComponent(...)删除对象上的指定组件
6GetComponent(...)获取对象上的指定组件
7Destroy(...)销毁对象

GetId

  • 参数及类型:
  • 返回值及类型:
  • 该方法的主要作用: 获取该对象实例id
  • 具体使用案例如下:
lua
    local Script = {}

    -- 组件启动时调用
    function Script:OnStart()
        -- 该组件挂载的对象实例
        local object = self:GetGameObject()

        if object then
            local id = object:GetId()
            print("id", id)
        end
    end
    
    return Script

GetObjType

  • 参数及类型:
  • 返回值及类型:
    • ret: ObjType 对象类型枚举
  • 该方法的主要作用:获取对象类型
  • 具体使用案例如下:
lua
    local Script = {}

    -- 组件启动时调用
    function Script:OnStart()
        -- 该组件挂载的对象实例
        local object = self:GetGameObject()

        if object then
            local objType = object:GetObjType()
            print("objType", objType)
        end
        
    end
    
    return Script

IsValid

  • 参数及类型:
  • 返回值及类型:
  • 该方法的主要作用: 获取对象是否有效
  • 具体使用案例如下:
lua
    local Script = {}

    -- 组件启动时调用
    function Script:OnStart()

        -- 获取对象
        local object = GameObject:FindObject("对象id")

        -- 判断对象是否有效
        if object and object:IsValid() then
            -- do something
        end
        
    end
    
    return Script

AddComponent

  • 参数及类型:
  • 返回值及类型:
    • ret:component 组件对象
  • 该方法的主要作用:对象上添加组件(对象已经存在相同id组件的则添加不上返回空)
  • 具体使用案例如下:
lua
    local Script = {}

    -- 组件启动时调用
    function Script:OnStart()

        -- 获取世界对象
        local world = GetWorld()

        if world then
            -- 添加组件
            local cmp = object:AddComponent("组件id")
            if cmp then
                print("组件添加成功")
                -- do something
            end
        end
    end
    
    return Script

RemoveComponent

  • 参数及类型:
  • 返回值及类型:
    • ret: 无
  • 该方法的主要作用:删除对象上的指定组件
  • 具体使用案例如下:
lua
    local Script = {}

    -- 组件启动时调用
    function Script:OnStart()

        -- 获取世界对象
        local object = GameObject:GetWorld()

        if object then
            -- 删除组件
            object:RemoveComponent("组件id")
        end
    end
    
    return Script

GetComponent

  • 参数及类型:
  • 返回值及类型:
    • ret: component 组件对象
  • 该方法的主要作用:获取对象上的指定组件
  • 具体使用案例如下:
lua
    local Script = {}

    function Script:OnStart()

        -- 获取世界对象
        local object = GameObject:GetWorld()

        if object then
            -- 获取组件
            local cmp = object:GetComponent("组件id")
            if cmp then
                print("组件获取成功")
                -- do something
            end
        end
    end
    
    return Script

Destroy (注意:世界/ui/方块这3种对象类型没有这个接口)

  • 参数及类型:
    • boolean 是否杀死, 只有生物有效, 默认flase
  • 返回值及类型:
    • ret: 无
  • 该方法的主要作用:销毁对象
  • 具体使用案例如下:
lua
    local Script = {}

    function Script:OnStart()

        --删除其他对象
        local object = GameObject:FindObject("生物id")

        if object then
            object:Destroy(true)
        end

        -- 删除挂载的对象
        local object = self:GetGameObject()
        if object then
            object:Destroy()
        end
    end
    
    return Script