调试与UI
调试与UI(P18-P38) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P18 18 - Hotreload Warning时长 0:26 | B站 P19 19 - Debugging C++ & Blueprints (Logging, Breakpoints, Drawing Debug Shapes) _ T时长 17:39 | B站 P20 20 - Camera Changes & First UMG Widget (Crosshair)时长 5:50 | B站 P21 21 - Assignment 2 (Blackhole Projectile, Dash Ability, Targeting)时长 10:25 | B站 P22 22 - ‘Asserts’ for pro-active detection of bugs时长 7:25 | B站 P23 23 - Attribute Component (RPG-style)时长 ...
蓝图篇
蓝图篇(P13-P17) 课程:使用C++在虚幻引擎中制作游戏(Tom Looman / ActionRoguelike)来源:BV1csHvzzE41 P13 13 - What is Unreal’s Blueprint时长 5:51 | B站 P14 14 - Blueprint Interaction & Casting时长 15:28 | B站 P15 15 - Animating in Blueprint时长 15:05 | B站 P16 16 - Projectile Blueprint & Collision时长 18:45 | B站 P17 17 - Assignment 1 Solution Review时长 10:18 | B站 本文从 LearnByCompany 原始文档 自动同步。
AI方案1
本文从 LearnByCompany 原始文档 自动同步。
ActivityModel
项目确实将原来 7476行 的 NewActivityModel.lua 大文件拆分成了 门面模式 + 17个子Model 的架构: 门面类: ActivityModel.lua (278行) 子Model数量: 17个核心功能模块 + 大量活动实例Model 总Model数量: 约 120+ 个活动相关Model 🔧 核心设计机制1. 子模块注册系统123-- 批量注册事件常量到类表ActivityModel.Events = ActivityModel_EventConstants_RegisterEventConstants() -- 自动挂载所有非函数属性 2. 动态方法注册123456-- 外部事件 → 门面类 → 对应子模块function ActivityModel:RegisterEvents() self:AddListener(_MOE.EventEnum.ON_PANDORA_RED_POINT_STATE_UPDATED, self, function(self, appId) self.m_redDot.OnPando...
Model
项目中 “Model” 的含义在元梦之星项目中,Model 是数据模型层,对应 MVC/MVP 架构中的 M 层,是整个游戏的数据核心。 一句话定义Model 负责 数据存储、业务逻辑、协议收发、配置查询,通过事件系统与 View(UI层)解耦通信,绝不直接操作 UI。 职责划分 能做 不能做 存储游戏数据(道具、邮件、任务等) 操作 UI / 调用 UIManager 处理业务逻辑(计算、判断、状态变更) 直接刷新界面 与服务器 Protobuf 通信(发协议、绑推送) — 读取游戏配表 — 通过 DispatchEvent 通知 View 刷新 — 继承体系123BaseModel (基类) └── SystemBaseModel (一级系统Model) └── SystemSubModel (子Model,分 Persistent/Temporary) 创建语法:_MOE.class("BagModel", _MOE.SystemBaseModel) 核心生命周期12345Ctor → ...
FirstChargeModel.lua
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120...
Model 如何读取服务器数据、协议是什么、View 的 Data 包含什么
1. 服务器数据是怎么来的(协议是什么意思)1.1 “协议” = 服务端和客户端约定的通信格式1服务端(C++) ←——协议——→ 客户端(Lua) 协议就是一种约定: 服务端说:”我推一坨二进制数据给你,按 CsAllPlayerActivityInfo 格式解读” 客户端说:”好的,我用 pb.decode("com.tencent.wea.protocol.CsAllPlayerActivityInfo", 数据) 解码” 1.2 协议的两种方向 方向 名称 含义 举例 C → S C2S(Client to Server) 客户端发给服务端 “我要领奖”、”请给我活动数据” S → C Ntf(Notify 通知) 服务端推给客户端 “你的任务完成了”、”活动开始了” 1.3 协议的数据传输过程123456789101112服务端 │ 原始数据: { activityId=10017, score=30, taskList=[...] } │ ↓ Protobuf 编码(压缩成二进制字节流)...
首充流程
1 model1234567891011玩家进游戏 → FirstChargeModel 注册事件 → 任务系统初始化完成 → 请求服务器 → 服务器返回 resIds = {2, 3} → 用 resIds 读配表 ResFirstChargeConfData → configMap[2] = {title, price, taskGroupId, subViweName, ...} → configMap[3] = {title, price, taskGroupId, subViweName, ...} → 用 taskGroupId 读任务系统 → taskMap[2] = {task1, task2, ...} → taskMap[3] = {task3, task4, ...} → 派发 GET_FIRST_CHARGE_INFO 事件(通知数据就...
服务器,配置表,客户端之间的通信逻辑
本地新增活动时,配置表数据是如何被读取的核心结论配置表数据和服务端数据不是两份独立的东西,而是同一条数据链路: 1234567你在 Excel 里填配置表 ↓ 导表生成 txt/lua 文件(本地) ↓ 服务端也读取同一份配置表(或服务端自己有对应配置)服务端组装数据 → 通过 Ntf 推送给客户端 ↓客户端 Model 接收 → 存储 → View 读取 关键点:你在本地配置表填的数据(activityName、activityUIDetail、tagId 等),服务端也会读取,然后服务端把这些配置表字段和玩家的动态数据打包在一起,通过协议推送给客户端。 完整链路:从你填配置表到 View 显示第 1 步:你填配置表12345678H_活动中心配置.xlsx 新增一行: id: 30999 activityName: 春日兑换 activityUIDetail: UI_ActivityTemplate_ExchangeLinearView tagId: 1 activityShopType: 142 backgroundUrl: spring_...
分支相关知识以及提交分支流程
1.先将本地分支提交到远程:feature/leohujiang - >origin2.在工蜂平台上创建MR,目标选择develop 3.等待审查提交 几个分支的理解1.develop 和 sX-dev 是什么关系? 1234567赛季开始时:develop ──拷贝──▶ sX-dev(赛季版本分支)赛季开始后:各干各的develop ──────继续往后开发(下个赛季的内容)──────▶sX-dev ──────专注当前赛季(修bug、加活动)──────▶ develop:永远往前走,开发未来的东西sX-dev:从 develop 拷贝出来后,就独立了,专门服务当前赛季⚠️ 关键点:sX-dev 上的改动不会自动回到 develop。比如你在 sX-dev 上修了个 bug,develop 上那个 bug 还在,除非你手动合回去 2.线上”是哪个分支?“线上” = 当前玩家正在玩的那个版本,对应的分支就是上一次发布的那个 release 分支。 123比如这周三刚发布了 release_v3.5那"线上"就是 relea...