Skip to content

对象模块管理接口 GameObject

具体函数名及描述如下:

序号函数名函数描述
1FindObject(...)根据ID查找游戏对象
2FindUIObject(...)获取UI对象
3FindBlockObject(...)查找方块类别对象
4CreatePrefabInst(...)使用预制ID创建对象
5CreatePrefab(...)创建对象列表
6Destroy(...)删除对象
7GetObjectPrefab(...)获取对象预制ID

FindObject

  • 参数及类型:
    • id:number,string游戏对象唯一标识
  • 返回值及类型:
    • obj:object游戏对象;未找到返回nil
  • 该方法的其他说明: 根据ID查找游戏对象
  • 具体使用案例如下:
lua
    local uiObj = GameObject:FindObject("7482986899365911542-22886")

    if uiObj then

        print("找到ui界面对象")

    end

    local hostUin = Player:GetHostUin()

    local player = GameObject:FindObject(hostUin)

    if player then

        print("找到玩家对象")

    end

FindUIObject

  • 参数及类型:
    • id:number,stringUI对象唯一标识
  • 返回值及类型:
    • obj:objectUI游戏对象;未找到返回nil
  • 该方法的其他说明: 根据ID查找UI游戏对象
  • 具体使用案例如下:
lua
local obj = GameObject:FindUIObject(id)

FindBlockObject

  • 参数及类型:
    • id:number,string方块类型ID
  • 返回值及类型:
    • obj:object方块类别对象;未找到返回nil
  • 该方法的其他说明: 根据方块类型ID查找方块类别对象
  • 具体使用案例如下:
lua
    -- 方块对象接口只能查找到编辑过的方块或是自定义的方块

    --获取方块类型对象(场景中至少有个方块才能获取到)

    local blockObj = GameObject:FindBlockObject("r0_7495946400275515402_23048") 

    if blockObj then

        print("找到方块对象")

    end

CreatePrefabInst

  • 参数及类型:
  • 返回值及类型:
    • obj:object创建的游戏对象;失败返回nil
  • 该方法的其他说明: 在指定世界坐标使用预制体ID创建单个对象,可通过GetId()获取objId
  • 具体使用案例如下:
lua
    -- 创建场景中对象类型预制

    local obj = GameObject:CreatePrefabInst("r1_7482990429829028854_22890", WorldId, 10,8,10)

    if obj then

        local hpCmp = obj:GetComponent("HP") -- 获取血量组件

        if hpCmp then

            hpCmp.hp = 120 -- 设置血量

        end

        print("创建预制成功")

    end

CreatePrefab

  • 参数及类型:
  • 返回值及类型:
    • objids:table创建对象列表(安全对象);失败返回nil
  • 该方法的其他说明: 在指定位置按类型与预制ID创建多个对象,返回对象列表,可用GetId()获取每个对象的objId
  • 具体使用案例如下:
lua
    -- 创建游戏内预设的生物2只

    local objs = GameObject:CreatePrefab(ObjType.Mob, 3400, 10,8,10, 2, true, WorldId)

    if objs and #objs > 0 then

        -- obj.transform:SetPosition(10,8,10) -- 设置位置, 等同上面创的位置参数操作

        for _, obj in ipairs(objs) do

            local objid = obj:GetId() -- 获取对象的objid

            local hpCmp = obj:GetComponent("HP") -- 获取血量组件

            if hpCmp then

                hpCmp.hp = 120 -- 设置血量

            end

        end

        print("创建游戏内生物成功")

    end

    -- 创建自定义生物 1只

    local customObjs = GameObject:CreatePrefab(ObjType.Mob, "r1_7482990429829028854_22890", 10,8,13, 1, true, WorldId)

    if customObjs and #customObjs > 0 then

        print("创建自定义生物成功")

    end

Destroy

  • 参数及类型:
    • objId:number,string对象ID
  • 返回值及类型:
  • 该方法的其他说明: 销毁指定ID的游戏对象(玩家、方块、世界、UI对象不可删除)
  • 具体使用案例如下:
lua
    local objid = nil

    local obj = GameObject:CreatePrefabInst("r1_7482990429829028854_22890", nil, 10,8,10) --创建一个生物

    if obj then

        -- 删除对象

        objid = obj:GetId()

        GameObject:Destroy(objid)

        -- obj:Destroy() 对象的也可以直接调用Destroy删除

    end

GetObjectPrefab

  • 参数及类型:
  • 返回值及类型:
    • id:number,string预制ID
    • num:number对象类型(多返回值);失败返回nil
  • 该方法的其他说明: 获取对象的预制ID及对象类型(掉落物、投掷物、生物等可用)
  • 具体使用案例如下:
lua
local id,num = GameObject:GetObjectPrefab(objId)