骑老登游戏开发笔记
  • 介绍
  • 魔兽地图开发笔记
    • 介绍
    • 数据格式
    • 英雄经验值公式
    • 常规制图
      • 修改特效角度
      • 禁止单位攻击物品
      • 多重射击参数设置
      • 修改建筑建造速度
    • 内置Lua制图
      • 黑窗控制台
      • 获取对象物编数据
      • 技能冷却渲染机制
      • 异步计时器
      • UI异步行为转同步
      • UI界面显示与隐藏,菜单按钮的实现
    • 狼魂Lua框架
      • 控制台UI调整
      • 字符串转魔兽ID
      • 创建单位
      • 编辑自定义属性
    • 平台BUG
    • 效率工具
      • 模型批量改名
      • 装饰物物编生成
  • 魔兽Lua
    • 魔兽Lua/UI/基类
  • y3doc/uplib
    • y3doc/uplib/math
    • y3doc/uplib/particle
    • y3doc/uplib/lighting
    • y3doc/uplib/projectiles
    • y3doc/uplib/destructable
    • y3doc/uplib/timer
    • y3doc/uplib/selector
    • y3doc/uplib/ui
    • y3doc/uplib/point
    • y3doc/uplib/player
    • y3doc/uplib/unit
    • y3doc/uplib/item
    • y3doc/uplib/skill
    • y3doc/uplib/buff
  • 代码片段
Powered by GitBook
On this page
  • 准备工作
  • 写法
  1. 魔兽地图开发笔记
  2. 内置Lua制图

UI异步行为转同步

使用内置Lua进行制图时常常需要处理各类本地UI操作,这些操作发生在某个玩家的本机上。

此时为了让这个操作能够被所有玩家都接收到,需要进行消息转发操作。

准备工作

package\plugin\script\ui\server\trigger.lua

检查上述文件中的同步逻辑是否为使用网易同步,如果没有,则修改为使用网易同步,否则会无效。

写法

-- 开头代码:必要的工具引入
local client = require 'ui.client.util'

-- 中间代码:各类UI组件和逻辑
-- (这里略)

-- 结尾代码:注册点击回调事件
local server = require 'ui.server.util'

local event = {
    ['action_select_card_button'] = function(被点击的卡片ID)
        local 玩家句柄 = server.player.handle
        local 玩家ID = GetConvertedPlayerId(玩家句柄)

        print('同步-点击按钮', 被点击的卡片ID, '玩家ID', 玩家ID)
    end,
}

server.register_event('gui_74_3in1', event)

-- 调用处代码:
client.send_message({
    type = 'gui_74_3in1',
    func_name = 'action_select_card_button',
    params = { 被点击的卡片ID }
}, false)
Previous异步计时器NextUI界面显示与隐藏,菜单按钮的实现

Last updated 24 days ago