Role.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using FSBuff;
  5. namespace FSRole {
  6. /*
  7. * 角色组件
  8. */
  9. public class Role : MonoBehaviour {
  10. // 角色原始属性
  11. public RoleAttr OriginAttr;
  12. // 角色当前属性
  13. public RoleAttr CurrentAttr;
  14. // 角色所挂载的BUFF数组,所有Buff都放在这里面
  15. public ArrayList buffs;
  16. // 血条
  17. private Vector2 originSize;
  18. private RectTransform bloodRect;
  19. public void SetBloodTrs(Transform blood) {
  20. bloodRect = blood.GetComponent<RectTransform>();
  21. originSize = bloodRect.sizeDelta;
  22. }
  23. // Use this for initialization
  24. void Start() {
  25. buffs = new ArrayList();
  26. }
  27. // Update is called once per frame
  28. void Update() {
  29. }
  30. /*
  31. * 添加角色的各个接口
  32. */
  33. /*
  34. * 受到伤害
  35. */
  36. public void GetDamage(int value) {
  37. CurrentAttr.Hp += value;
  38. // 当血量大于0时
  39. if (CurrentAttr.Hp >= 0) {
  40. float newWidth = (float)CurrentAttr.Hp / OriginAttr.Hp * originSize.x;
  41. bloodRect.sizeDelta = new Vector2(newWidth, originSize.y);
  42. }
  43. Dictionary<string, object> info = new Dictionary<string, object>();
  44. info.Add("remind", "受到了" + (-value) + " 点伤害 ...");
  45. }
  46. /*
  47. * 消耗精力
  48. */
  49. public void CostEngine(int value) {
  50. CurrentAttr.Mp -= value;
  51. print("消耗精力");
  52. }
  53. /*
  54. * 增加防御力
  55. */
  56. public void Defense(int value) {
  57. CurrentAttr.Def += value;
  58. print("防御");
  59. }
  60. /*
  61. * 运行BUFF
  62. */
  63. public void BuffExecute() {
  64. // 遍历数组来运行BUFF
  65. foreach (Buff index in buffs) {
  66. print("角色" + CurrentAttr.ID + "的Buff ID 为 " + index.ID);
  67. index.Execute();
  68. }
  69. }
  70. /*
  71. * 添加Buff
  72. */
  73. public void AddBuff(Buff buff) {
  74. // 首先判断数组中是否已经存在此Buff
  75. // 未来还需要根据两个相同buff的属性来进行更新
  76. foreach (Buff index in buffs) {
  77. if (index.ID == buff.ID) {
  78. // 未来在这里做些什么
  79. return;
  80. }
  81. }
  82. // 往数组中添加数组
  83. buffs.Add(buff);
  84. }
  85. }
  86. }