/// <summary> /// 加载并创建技能实例 /// </summary> /// <param name="skillNum">技能ID</param> /// <param name="skillHolder">技能持有单位</param> /// <param name="skillLevel">技能等级</param> /// <returns>技能实例</returns> public SkillInfo CreateSkillInfo(int skillNum, DisplayOwner skillHolder, int skillLevel = 1) { SkillInfo result = null; // 验证技能ID的有效性 if (skillNum <= 0) { return(null); } // 检查缓存 if (SkillInfoDic.ContainsKey(skillNum)) { // 复制技能数据 result = SkillInfoDic[skillNum]; } else { // 从AB文件中加载 var skillTxt = GetSkillScript(skillNum, SkillManager.Single.RunType); if (!string.IsNullOrEmpty(skillTxt)) { result = FormulaConstructor.SkillConstructor(skillTxt); // 将其放入缓存 AddSkillInfo(result); } } result = CopySkillInfo(result); result.ReleaseMember = skillHolder; result.ReplaceData(skillLevel); // 将技能实现放入实现列表 skillInstanceDic.Add(result.AddtionId, result); return(result); }
/// <summary> /// 加载buff类 /// 如果缓存中没有就从文件照片那个加载 /// </summary> /// <param name="buffId">buffID</param> /// <param name="receive">buff的接受者</param> /// <param name="release">buff的释放者</param> /// <param name="buffRank">Buff等级</param> /// <returns></returns> public BuffInfo CreateBuffInfo(int buffId, DisplayOwner receive, DisplayOwner release, int buffRank = 1) { BuffInfo result = null; // 验证技能ID的有效性 if (buffId > 0) { // 检查缓存 if (buffDic.ContainsKey(buffId)) { // 复制buff result = buffDic[buffId]; } else { // 加载文件内容 var buffTxt = GetBuffScript(buffId, SkillManager.Single.RunType); if (!string.IsNullOrEmpty(buffTxt)) { result = FormulaConstructor.BuffConstructor(buffTxt); // 将其放入缓存 AddBuffInfo(result); } } } result = CopyBuffInfo(result); result.ReplaceData(buffRank); // 将实现放入实现列表 buffInstanceDic.Add(result.AddtionId, result); result.ReceiveMember = receive; result.ReleaseMember = release; result.BuffRank = buffRank; return(result); }
void Start() { // 加载技能内容 skillInfo = FormulaConstructor.SkillConstructor(formulaStr); skillInfo2 = FormulaConstructor.SkillConstructor(formulaStr2); skillInfo3 = FormulaConstructor.SkillConstructor(formulaStr3); }
/// <summary> /// 加载Remain类 /// 如果缓存中没有就从文件照片那个加载 /// </summary> /// <param name="remainId">RemainID</param> /// <param name="release">Remain的释放者</param> /// <param name="level">Remain等级</param> /// <returns></returns> public RemainInfo CreateRemainInfo(int remainId, DisplayOwner release, int level = 1) { RemainInfo result = null; // 验证技能ID的有效性 if (remainId > 0) { // 检查缓存 if (remainDic.ContainsKey(remainId)) { // 复制buff result = remainDic[remainId]; } else { // 加载文件内容 var buffTxt = GetRemainScript(remainId, SkillManager.Single.RunType); if (!string.IsNullOrEmpty(buffTxt)) { result = FormulaConstructor.RemainConstructor(buffTxt); // 将其放入缓存 AddRemainInfo(result); } } } if (result == null) { return(null); } result = CopyRemainInfo(result); result.ReplaceData(level); // 将实现放入实现列表 remainInstanceDic.Add(result.AddtionId, result); result.ReleaseMember = release; return(result); }
/// <summary> /// 初始化技能 /// </summary> private void InitSkill() { // 加载技能 string formulaStr = @"SkillNum(1001) { Point(1,test/ExplordScope,0,0,3,10,1,10), CollisionDetection(0, 10, 1, 0, -1, 10, 0, 0, -1, 1) { Skill(1, 1002, 1) //PointToObj(1,test/TrailPrj,10,0,10,1,10), //Point(1,test/ExplordScope,1,0,3,10,1,10), } }"; string formulaStr2 = @"SkillNum(1002) { PointToObj(1,test/TrailPrj,10,0,10,1,10), Point(1,test/ExplordScope,0,3,10,1,10), }"; string formulaStr3 = @"SkillNum(1003) { SlideCollisionDetection(1, 0, 2, 1, {%0}, 40, -1) { //PointToObj(1,test/TrailPrj,10,0,10,1,10), Point(1,test/ExplordScope,1,{%1},10,1,10), } } // 数据 [ TriggerLevel1(1) TriggerLevel2(1) 100, 5 ] "; string formulaStr4 = @"SkillNum(1004) { TargetPointSelector(1,3,90,0) //Move(1, 2, 3, false) SlideCollisionDetection(1, 0, 2, 1, 100, 40, -1) //PointToPoint(1,test/TrailPrj,0,2,10,0,10,1,10), } [ IsActive(true,101001) ] "; string formulaStr5 = @"SkillNum(1005) { SlideCollisionDetection(1, 0, 2, 1, {%0}, 40, -1) { //If(1, 0, Health, 0_100) //{ HealthChange(1,0,0,0,1) //PointToObj(1,test/TrailPrj,10,0,10,1,10), Point(1,test/ExplordScope,1,{%1},10,1,10), //} } } [ TriggerLevel1(1) TriggerLevel2(1) Description(哟哦哦{%0},哦哟哦哟{%1}) 100, 5 ] "; string formulaStr6 = @"SkillNum(1006) { HealthChange(1,0,0,0,1) } "; string formulaStr7 = @"SkillNum(1007) { SlideCollisionDetection(1, 0, 2, 1, {%0}, 40, -1) { //If(1, 0, Health, 0_100) //{ Buff(1,1007, 1) Buff(1,1008, 1) //PointToObj(1,test/TrailPrj,10,0,10,1,10), //Point(1,test/ExplordScope,1,{%1},10,1,10), //} } } [ CDTime(1) CDGroup(2) Icon(test/Icon1) ReleaseTime(10) TriggerLevel1(1) TriggerLevel2(1) Description(Test{%0},测试{%1}) 100, 5 ] "; string formulaStr8 = @"SkillNum(1008) { // 选择目标点 TargetPointSelector(1,3,<Attack1>+10,0) Remain(1, 2, 10000, false) } [ CDTime(1) CDGroup(2) Icon(test/Icon1) ReleaseTime(10) TriggerLevel1(1) TriggerLevel2(1) Description(Test{%0},测试{%1}) 10, 5 ] "; string formulaStr9 = @"SkillNum(1009) { CollisionDetection(0, 50, 1, 1, -1, 100, 100, 0, 101009, true) { //If(1,0,IsMechanic,false_true) //{ PointToObj(1,zidan1.prefab,10,0,10,1,10), //Point(1,test/ExplordScope,1,0,3,10,1,10), //} } // 选择目标点 // TargetPointSelector(1,0,10,10) // Remain(1, 2, 10000, false) } [ CDTime(1) CDGroup(2) Icon(test/Icon1) ReleaseTime(10) TriggerLevel1(1) TriggerLevel2(1) Description(Test{%0},测试{%1}) 100, 5 ] "; string formulaStr10 = @"SkillNum(1010) { Death(1,0) } "; string formulaStr11 = @"SkillNum(1011) { SummonedUnit(1,1,3,101001,1) } "; string formulaStr12 = @"SkillNum(10006) Action { } [ ChangeData(IsDambody, true, 0) ] "; string buffStr1 = @"BuffNum(1007) Action { HealthChange(1,0,0,0,1,1,0) } [ TickTime(1) BuffTime(10) TriggerLevel1(4) TriggerLevel2(18) BuffLevel(1) BuffGroup(1) ChangeData(CurrentHP,100,0) ] "; string buffStr2 = @"BuffNum(1008) Action { ResistDemage(1,3,1,true) { Point(1,test/ExplordScope,0,3,10,1,10), } } [ BuffTime(10) TriggerLevel1(3) TriggerLevel2(10) DetachTriggerLevel1(3) DetachTriggerLevel2(10) DetachQualified(ResistDemage,<=,0.0f) ] "; // 光环1 string remainStr1 = @"RemainNum(10000) Action { //Point(1,test/ExplordScope,0,3,10,1,10) } Enter { Point(1,test/ExplordScope,1,5,10,1,10) } Out { Point(1,test/ExplordScope,1,5,10,1,10) } [ Range(60) DuringTime(10) ActionTime(1) ActionCamp(1) IsFollow(false) ] "; //var skillInfo = FormulaConstructor.SkillConstructor(formulaStr); //var skillInfo2 = FormulaConstructor.SkillConstructor(formulaStr2); //var skillInfo3 = FormulaConstructor.SkillConstructor(formulaStr3); //var skillInfo4 = FormulaConstructor.SkillConstructor(formulaStr4); //var skillInfo5 = FormulaConstructor.SkillConstructor(formulaStr5); //var skillInfo7 = FormulaConstructor.SkillConstructor(formulaStr7); var skillInfo8 = FormulaConstructor.SkillConstructor(formulaStr8); var skillInfo9 = FormulaConstructor.SkillConstructor(formulaStr9); var skillInfo10 = FormulaConstructor.SkillConstructor(formulaStr10); var skillInfo11 = FormulaConstructor.SkillConstructor(formulaStr11); var skillInfo12 = FormulaConstructor.SkillConstructor(formulaStr12); var buffInfo1 = FormulaConstructor.BuffConstructor(buffStr1); var buffInfo2 = FormulaConstructor.BuffConstructor(buffStr2); remain = FormulaConstructor.RemainConstructor(remainStr1); //SkillManager.Single.AddSkillInfo(skillInfo); //SkillManager.Single.AddSkillInfo(skillInfo2); //SkillManager.Single.AddSkillInfo(skillInfo3); //SkillManager.Single.AddSkillInfo(skillInfo4); //SkillManager.Single.AddSkillInfo(skillInfo5); //SkillManager.Single.AddSkillInfo(skillInfo7); SkillManager.Single.AddSkillInfo(skillInfo8); SkillManager.Single.AddSkillInfo(skillInfo9); SkillManager.Single.AddSkillInfo(skillInfo10); SkillManager.Single.AddSkillInfo(skillInfo11); SkillManager.Single.AddSkillInfo(skillInfo12); BuffManager.Single.AddBuffInfo(buffInfo1); BuffManager.Single.AddBuffInfo(buffInfo2); RemainManager.Single.AddRemainInfo(remain); //Debug.Log(skillInfo5.GetReplacedDescription(1)); //foreach (var item in "{%1} + {%2}{%3}".Split('{', '}')) //{ // Debug.Log(item); //} }