Skip to content

对象模块管理接口 GameObject ​

具体函数名及描述如下:

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

FindObject ​

  • 参数及类型:
  • 返回值及类型:
    • obj:object游戏对象;未找到返回nil
  • 该方法的其他说明: 根据ID查找游戏对象
  • 具体使用案例如下:
lua
    local uiObj = GameObject:FindObject(uiId)

    if uiObj then

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

    end

    local playerObj = GameObject:FindObject(playerId)

    if playerObj then

        print("找到玩家对象")

    end

FindUIObject ​

  • 参数及类型:
  • 返回值及类型:
    • obj:objectUI游戏对象;未找到返回nil
  • 该方法的其他说明: 根据ID查找UI游戏对象
  • 具体使用案例如下:
lua
        -- uiObjectId 是项目中已有界面的 uiid。

        local result = GameObject:FindUIObject(uiObjectId)

FindBlockObject ​

  • 参数及类型:
  • 返回值及类型:
    • 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, x + 10, y + 1, z + 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, x + 10, y + 1, z + 10, 2, true, worldId)

        if objs and #objs > 0 then

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

            for _, obj in ipairs(objs) do

                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", x + 10, y + 1, z + 13, 1, true, worldId)

        if customObjs and #customObjs > 0 then

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

        end

Destroy ​

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

GetObjectPrefab ​

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