思考并回答以下问题:
- 如何抽象技能?就像UI一样,把技能按各个方面分类。例如单体,区域。治疗,伤害。可以学,不可以学。
- 一个txt,一个实体对象a,一个配置读取b,一个管理器c负责调用b把读取到的txt赋值给a
快速跳转
开发规范
公共规范:
- 1.所有的类名和文件名以X开头,例如XLogicWorld.cs。
- 2.public成员变量以大写字母开头,其他成员变量以“m_”开头,public函数以大写字母开头,其他不做约束。
- 3.如非必要不要直接继承自MonoBehaviour这个脚本,以后几乎不会用到要直接继承自MonoBehaviour的功能。一来是功能上不必要这么做,二来是强烈不提倡脚本自己Start和Update;所有Start和Update的入口都在LogicApp中。
- 4.代码中不要出现大量的注释和Log日志(自己调试可以,提交版本之前请将代码中无用的地方删掉)。
- 5.不要直接调用Debug.Log(),统一使用Log.Write(…),便于日志统一管理。
- 6.如非不可避免,代码不允许出现Warning。
LogicApp
/LogicApp.cs
1 | using System; |
日志
最开始,需要一个日志类,多项目通用的。
System/Platform.cs
1 | using System; |
对象管理
XU3dEffect -> XU3dDynObject -> XU3dObject
GameBehaviour/XU3dObject.cs 所有对象的基类,没有继承MonoBehavior
1 | using UnityEngine; |
GameBehaviour/XU3dDynObject.cs 动态对象
1 | using UnityEngine; |
GameBehaviour/XU3dEffect.cs
1 | using UnityEngine; |
GameBehaviour/IBehaviourListener.cs
1 | using System; |
GameBehaviour/XObjectModel.cs
1 | using UnityEngine; |
角色管理
GameObject/ObjectAttrs.cs 对象属性
1 | using System; |
GameObject/DynamicAttrMgr.cs 动态属性管理
1 | using System; |
GameObject/XGameObject.cs
1 | using System; |
GameObject/XCharacter.cs
1 | using System; |
GameObject/XPlayer.cs
1 | using System; |
Audio
GameBehaviour/XU3dAudio.cs 没有继承MonoBehavior
1 | using UnityEngine; |
GameBehaviour/XAudio.cs
1 | using UnityEngine; |
资源加载
Resource/XDownloadItem.cs
1 | namespace resource |
Resource/XDownloadManager.cs
1 | namespace resource |
Resource/XResourceBase.cs
1 | namespace resource |
Resource/XResourceManager.cs
1 |
特效
FxMaker/NcEffect/NcDestroyEvent.cs
1 | using System; |
System/XUtil.cs 工具类
1 | using System; |
XEventDefine.cs
1 | using System; |
Event/XEventManager.cs
1 | using System; |
技能</span>
配置文件
配置文件放在Assets/Other/Config/Skill文件夹下,总共有三个配置文件,分别是SkillBase.txt,SkillLevel.txt,SkillOper.txt。都是策划使用Excel配置,然后通过工具转换成txt和生成类。
SkillBase.txt
1 | SkillID Name FuncType LevelLimit Class AttackTarget UseWay SkillTime AttackAnim AttackAnimSpeed AttackEffectDelay AttackEffectID AttackEffectBind IsFollowBone AttackEffectNum AttackEffectLife TranslateDelay UseObject BulletID BulletSrcBind BulletTgtBind BulletRate BulletVelocity BulletFlyTrack RegionEffectID DefeatDelay HitEffectID HitEffectBind HitEffectNum AttackShockID AttackShockDelay HitShockID ShowCutSceneAnimation |
SkillLevel.txt
1 | SkillID SkillEffectType SkillLevel LearnLevel Kill UseRegion TextLearn TextEffect TextUpgrade ReviveRate SuckBloodRate SummonID MoraleValue CRIRate CRIHPRate AttackCount AttackTime_3_0 AttackEffect_3_0 AttackDamageRate_3_0 AttackEffectBind_3_0 AttackTime_3_1 AttackEffect_3_1 AttackDamageRate_3_1 AttackEffectBind_3_1 AttackTime_3_2 AttackEffect_3_2 AttackDamageRate_3_2 AttackEffectBind_3_2 |
SkillOper.txt
1 | Class SkillID SkillLevel PreID PreLevel PosX PosY ClassLevel SkillPoint FieldID StarSprite NotActiveSprite |
读取配置
txt横排的,读取不容易,肯定需要专门的类。
\GameConfig\XCfgSkillBase.cs
1 |
|
数据实体
Skill文件夹下有SkillManager、XSkill、XSkillDefine三个脚本文件。
XSkillDefine.cs 技能,技能等级,技能操作数据实体文件,定义了三个类,定义对应的字段存储从txt读取出来的数据。
1 | using UnityEngine; |
管理
读取配置然后给实体类赋值。
SkillManager.cs
1 |
\Skill\XSkill.cs
1 | using UnityEngine; |
Battle/SkillDisplay.cs 技能表现
1 | using System.Collections.Generic; |
外观模式
1 | using System; |
Battle
Battle/XBattleDefine.cs
1 | using System; |
Battle/XBattleObject.cs
1 | using System; |
Battle/BattleDisplayerMgr.cs 代表一场战斗的表现
1 | using XGame.Client.Packets; |
\Client\Assets\Scripts\Battle\XBattleManager.cs
1 | using System; |
Camera
GameLogic/XCameraLogic.cs
1 | using UnityEngine; |
CoroutineManager
CoroutineManager/CoroutineManager.cs 协程管理器
1 | using System; |