下载 App

管理员入口可见方案

05/042 浏览综合
当前代码完全没有管理员逻辑——编辑器按钮对所有人无条件可见。让我基于案例经验设计方案。
当前状态 vs 目标
现状目标地图编辑器按钮所有人可见仅管理员可见NPC编辑器按钮所有人可见仅管理员可见进入塔防模式所有人可见不变管理员判定无基于 userId 白名单
核心难点:WASM 下如何拿到 userId案例已经验证过了:方式结果_lobby:GetMyUserId()分享链接下始终返回 0clientCloud.userId多人模式下 clientCloud = nilconnection.identity["user_id"]服务端可靠拿到,需回传给客户端你的 Server.lua 已经在 HandleClientReady 中读取了 connection.identity["user_id"],并存在 connectionUserIds_ 里。差的只是回传给客户端这一步。
设计方案数据流客户端启动 → 菜单渲染(无编辑器按钮)
    │
    ├─ 非联网模式 → 视为开发者预览 → 直接显示按钮
    │
    └─ 联网模式 → 发送 CLIENT_READY
                      ↓
                  服务端收到
                  读取 connection.identity["user_id"]
                  回传 → 新 RemoteEvent "SyncIdentity"
                      ↓
                  客户端收到 userId
                  存入 NetClient.myUserId
                  检查白名单
                      ├─ 是管理员 → 重建菜单,显示编辑器按钮
                      └─ 非管理员 → 无变化
涉及的改动(4 个文件)1. Settings.lua — 加一个 RemoteEvent 名 + 白名单EVENTS 新增:  SYNC_IDENTITY = "SyncIdentity"
ADMIN_IDS = { [你的userId] = true }
只需加两行,白名单集中管理。2. Server.lua — HandleClientReady 中回传 userId现有代码已经读了 connection.identity["user_id"],只需在末尾加一步:通过 SYNC_IDENTITY RemoteEvent 把 userId 发回给该客户端。HandleClientReady 现有流程:
  读 userId ✓
  存 connectionUserIds_ ✓
  DeliverPendingMessages ✓
  → 新增: 发 SYNC_IDENTITY { userId } 给该 connection
3. Client.lua — 接收并存储 userIdClient.myUserId = 0  -- 初始未知
Init() 中订阅 SYNC_IDENTITY:
  收到 → Client.myUserId = data.userId
  → 触发回调通知 main.lua
4. MenuScreen.lua + main.lua — 条件显示编辑器按钮MenuScreen.lua:BuildModeCard 渲染 extraBtns 前检查传入的 isAdmin 标志:现有:  if mode.extraBtns and isEnabled then  -- 无条件渲染
改为:  if mode.extraBtns and isEnabled and options.isAdmin then
main.lua:isAdmin() 函数:
  非联网模式 → true(开发者本地预览)
  联网模式 + NetClient.myUserId == 0 → false(还没收到身份)
  联网模式 + userId 在白名单 → true
  否则 → false
ShowMenu():
  menuRoot_ = MenuScreen.Create(callbacks, { isAdmin = isAdmin() })
NetClient 的 onIdentity 回调:
  if isAdmin() and 当前在主菜单 then
      ShowMenu()  -- 重建菜单,编辑器按钮出现
  end
用户体验时序普通玩家(分享链接)0s    打开游戏 → 主菜单 → 只看到"进入塔防模式"
~3s   服务端回传 userId → 不在白名单 → 无变化
      ✅ 始终看不到编辑器按钮
管理员(分享链接)0s    打开游戏 → 主菜单 → 只看到"进入塔防模式"
~3s   服务端回传 userId → 在白名单 → 菜单重建
      ✅ 编辑器按钮出现
开发者(本地编辑器预览)0s    打开预览 → 非联网模式 → isAdmin() = true → 直接显示编辑器按钮
      ✅ 无需等待
