如何在嵌套在表'A'中的表'B'中使用来自表'A'的值?(lua语言)

在真正的项目中,TEST_TABLE 中将包含许多 TEST_TABLE_NESTED,每个都有自己的 testVariable 和一堆 testScripttestScript 中的 test 函数将在 C++ 代码中使用,TEST_TABLE_NESTED 表格也将从C++代码中自动添加。

TEST_TABLE =
{
    TEST_TABLE_NESTED =
    {
        testVariable = 5,

        testScript =
        {
            test = function()

                print(testVariable, "hello") --如何访问 'testVariable'?

            end
        }
    }
}

编辑: 这是使用此脚本的实际情况:

GameObjectScriptTables =
{
    GameObject_1 = --Container of scripts corresponding to some gameObject
    {
        gameObjectOwner = actual_object_passed_from_c++, --This is an actual object passed from c++

        GameObjectScript_1 = --This is a script with update(dt) method which will be called somwhere in c++ code
        {
            update = function(dt)

                --here I want to use some data from gameObjectOwner like position or velocity

            end
        }
    }

    GameObject_2 =
    {
        gameObjectOwner = actual_object_passed_from_c++,

        GameObjectScript_1 =
        {
            update = function(dt)

                --here I want to use some data from gameObjectOwner like position or velocity

            end
        },

        GameObjectScript_2 =
        {
            update = function(dt)

                --here I want to use some data from gameObjectOwner like position or velocity

            end
        }
    }

    --And so on
}

想法是存在一些 testVariable 对象(从 C++ 传递),其数据在整个 TEST_TABLE_NESTED 中使用。对于我来说,上面的示例对于此任务很自然,但它打印 nil 而不是 5。因此,如何在不打印完整路径(如 TEST_TABLE.TEST_TABLE_NESTED.testVariable)的情况下从 testScript 访问 testVariable

点赞
用户501459
用户501459

你正在寻求类似“父”指针的东西,这可以告诉表B关于表A,但是它不存在。在内部,它们唯一的关联是A的一个值恰好是B,但是任何数量的表格都可以包含B作为一个值。B的父级是哪个?

如果您想让B了解A,您需要告诉它。您可以向“更新”添加一个额外的参数,该参数接收游戏所有者对象,或者“更新”可以是一个包含游戏所有者的闭包,因此等等。

2014-08-13 12:43:23
用户3399810
用户3399810

我通过为每个 GameObjectScript_N 提供一个 gameObjectOwner 实例使其工作。但是我不知道这是否是昂贵的解决方法。

2014-08-13 19:06:23