总结一下游戏开发中的Lua日志输出打印方法全集和Lua高级语法

Lua可以断点调试(想当年),但大部分团队大部分程序员还是主要靠日志输出

目录

一般用法

分字段打印

不支持链接布尔值连接,这样写不行的

打印堆栈

各方法详细解释

程序员的个人修养


所以日志挺重要的

一般用法

分字段打印

不知道是不是lua独有,写法比较奔放,无论传参和出参都没限制(无论项目大小,实际使用也明显无什么大问题),下面print_log为自定义扩展方法

对于习惯了 + 号的同学,可能会这么写,明显容易出错,  其中,bundleName非常容易为Nil

print_log("OnSceneLoadProgress -----"..bundleName .." "..1024)

cpp,c++可能会这么写

print_log(string.format("OnSceneLoadProgress ----- %s %d", " ", 1024)

但是Lua是这么写d

print_log("OnSceneLoadProgress ----- ", per_value, " ", debug.traceback())

不支持链接布尔值连接,这样写不行的

print_log("try log 布尔" + bol)

打印堆栈

debug.traceback方法

print_log("OnSceneLoadProgress ----- ", per_value, " ", debug.traceback())

各方法详细解释

程序员的个人修养(高级语法)

(不断补充中,会很慢,很长,很漫长)

其实,你只要在你的lua项目中(10人以上团队)找一下lib,tool,util等关键字,就能看到很多“高级”语法;这是无论百度还是书本都没有的宝贵实践经验

断言Asset

-- 之前有一个同事很喜欢用,对lua语法的掌握还是很有帮助的,只是结合Unity(因为本身有太多封装,也鼓励用plugin)之后有点不太好使,不过用用也无妨

安全调用pcall

pcall(function) 可能会返回:

成功:true和函数的返回值[s] .
失败:错误和错误 .

调用xpcall

SaveCall = {}
function SaveCall.Call(func,par)
	local status,ret = xpcall(func,SaveCall.traceback,par)
	print_log("SaveCall,status="..tostring(status))
	return ret
end

function SaveCall.traceback(err)
	print_error("LUA ERROR: " .. tostring(err))--已经会打印堆栈,而 print_error 这个打印方法你懂的,如果没额外自创建,可以用原生 print 方法
	--print_error(debug.traceback()) --因为哥的框架有做lua 错误爆堆栈,所以无需和网上”一般见识“,这只会多打印一次堆栈
end

调用call

参考书籍

总结一下游戏开发中的Lua日志输出打印方法全集和Lua高级语法_第1张图片

你可能感兴趣的:(程序员瞎折腾,互联网,git,开源,lua)