如需要简单天命6源码解析,请参考:会走路的小哥
如果是我,天命6的源码大概分几块?
(仅客户端)
- 状态模块,PVP或者PVE的战斗,是一直更新的State
- 登录模块
- 第三方插件
- 设置配置config
状态机,状态模块
场景状态
cpp
public enum EStageResultState
{
EState_Inactive = 0, // 비표시. 隐藏 / 未激活。
EState_Move, // 유닛, 카메라 이동 // 单位与摄像机移动中。
EState_Complete, // 레이드 종료. (실패/성공 없이 모두 같은 결과 화면)// 关卡结束。(无论成功或失败,均显示相同的结局画面)
EState_Max, // 枚举最大值(通常用于计数或边界检查,不表示实际状态)。
};
actor个人状态
UOgreAI_Remote |-->UOgreAI_Pawn
cs
protected override void Enter_Idle(EOgreAIState inPreviousState)
{
base.Enter_Idle(inPreviousState);
}
protected override void Update_Idle()
{
if(myPawnForRemote.IsEnableReserveSkill)
{
// 드래그 및 버프 스킬은 즉시 스킬 사용.
if(myPawnForRemote.IsDragReserveSkill ||
myPawnForRemote.MySkillSystemForRemote.CurrentActiveSkill.IsBuffSkill ||
myPawnForRemote.MySkillSystemForRemote.CurrentActiveSkill.isHealSKill)
{
ForceNextAIState = EOgreAIState.OgreAI_SkillDashFollowEnemy;
return;
}
}
cs
// 상태 진입. 状态进入。
protected void EnterState(EOgreAIState inEnterState)
{
switch(inEnterState)
{
case EOgreAIState.OgreAI_Idle: { Enter_Idle(currentAIState); DelegateAIUpdate = new FDelegateAIUpdate(Update_Idle); } break;
case EOgreAIState.OgreAI_PortalFollow: { Enter_PortalFollow(currentAIState); DelegateAIUpdate = new FDelegateAIUpdate(Update_PortalFollow); } break;
case EOgreAIState.OgreAI_LeaderFollow: { Enter_LeaderFollow(currentAIState); DelegateAIUpdate = new FDelegateAIUpdate(Update_LeaderFollow); } break;
case EOgreAIState.OgreAI_EnemyFollow: { Enter_EnemyFollow(currentAIState); DelegateAIUpdate = new FDelegateAIUpdate(Update_EnemyFollow); } break;
case EOgreAIState.OgreAI_DashApproach: { Enter_DashApproach(currentAIState); DelegateAIUpdate = new FDelegateAIUpdate(Update_DashApproach); } break;
//所以状态在于
//public enum EOgreAIState
技能系统
设置配置config
第三方插件
BestHTTP (pro)
baracuda.monitoring//本身做监控,最新的这个插件转为和 AI 机器学习有关
CutScene
参考
https://ooowl.fun/articles/blogs/Game/Unity/Unity-%E5%A4%A9%E5%91%BD6%E6%BA%90%E7%A0%81.html
https://www.jiaosf.com/yxym-901-1-1.html
其他