和案例的对比维度案例(壁上题辞)你的项目userId 来源connection.identity["user_id"]相同回传方式SYNC_ALL 中附带 yourUserId独立 SYNC_IDENTITY 事件(更清晰)白名单位置main.lua 顶部常量Settings.lua 集中管理按钮控制主菜单重建MenuScreen 参数化控制兜底逻辑Web+未同步=false非联网=true, 联网+未同步=false案例踩过的坑(userId=0 时兜底返回 true 导致所有人看到按钮)在这个设计中已规避——联网模式下未同步一律 false。
【更新】新增驿站+远征地截图
【更新】新增驿站+远征地
官方
2 回复
🚪【权限申请】传送门截图
🚪【权限申请】传送门
需要把ID发到论坛里(ID在游戏右下角),管理员审批。 这里回帖ID就行
7 赞
131 回复
01:39
【新游】友谊的小船……望官方首推截图
【新游】友谊的小船……望官方首推
Tap平台有大量的‌投资模拟类游戏,谁不想在‌市场中当常胜将军。 但现实中是残酷的,希望这个游戏能让玩家先锻炼好心态,再去博弈 游戏简介: 该游戏是一款以投资市场为背景的心理博弈桌游,核心设计围绕人性弱点(贪婪、恐惧、从众、侥幸、冲动等) 游戏通过大量映射现实市场中的事件,将投资心理陷阱(幸存者偏差、囚徒困境、羊群效应、赌徒谬误、沉没成本、从众心理、社会懈怠、过度自信、锚定效应、确认偏误等)
1 赞
求密码id 如图截图
求密码id 如图
1 赞
1 回复
【看病得花多钱】这是我的一个想法,作为下一个版本的重要功能。
但目前苦于没有各地各级医院的收费数据,如果有朋友能随手告知一二,我都愿意收集起来,形成这个游戏体验功能。截图
【看病得花多钱】这是我的一个想法,作为下一个版本的重要功能。 但目前苦于没有各地各级医院的收费数据,如果有朋友能随手告知一二,我都愿意收集起来,形成这个游戏体验功能。
精华
2 赞
20 回复
拖到合成目标才留位
错误原因 我在上一轮加回收功能时,为了"修位置回正"加了 else 分支:当牌既没拖到回收区、也没合成目标时,强制把牌弹回原位。这破坏了 Stacklands 的基本交互——拖到空地就该留在那里。 -- ❌ 错误版本(多余的 else 导致拖到空地也弹回) if inRecycle and not card.locked then ...回收溶解... elseif self._mergeTar
官方
UI 按键动画设计经验
从 GDScript (Godot Tween) 移植到 UrhoX Lua + raw NanoVG 的完整经验总结。 版本: v0.3.0 | 日期: 2026-07-28 重要:第 1~9 节是"设计理论 + 自建补间引擎"思路(适合理解原理)。 但在《抓周》这类 Boot/Router/EventBus 模板里实测落地时,靠 Update 驱动补间会让按钮不可见、nvgRGBA 整数色会
官方
统一生成素材的话术模板
可以。根据前面对话,建议不要把所有素材塞进同一条模板,因为目前已经形成了两套用途不同、但能共享色彩语言的视觉体系: 抽象概念角色插画:用于“沉没成本、追涨接盘、社会懈怠”等概念角色。 圆形技能徽章图标:用于“紧急避险、控盘信号、护航珍贝”等游戏技能。 下面可以直接保存为项目的统一美术生成规范。 一、统一美术风格总纲 风格名称 金融寓言卡通风 通用风格关键词 卡通手绘风格,金融寓言与社会讽刺主题,粗
官方
任务
当前任务栏共设计了 2 个阶段、7 个任务: --- ### 襁褓 · 初识世界(5个) | # | 任务名 | 描述 | 完成条件 | |---|--------|------|----------| | 1 | 看见万物 | 开启你的人生初体验 | 初始体验包开出 3 张牌 | | 2 | 伸手触碰 | 拖动任意一张牌 | 拖动 1 次 | | 3 | 万物相遇 | 把一张牌放到另一张牌上 |
官方
【更新】增加了一些任务截图
【更新】增加了一些任务
我从故事便签墙中,看到了大多数玩家都在和野兽、疾病博弈中倒下 我这两天补充了一些任务,有关合成物品的为主 在此感谢大伙儿的积极反馈
1 赞
4 回复