protected virtual void OnClickCreate()
        {
            var gameInstance = GameInstance.Singleton;
            var selectedUI   = SelectionManager.SelectedUI;

            if (selectedUI == null)
            {
                UISceneGlobal.Singleton.ShowMessageDialog("Cannot create character", "Please select character class");
                Debug.LogWarning("Cannot create character, did not selected character class");
                return;
            }
            var characterName          = inputCharacterName.text.Trim();
            var minCharacterNameLength = gameInstance.minCharacterNameLength;
            var maxCharacterNameLength = gameInstance.maxCharacterNameLength;

            if (characterName.Length < minCharacterNameLength)
            {
                UISceneGlobal.Singleton.ShowMessageDialog("Cannot create character", "Character name is too short");
                Debug.LogWarning("Cannot create character, character name is too short");
                return;
            }
            if (characterName.Length > maxCharacterNameLength)
            {
                UISceneGlobal.Singleton.ShowMessageDialog("Cannot create character", "Character name is too long");
                Debug.LogWarning("Cannot create character, character name is too long");
                return;
            }

            var characterId   = GenericUtils.GetUniqueId();
            var characterData = new PlayerCharacterData();

            characterData.Id = characterId;
            characterData.SetNewPlayerCharacterData(characterName, selectedUI.Data.DataId, selectedUI.Data.EntityId);
            characterData.SavePersistentCharacterData();

            if (eventOnCreateCharacter != null)
            {
                eventOnCreateCharacter.Invoke();
            }
        }