namespace XmobiTea.UIEffect.Component.Base { using UnityEngine; public class BaseView : MonoBehaviour { private bool _initialized; private bool _addEvent; private bool _isStart; public void Init() { if (!_initialized) { _initialized = true; OnInit(); } } protected void AddEvent() { if (!_addEvent) { _addEvent = true; OnAddEvent(); } } protected void RemoveEvent() { if (_addEvent) { _addEvent = false; OnRemoveEvent(); } } protected virtual void Start() { if (Application.isPlaying) { _isStart = true; Init(); OnActive(); AddEvent(); } } protected virtual void OnEnable() { if (!Application.isPlaying) { return; } if (_isStart) { OnActive(); AddEvent(); } } protected virtual void OnDisable() { if (!Application.isPlaying) { return; } RemoveEvent(); } protected virtual void OnDestroy() { RemoveEvent(); } protected virtual void OnInit() { } /// this function will be show everytime when game object active protected virtual void OnActive() { } protected virtual void OnAddEvent() { } protected virtual void OnRemoveEvent() { } } }