일반적으로 소규모 프로젝트라도 필수적인 모든 게임 플레이 코드를 체계적으로 유지하려면 여러 Lua 스크립트 파일이 필요합니다. 예를 들어 Appkit에는 부트 스크립트뿐만 아니라 부트 스크립트가 필요로 하는 여러 가지 스크립트 모듈도 추가로 포함되어 있습니다.
이 페이지는 자체 스크립트 파일로 게임을 만들고, 해당 파일의 코드가 사용자의 부트 스크립트와 사용자 정의 흐름 노드에 액세스하는 데 필요한 작업을 설명합니다.
Stingray 엔진은 Lua 스크립트를 다른 모든 데이터 파일과 마찬가지로 취급합니다. 사용하려는 다른 리소스와 마찬가지로 스크립트를 리소스 패키지에 포함해야 게임이 이를 런타임 시 메모리에 로드할 수 있습니다.
패키지 정의에 대한 자세한 내용은 런타임 시 컨텐츠 로드 및 언로드를 참조하십시오.
정의된 리소스 패키지에 스크립트를 포함한 다음에는 게임 엔진에 게임 플레이 코드에서 해당 패키지를 언제 로드할 것인지 알려야 합니다.
Lua 스크립트는 일반적으로 크기가 작고 게임 전반에서 유용하므로, 모든 Lua 스크립트를 단일 패키지에 포함하여 초기화 시 모두 로드하기를 원할 수 있습니다. 이렇게 하려면 다음을 수행합니다.
게임 중 다른 시간에 메모리에 다른 스크립트를 사용하려는 경우에는 개별 리소스 패키지로 분리하여 해당 시간에 로드 및 언로드할 수 있습니다. 중요한 점은 Lua 환경으로 로드되었을 경우 해당 스크립트가 이미 메모리에 존재한다는 점입니다(다음 단계 참조).
Lua 파일을 포함한 리소스 패키지를 메모리에 로드한 후에는 게임의 Lua 환경으로 가져올 때까지 해당 Lua 파일에 있는 함수와 데이터를 사용할 수 없습니다.
사용하려면 require() 및 dofile() 같이 파일 해석을 위한 표준 Lua 함수를 호출합니다. Stingray 리소스 ID를 사용하여 Lua 스크립트 파일을 식별하십시오(예: 데이터 디렉토리의 루트를 기준으로 한 파일 경로, 슬래시를 구분자로 사용, 파일 확장자 없음).
이는 일반적으로 초기화 시 이루어집니다. 예를 들어 사용자 정의 부트 스크립트를 사용하는 경우 부트 스크립트나 부트 스크립트에서 필요로 하는 다른 스크립트에서 이 작업을 수행합니다. Appkit을 사용하는 경우 project.lua 스크립트 파일에 수행할 수 있습니다. 그러나 필요한 경우에는 언제든지 새 Lua 스크립트 컨텐츠도 로드할 수 있습니다.
다음 조각은 패키지를 로드하고, 스크립트 파일의 컨텐츠를 가져오고, 마지막으로 종료 시 패키지를 언로드하는 방법을 보여줍니다.
package = nil ... function init() ... package = stingray.Application.resource_package("packages/myScripts") stingray.ResourcePackage.load(package) stingray.ResourcePackage.flush(package) require "main/scripts/gameplay" ... end ... function shutdown() ... stingray.ResourcePackage.unload(package) stingray.Application.release_resource_package(package) ... end