我在1周前用LuaBridge做了第一個小測試,它的工作是從腳本中獲得一個int。LuaBridge getGlobal總是返回零
現在我刪除了這段代碼,並嘗試在我的遊戲引擎中包含Lua腳本,但它不再有效。 我想回去跟這個有基本的代碼:
#include <iostream>
#include "lua5.2/lua.hpp"
#include "LuaBridge/LuaBridge.h"
using namespace luabridge;
int main()
{
lua_State* L;
L = luaL_newstate();
if(!luaL_loadfile(L, "../../script.lua"))
std::cout << "failed loading" << std::endl;
LuaRef s = getGlobal(L, "nmbr");
int luaInt = s.cast<int>();
std::cout << luaInt << std::endl;
return 0;
}
這個腳本
nmbr = 30
,這讓我:
PANIC: unprotected error in cell to Lua API (bad argument #2 (number expected, got nil)) Aborted (core dumped)
它,當我試圖得到相同一個字符串或從腳本中的函數,我不知道我在這做錯了什麼。
謝謝您的回答:)
是的,我閱讀了本教程(這是它在第一個工作的原因,因爲我幾乎複製粘貼它)。但是我對dofile和loadfile之間的差異有一個不好的理解。現在,您和@Youka的回答讓我明白了這個問題以及變量賦值的必要性。非常感謝:) – Adinimys