/// <summary>
 /// Called after creation of Achievement instance.
 /// DO NOT CALL UNLESS YOU KNOW WHAT YOU ARE DOING.
 /// </summary>
 /// <param name="eventHandlers">Reference to Event Handlers</param>
 public void SetupAchievementProperties(AchievementEventHandlers eventHandlers)
 {
     foreach (var achievementProperty in AchievementProperties)
     {
         achievementProperty.Value.Register(eventHandlers);
         achievementProperty.Value.SetOwner(this);
     }
 }
        /// <summary>
        /// Register this property to Its AchievementHandler
        /// </summary>
        /// <param name="achievementEventHandler"></param>
        internal virtual void Register(AchievementEventHandlers achievementEventHandler)
        {
            //Register to the Event Handler value change
            achievementEventHandler.AddListener(EventName, EventListener);
            OnComplete.AddListener((a, b) =>
            {
                achievementEventHandler.RemoveListener(EventName, EventListener);
            });

            propertyAlreadyCompleted.AddListener(() =>
            {
                achievementEventHandler.RemoveListener(EventName, EventListener);
            });
        }