unity-实时调试某个lua类的方法
- 一般情况下,修改lua后都要重新启动unity编辑器才有效。如果只是调试某几个方法时,修改后又要重启也是有点蛋疼
- 辣么这时候以下方法就有效了。
前篇
这个是给QC做个rpc上行测试时,发现也可以这么玩。
原理很简单,就是使用lua的dofile加载并执行某个lua文件,在这个lua文件中,重写需要调试的方法。
***需要注意上下文的环境 ***
正确的姿势
卸载 lua, 然后再 require 进来
1 | local function testPatch() |
比较挫的方法
重写前的 bubble_chat.lua
1
2
3
4
5
6
7
8
9CBubbleChat = class()
CBubbleChat.Init = function(self)
self._test1 = "hello world"
end
CBubbleChat.SetFollowTarget = function(self)
Logger.debug("--- <color=yellow>CBubbleChat</color>\n{0}", debug.traceback("SetFollowTarget", 2))
end- 执行结果
- 执行结果
在待执行的lua文件 q6rpc.lua 中重写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15local function send(upRpcName, args)
end
-- 此文件必须放在D盘根目录,切文件名为q6rpc.lua
local CBubbleChat = Import("logic/ui/chat/bubble_chat").CBubbleChat
CBubbleChat.SetFollowTarget = function(self)
print("--- 我勒个去之"..self._test1)
end
-- local gUpRpcName = "rpc_server_add_friend"
-- local gArgs = {111, 222}
-- xpcall(send, __G__TRACKBACK__, gUpRpcName, gArgs)dofile一下这个文件
1
2
3
4CUIChatLogic.ExeFile = function(self)
local path = "D:/q6rpc.lua"
dofile(path)
end再次执行到这个方法的结果