public static Units CreateHeroByUnitInfo(UnitInfo info)
        {
            Units result;

            try
            {
                if (info == null)
                {
                    result = null;
                }
                else
                {
                    EntityVo entityVo = new EntityVo(EntityType.Hero, info.typeId, 0, 0, string.Empty, "Default", 0)
                    {
                        uid      = info.unitId,
                        level    = info.level,
                        hp       = 99999f,
                        mp       = 99999f,
                        effectId = string.Empty
                    };
                    Units unit = MapManager.Instance.GetUnit(info.mainHeroId);
                    if (unit != null)
                    {
                        if (unit.npc_id == "Jiansheng")
                        {
                            entityVo.effectId = "1|Perform_jsbirth_fenshen";
                        }
                        else if (unit.npc_id == "Houzi")
                        {
                        }
                    }
                    SpawnUtility spawnUtility = GameManager.Instance.Spawner.GetSpawnUtility();
                    Vector3      vector       = MoveController.SVectgor3ToVector3(info.position);
                    string       userName     = (!(unit == null)) ? unit.summonerName : "1";
                    string       summerId     = "1";
                    Units        units        = spawnUtility.SpawnPvpHero(entityVo, "Hero", (TeamType)info.group, 0, userName, summerId, new Vector3?(vector), UnitType.FenShenHero);
                    if (units != null && unit != null)
                    {
                        units.level = unit.level;
                        units.data.SetMaxHp(unit.hp_max);
                        units.data.SetMaxMp(unit.mp_max);
                        units.data.SetHp(unit.hp);
                        units.data.SetMp(unit.mp);
                        units.SetParentUnit(unit);
                        units.SetMirrorState(true);
                        if (unit.npc_id == "Jiansheng")
                        {
                            units.SetCanAIControl(true);
                            units.SetCanSkill(false);
                            units.effect_id = "2|Perform_jsdead_fenshen";
                        }
                        else if (unit.npc_id == "Houzi")
                        {
                            units.effect_id = "2|FenShenDeath,2|DashengS2";
                            units.SetCanAIControl(false);
                            units.SetCanAction(false);
                            units.trans.rotation = unit.trans.rotation;
                        }
                        Units selectedTarget = PlayerControlMgr.Instance.GetSelectedTarget();
                        if (selectedTarget != null && unit.unique_id == selectedTarget.unique_id)
                        {
                            PlayerControlMgr.Instance.GetPlayer().SetSelectTarget(null);
                            PlayerControlMgr.Instance.GetPlayer().SetAttackTarget(null);
                            PlayerControlMgr.Instance.SetSelectedTarget(null);
                        }
                        units.SetPosition(vector, true);
                    }
                    result = units;
                }
            }
            catch (Exception e)
            {
                ClientLogger.LogException(e);
                result = null;
            }
            return(result);
        }