1. C#端写一个方法,最后一个需要是Callback, 可以支持带参数
public static void ShowConfirmBox(string message, string title, Action<bool> 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才会继续走下去