저는 Lua를 스크립팅 언어로 사용하는 C++로 작성된 프로젝트를 진행하고 있습니다. 디버깅을 용이하게하기 위해 우리는 루아 코드를 받아서 실행하고 Json에서 리턴 값을 인코딩 한 다음 그 문자열을 되돌려 보내는 네트워크 디버거를 구현했습니다.C 응용 프로그램에서 userdata의 Lua 변수에 액세스
테이블 용으로 구현했지만 지금은 userdata에 저장된 변수가 붙어 있습니다. 예.
Elements.Avatar.testVar = 5
Elements.testVar = 15
return Elements
// result
{
"result0": "{Application:userdata; Avatar:userdata; Physics:userdata; testVar:15; }"
}
Application
, Avatar
및 Physics
는 C에서 생성 된 개체 ++ :이 루아 코드가 있습니다. 그러나 위의 스크립트에서 두 개의 testVars
이 생성되었습니다. Elements
은 테이블이므로 모든 요소를 나열 할 수 있지만 Avatar
은 LUA_TUSERDATA
이므로 Avatar.testVar
이 숨겨져있는 것 같습니다.
누구나 루아에서 userdata에 추가 된 변수를 어떻게 감지 할 수 있습니까?
좋습니다. 매우 도움이됩니다. C++ 측에서이 값을 나열하려고하는데 문제가되지 않습니다. 저는 OOLUA를 사용하여 루아 구현이 더 쉬워졌고, 이로 인해 userdata 객체와 함께 값을 저장하는 옵션이 언어에 내재되어 있다고 가정하게되었습니다. 그렇다면 Avatar.testVar의 저장 방법을 알아 내기 위해 OOLUA가 제공 한 바인딩 코드를 확인해야합니다. –
@ user2626359 : 아마도 'testVar'는 OOLUA로 노출 한 C++ 클래스의 C++ 변수 이름입니다. 그렇습니까? –