XLua 的async_to_sync使用步骤

1. C#端写一个方法,最后一个需要是Callback, 可以支持带参数

 public static void ShowConfirmBox(string message, string title, Action onFinished = null)

2. 用util.async_to_sync定义一个lua的变量与C#绑定

local sync_confirm = util.async_to_sync(CS.XLuaTest.MessageBox.ShowConfirmBox) 

3. 调用local ret = sync_confirm(message, title), 它的返回值就是1中最后的callback的参数

4. 定义协程方法

local buy = function()
    message_box.alert("您余额不足,请充值!", "余额提醒")
	if message_box.confirm("确认充值10元吗?", "确认框") then
		local r1, r2 = recharge(10)
		print('recharge result:', r1, r2)
		message_box.alert("充值成功!", "提示")
	else
	    print('cancel')
	    message_box.alert("取消充值!", "提示")
	end
	print('recharge finished')
end

5. 启动协程

util.coroutine_call(buy)

 

这时候我们定义的ShowConfirmBox,就相当于是协程阶段的一个步骤,走到这一步就会等待callback才会继续走下去

你可能感兴趣的:(Unity3D)