Lua Scripting Push-функция класса PN.click () - PullRequest
2 голосов
/ 25 декабря 2011

Я включаю сценарии Lua в мою игру для iPhone, и она отлично работает!

По чисто косметическим причинам я хотел бы, чтобы мои функции в Lua были в формате PN.function (),В настоящее время они имеют формат function ().

Я пытался зарегистрировать функцию следующим образом:

lua_register(lua, "PN.Color", Color);

Но она не позволит мне вызвать ее в сценарии Lua.

У кого-нибудь есть предложения?

Спасибо!

Ответили на мой вопрос!

1015 *

1 Ответ

1 голос
/ 25 декабря 2011

Вы не можете использовать . в качестве имени функции в Lua. Если вы пытаетесь поместить все свои функции Lua в глобальную таблицу с именем PN, то вам действительно нужно это сделать.

Помните: lua_register это просто макрос:

 #define lua_register(L,n,f) \
        (lua_pushcfunction(L, f), lua_setglobal(L, n))

Нет ничего, что говорило бы, что вы не могли бы сделать это более конкретно.

Если у вас есть глобальная таблица PN, в которую вы хотите зарегистрировать функции Lua, вы делаете следующее:

  1. Поместите таблицу PN в стек, используя lua_getfield(L, LUA_GLOBALSINDEX, "PN").
  2. Вставьте функцию, которую вы хотите зарегистрировать в стек, с помощью lua_pushcfunction(L, Color).
  3. Поместите функцию в нужное место в таблице, набрав lua_setfield(L, -2, "Color").
  4. Извлеките стол из стека с помощью lua_pop(L, 1).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...