다름이 아니라 SqPlus를 사용해서 바운딩하는데는 성공했지만, 전역 변수를 쓰면 에러가 납니다.
구조는 MFC처럼 이벤트 함수를 불러들이는 방식인데, 이 함수에서 전역 변수를 쓰면... 예를 들어,
local bTestLocal = false;
function OnUpdate( fElapsed )
{
if ( bTestLocal == false )
{
bTestLocal = true;
}
}
.
.
.
SquirrelFunction<void> callFunc( _T( "OnUpdate" ) );
callFunc();
이런 식으로 쓰는데, bTestLocal을 OnUpdate()에서 사용하게 되면 에러를 일으키게 되더라고요.
전역 변수를 쓰는 방법이 없을까요? 제가 생각하기엔, 스택 순서에 관련된 문제인거 같은데 전혀 감이 잡히질 않네요.
도움 부탁드립니다.
bTestLocal <- false; // local bTestLocal = false;
function OnUpdate( fElapsed )
{
if ( bTestLocal == false )
{
bTestLocal = true;
}
}
Squirrel에서 local은 지역변수를 의미합니다.
CompileScript로 스크립트를 불러들이고 RunScript로 실행을 하게되면, local 키워드로 생성된 변수는 스크
립
트가 종료되기 전까지만 유효합니다.
즉 스크립트가 종료되면, 생각하는 것과는 다르게 OnUpdate항목만 남고, bTestLocal 변수는 없어지게 됩니
다. 그 상태에서 Sqplus로 OnUpdate함수를 호출하게 되면, 함수안에 있는 bTestLocal 변수의 경우 유효한
변수가 아니기 때문에 호출에 문제가 생깁니다.
스크립트 호출이 끝나도 유효한 전역변수를 등록하고 사용하려면 " bTestLocal <- false; " 이렇게 선언 하시
면 됩니다.
" <- "키워드는 http://squirrel-lang.org/doc/squirrel2.html#d0e909 에서 확인 하
세
요
SquirrelFunction<void> callFunc( _T( "OnUpdate" ) );
-> 함수를 등록에는 문제가 없습니다.
callFunc(0); // callFunc();
위에 선언한 OnUpdate함수는 fElapsed라는 이름의 매개변수를 필요로 합니다. SquirrelFunction으로 함수
를 만들고 함수를 호출할 때 매개변수에 값을 넣어야 합니다.
감사합니다. 이렇게 빨리 답변을 주시다니...
다시 한 번 찬찬히 매뉴얼을 읽어야 겠네요...
PS. 함수호출에서 매개변수를 빼먹은건 오타... ^^;; 소스가 회사에 있고 집에서 작성한 스레드라...