public virtual async Task CreateHolder()
        {
            //Get the game items under current player
            var items = await GameManager.Instance.Characters.GetOwnedItemInstances();

            foreach (var item in items)
            {
                //If it's character
                if (item.GiType == typeof(Character).Name)
                {
                    Vector3    position        = item.GetVector3Attr(PlayerGameItem.ATTRS_POSITION, Vector3.zero);
                    Vector3    rotation        = item.GetVector3Attr(PlayerGameItem.ATTRS_POSITION, Vector3.zero);
                    GameObject characterHolder = GameObject.Instantiate(CharacterHolder, position,
                                                                        Quaternion.Euler(rotation.x, rotation.y, rotation.z));
                    CharacterHolder holderComponent = characterHolder.GetComponent <CharacterHolder>();
                    BindItem(holderComponent, item);
                }
            }
        }
 public virtual async Task BindItem(CharacterHolder holderComponent, PlayerGameItem item)
 {
     await holderComponent.BindCharacterPGI(item, item.PrefabType);
 }