|
|
1 rok pred | |
|---|---|---|
| Assets | 1 rok pred | |
| BMFont | 1 rok pred | |
| GPUCache | 1 rok pred | |
| Packages | 1 rok pred | |
| ProjectSettings | 1 rok pred | |
| ProtocolGen | 1 rok pred | |
| UserSettings | 1 rok pred | |
| .gitattributes | 1 rok pred | |
| .gitignore | 1 rok pred | |
| .vsconfig | 1 rok pred | |
| README.md | 1 rok pred |
| 路径 | 说明 |
|---|---|
| Assets | 游戏主体资源 |
| BMFont | 位图字体工具 (已废弃) |
| Build | 编译目标版本使用到的资源路径 |
| Library | Unity工具自身的存放的数据路径 |
| Packages | Unity第三方库引用描述文件 |
| ProjectSettings | Unity项目的设置存放路径 |
| ProtocolGen | google protobuf 转lua 的工具 |
| .gitignore | git忽略设置文件 |
| 路径 | 说明 |
|---|---|
| assetbundle | ab输出的临时路径 |
| assetbundleBak | ab输出的缓存路径 |
| Logs | Packages工具日志路径 |
| obj | C#编译的临时路径 |
| Temp | Unity工具自身的存放的临时数据路径 |
| 路径 | 说明 |
|---|---|
| _Discard | 存放过期或将要过期的资源 |
| AppInfo | 编译时才使用的资源 (图标和闪屏) |
| ArtScript | 特效使用的脚本 |
| CinemachinePostProcessingV2 | 镜头控制插件 |
| Content | 游戏中使用到的美术资源(基本上所有的美术资* 都在里面,除场景资源) |
| Editor | 自定义的编辑工具 |
| Flux | 技能编辑器引用的插件 |
| Gizmos | |
| Lua | 游戏的lua代码 |
| LuaProfilerClient | lua性能分析器 |
| LuaTools | csv转lua配置工具 |
| MeshBaker | Mesh合并工具 |
| Plugins | 插件目录 |
| Resources | 由于游戏都走AB加载,基本不再有什么资源放入 |
| Scenes | 所有的场景和相关资源 |
| Shaders | 游戏中自定义的Shader |
| Src | 游戏的C#代码 |
| T4M | T4M工具 |
| T4MOBJ | |
| TextMesh Pro | TextMesh默认资源 |
| ToLua | tolua相关代码 |
| game.unity | 游戏启动场景 |
| relogin.unity | 游戏进入重登时的场景 |
| *.unity | 剩下的一些测试场景(只和编辑有关,和运行无关) |
| 目录 | 说明 |
|---|---|
| Audio | 音频资源 |
| Config | csv配置表,C#中使用的配置表 |
| Fonts | 字体文件 |
| Icons | 游戏中的Icon,策划配置,程序加载显示 |
| Lua | 编译时,lua临时缓存路径 因为.lua文件无法直接打ab包,转.txt |
| Materials | 通用材质球 |
| PosProfiles | PostProcess效果的配置 (目前只用于创角) |
| Prefabs | 所有程序直接使用的Prefab |
| Raw_Art | 美术的原始资源 (比如Prefab引用到的资源,程序不直接调用) |
| TimeLine | TimeLine配置 (游戏中暂未用上) |
| ToLua | 编译时,tolua临时缓存路径 因为.lua文件无法直接打ab包,转.txt |
| Xml | xml配置,C#中使用的配置(包含技能,场景出生点等配置) |
| 菜单项 | 说明 |
|---|---|
| Assets/CheckSceneDep | 检查场景依赖 |
| Assets/设置PackingTag | 手动设置图集合并Tag |
| Assets/OptModel | 优化模型 |
| Assets/SaveRTToPPNG | 把RenderTexture转PNG |
| Assets/FindImageReferences | 找出图片被谁引用 |
| Assets/FindMatReferences | 找出材质球被引用 |
| Assets/CheckFileName | 查看文件全名 |
| Assets/RO/清理Animator | 清理预制体上默认的Animator组件 |
| Assets/更新动画数据 | |
| Assets/ExportMesh | 导出成Mesh文件 |
| Assets/GenerateLuaClass | 对某个UI预制体生成标准化脚本 |
| SkillTool/Frame Event Panel/Open Editor | 技能编辑器 |
| SkillTool/启动训练营测试 | 测试技能(未再维护,功能缺失) |
| [快捷启动]/[启动游戏] | 快速启动游戏 |
| Lua/* | tolua工具(用于生成lua调用C#的绑定文件) |
| Cinemachine/* | Cinemachine工具 |
| RO_Tool/* | RO项目中特殊工具 |
| AssetBundle/* | 不再使用设定AssetsLabels来生成AB,已淘汰 |
| AssetBundle/打包工具 | 用于打包版本 |
| Tools/* | 包含一些小工具 |
game.scene=>start: game.scene
Start=>operation: Start(GameMgr.cs)
是否启动=>condition: 是否启动
StartLaunch=>operation: StartLaunch(LaunchLoadMgr.cs)
Update=>operation: Update(GameMgr.cs)
EnterLuaLogin=>operation: EnterLuaLogin(GameMgr.cs)
是否退出游戏=>condition: 是否退出游戏
QuitGame=>end: QuitGame(GameMgr.cs)
game.scene->Start->是否启动
是否启动(yes)->StartLaunch->EnterLuaLogin->Update->是否退出游戏
是否启动(no)->Update->是否退出游戏
是否退出游戏(yes)->QuitGame
是否退出游戏(no)->Update
C#部分的主体逻辑如上流程
GameMgr.cs C#与lua层交互。c#层面战斗开始入口,销毁。 相关战斗功能函数:
BattleSystemNew.cs c#层战斗管理、负责管理整场战斗 相关战斗功能函数:
Actor文件夹处理角色属性数据: ActorDat.cs基类实现有:伙伴、主角、宠物。一级属性、二级属性、技能、avatar、buff、mark等相关数据。 ActorDataMgr.cs 角色属性管理:创建、移除、检查 BaseBattle.cs负责包含战斗整体(BattleField)逻辑控制、战斗角色管理、随机种子、战报、战斗事件注册和调度、 (basebattle派生有TimeBattle.cs、VersusBattle.cs、LogicBattle.cs、BossBattle.cs)对应不同战斗类型
BaseBattleScene.cs负责战斗场景加载、出生点、战斗点、场景天空材质 (派生有:BossBattleScene、VersusBattleScene、TimeBattleScene、LogicBattleScene)
LogicField.cs 基础逻辑块 包含有位置信息以及操作(派生有: BattleField)
BattleField.cs负责战斗中某一阶段的逻辑模块.包含该模块战斗角色 (派生有: BossBattleField、VersusBattleField、LogicBattleField、TimeBattleField)
所有战斗组成:(差异业务逻辑不同、具体业务看需求) Battle、BattleState、BattleField、BattleScene
FighterManager角色管理类:创建、销毁、复活 Fighter角色类:派生自LogicTransfor逻辑移动类 变量:FighterAi 角色AI控制(自动调用释放技能) PassiveMove 移动控制 FighterStateData 角色状态数据 角色状态FighterState 角色技能数据FighterSkillStateData 角色buff管理FighterBuffManager 角色效果管理FighterBuffFunctionMgr 角色Mark管理MarkMgr 角色控制FighterGoCtrl
角色战斗属性PlayerActorBattleAttr 战斗中使用用到的属性,参与战斗计算 方法:CreateFighter根据ActorData角色属性创建。
ForceIdle、ForceComing、ForceBreak设置切换角色状态
ChaseTo 移动到Figher一定范围
AutoMoveTo 移动到坐标
OnFightingStart 战斗开始通知调用:启用角色AI、关闭寻路、刷新角色HP、SP等UI操作 OnFightingEnd 战斗结束调用:关闭AI、清空角色BUFF和效果,开启寻路 CheckPassiveSkill 被动技能释放激活 DoPassiveSkill 指定释放激活一个被动技能 GetPassiveSkill 获取被动技能 OnEnterRage 狂暴状态的buff释放 GetAttrByType 获取角色属性 HaveBuffFunction 是否存在buff效果 RemoveFunctionByFunType 移除buff效果 GetBuffFunctionValue 获取buff效果对应值 GetMarkFunVal 获取mark对应值 Dispose 清空角色包含数据 Destroy 销毁角色 AutoRunToFieldFightPosition 是否可以跑向战斗点 CanMove 是否可移动判断 CastBuff 释放一个buff GetSkill 获取技能 Spawn 战场出身:加载模型、设置出身位置、初始化战斗属性、初始化战斗状态 DoBeHit 被攻击:切换到被攻击状态 CanDoTriggerAction 是否可以切换到指定状态 CanDoSkill 是否可以释放该技能,判断是否在不可释放状态、是否CD未到、SP消耗是否足够、选取目标、距离内是否有目标、目标距离不够则移动到目标(同时判断是否可移动) CheckDoSkill 是否可以释放技能,如果可以,释放。 ForceDoSkill 强制释放一个技能 ProcessTriggerSkillBuff 事件触发BUFF处理 ProcessTriggerBuff 被动技能的触发buff处理 AddTriggerBuffData 添加触发BUFF数据 CheckPassiveBuffCaster 是否可以触发被动效果判断 ProcessBeHit 被攻击处理 ProcessReflectDamage 反弹伤害处理 EndSkill 结束技能处理,参数是否被打断 ChangeSkill 替换技能 LoadSkills 技能预加载
战斗AI FighterAi.cs Update优先检测释放技能其次检测释放普攻,技能释放成功取下一个技能继续尝试释放mFighter.CheckDoSkill
AI攻击流程:尝试释放技能、释放成功后累计下一个尝试释放、mFighter.CheckDoSkill是否可释放、mFighter.ProcessTrigger切换技能状态、进入角色Attack状态、进入状态后调用FighterSkillStateData.OnEnter释放角色技能、并记录当前释放技能相关信息、调用触发技能BUFF、BUFF中读取相关buff.XML配置文件、触发事件。BattleBuff.ProcessEvent处理相关事件
技能运行中FighterSkillStateData.UpdateFrame检测技能帧是否播放完毕并标记。外层Attack状态根据标记状态退出攻击状态.完成一次攻击 战斗buff
根据BUFF SkillActionFrameEvent 数据,更新帧事件。生命周期自身计算
OnConfigMgrInited=>start: OnConfigMgrInited(LaunchLoadMgr.cs)
InitMgr=>operation: InitMgr(LuaMgr.cs)
LuaMain:Init=>operation: LuaMain:Init(LuaMain.lua)
LuaMain:Start=>operation: LuaMain:Start(LuaMain.lua)
LuaMain:Update=>operation: LuaMain:Update(LuaMain.lua)
LuaMain:EnterLogin=>operation: LuaMain:EnterLogin(LuaMain.lua)
OnConfigMgrInited->InitMgr->LuaMain:Init->LuaMain:Start->LuaMain:Update->LuaMain:EnterLogin
lua启动逻辑如上流程
| 目录 | 说明 |
|---|---|
| Assets/Lua/Config | 放置的lua配置文件 |
| Assets/Lua/Core | 启动文件,平台设置,通用设置等 |
| Assets/Lua/Entities | 早期做场景互动功能使用,当前版本无用 |
| Assets/Lua/Enum | 枚举数据 |
| Assets/Lua/ForceGuide | 强制引导相关 |
| Assets/Lua/FSMState | lua中的状态机 |
| Assets/Lua/FuncUnlockCondition | 功能解锁的判定条件 |
| Assets/Lua/GmCommond | gm工具 |
| Assets/Lua/Logic | 游戏的逻辑数据保存地方 |
| Assets/Lua/Managers | 一些调度的管理类 |
| Assets/Lua/Pb google | protobuf协议文件 |
| Assets/Lua/RedPoint | 红点逻辑 |
| Assets/Lua/System | 通用功能 |
| Assets/Lua/UI | 所有的UI逻辑(vc) |