【Aegisub相關(guān)】AUTO4和Lua使用時(shí)的一個(gè)區(qū)別
先貼代碼
Lua寫法
按照Aegisub的AUTO4寫法規(guī)則將如上代碼改寫成下面這樣:
如上AUTO4代碼運(yùn)行時(shí)在Aegisub中會(huì)直接報(bào)錯(cuò),運(yùn)行前是這樣的:

運(yùn)行后:

具體報(bào)錯(cuò)內(nèi)容:

仔細(xì)看報(bào)錯(cuò)內(nèi)容可以發(fā)現(xiàn),attempt to call global 'print' (a nil value) 說明Aegisub的AUTO4在這里直接把print當(dāng)做全局變量來對(duì)待了,這點(diǎn)上跟傳統(tǒng)橫行代碼寫法的Lua腳本相去甚遠(yuǎn),這點(diǎn)要特別注意。另外報(bào)錯(cuò)內(nèi)容中還提到了template expression,這個(gè)是可以直接在Aegisub安裝目錄下的kara-templater.lua當(dāng)中搜expression找到的。

而在獨(dú)立版Lua中運(yùn)行最前面的那段Lua代碼沒有任何問題:

因此,鄙人建議各位朋友自學(xué)Aegisub做ASS特效時(shí),一定要多多關(guān)注AUTO4和Lua代碼運(yùn)行時(shí)的區(qū)別,特別是報(bào)錯(cuò)這塊。
因?yàn)椋珹UTO4實(shí)際上是一個(gè)為了滿足Aegisub的自動(dòng)化特效需求,針對(duì)Lua語言做了較多精簡(jiǎn)(即功能沒有原生lua語言那么完整)的“Lua語言”,在報(bào)錯(cuò)和一些代碼判斷方式上多少跟原生Lua語言有點(diǎn)區(qū)別。這點(diǎn)上給初學(xué)者在報(bào)錯(cuò)自查時(shí)制造了不小的門檻,所以特別把這個(gè)問題單獨(dú)拿出來說明一下,希望后人能在這塊少踩坑。
附上獨(dú)立版Lua程序的下載鏈接:
【W(wǎng)indows專用】獨(dú)立版 Lua 5.1-5.4
github:https://github.com/Seekladoom/Lua-compiled
gitee:https://gitee.com/seekladoom/Lua-compiled