diff options
| author | chai <215380520@qq.com> | 2023-11-02 11:51:31 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2023-11-02 11:51:31 +0800 |
| commit | 7f493f682503f5186308de7b8f74b5b49233cfe4 (patch) | |
| tree | 8a91e2056bc79788ee4735dce88b8d516ba12beb /GameCode/TaggedObject.cs | |
+init
Diffstat (limited to 'GameCode/TaggedObject.cs')
| -rw-r--r-- | GameCode/TaggedObject.cs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/GameCode/TaggedObject.cs b/GameCode/TaggedObject.cs new file mode 100644 index 0000000..d6bede0 --- /dev/null +++ b/GameCode/TaggedObject.cs @@ -0,0 +1,59 @@ +using System.Collections.Generic; +using UnityEngine; + +public class TaggedObject : MonoBehaviour +{ + [SerializeField] + private List<TagManager.ETag> tags = new List<TagManager.ETag>(); + + private TagManager tagManager; + + private Hp hp; + + public Collider colliderForBigOjectsToMeasureDistance; + + public List<TagManager.ETag> Tags => tags; + + public Hp Hp => hp; + + private void Start() + { + hp = GetComponent<Hp>(); + } + + private void OnEnable() + { + if (tagManager == null) + { + tagManager = TagManager.instance; + } + tagManager.AddTaggedObject(this); + } + + private void OnDisable() + { + if (tagManager == null) + { + tagManager = TagManager.instance; + } + tagManager.RemoveTaggedObject(this); + } + + public void AddTag(TagManager.ETag _tag) + { + if (!tags.Contains(_tag)) + { + tags.Add(_tag); + tagManager.AddTag(this, _tag); + } + } + + public void RemoveTag(TagManager.ETag _tag) + { + if (tags.Contains(_tag)) + { + tags.Remove(_tag); + tagManager.RemoveTag(this, _tag); + } + } +} |
