Unity项目中遇到一个目录下的所有材质的RenderQueue需要批量修改,写一个脚本批处理这个东西,也许以后还会用到。正好项目用到lua有环境,就用lua写了。
--读文件并处理满足条件的一行
function Condition(line)
return string.find(line,"m_CustomRenderQueue") ~= nil
end
function HandleLine(line)
return " m_CustomRenderQueue: 3010"
end
function HandleFile(name)
local file = io.open(name, "r") --Read
local lines = {}
local restOfFile
for line in file:lines() do
if Condition(line) then --Condition
lines[#lines + 1] = HandleLine(line) --Handle
restOfFile = file:read("*a")
break
else
lines[#lines + 1] = line
end
end
file:close()
file = io.open(name, "w") --Write
for i, line in ipairs(lines) do
file:write(line, "\n")
end
file:write(restOfFile)
file:close()
end
--调用HandleFile处理文件
for i = 1,9 do
HandleFile("Aerocraft_00"..i.."\\Materials\\".."Aerocraft_Alpha_00"..i..".mat")
end
for i = 10,99 do
HandleFile("Aerocraft_0"..i.."\\Materials\\".."Aerocraft_Alpha_0"..i..".mat")
end
可能存在性能问题,在文件不多的时候可以忽略,拼文件名也可以用更优雅的写法,先这样吧,解决问题了。