なぜ LUAU を LUA に変換するのですか?
Roblox 以外の標準的な Lua 5.1 インタープリタでスクリプトを実行したり、Luau 以外のプロジェクトで再利用したりするために .LUA に変換することがあります。Luau は Lua を置き換えるのではなく拡張したものであるため、変換作業は主にリネームと追加構文の手動クリーンアップになります。
LUAU から LUA への変換方法
任意のテキストエディター(リネームとクリーンアップ) EASIEST
拡張子を .lua に変更し、型注釈を削除し、バックティック補間を string.format に置き換え、continue をフラグや goto を使って書き換えます。
luau-analyze(非互換性の検出) OPEN-SOURCE
luau-analyze script.luau を実行して型の使用箇所や構文を浮き彫りにし、Lua としてパースできるようにするために何を削除すべきかを正確に把握します。
標準 Lua 5.1(結果のテスト) FREE
クリーンアップ後、lua5.1 script.lua を実行してパースと実行を確認します。残っている Luau 構文があれば、ここでエラーが発生します。
これらの形式について
品質と注意点
- Luau 独自の構文(型注釈、
|/&型ユニオン、文字列補間、continue)は、標準の Lua ではパースできません。 - サンドボックス化された Luau では
io、os、debug、loadstringが削除されています。これらを使用していないコードは、最もスムーズに移植できます。 - Luau から Lua への自動コンバーターは存在しません。編集は手動で行います。
よくある質問
ファイルをリネームするだけでいいですか?
場合によります。スクリプトが Luau の追加機能を含まない純粋な Lua 5.1 であればリネームだけで十分ですが、そうでなければエラーになります。
何が最も頻繁にエラーになりますか?
型注釈とバックティックによる文字列補間です。これらは Luau 専用であり、Lua では無効です。
結果は Roblox で動作しますか?
Roblox は Luau を実行し、Luau は Lua 5.1 のコードを受け入れるため、機能を削ぎ落とした
.lua も引き続き動作します。