public void OnSceneGUI()
        {
            if (bNoGrid || PrefabHelper.IsPrefab(_target.gameObject))
            {
                return;
            }

            if (!_snapFree.boolValue)
            {
                int iOddCount = 9;
                for (int i = 0; i < iOddCount; ++i)
                {
                    Handles.color = Color.red;
                    Handles.DotHandleCap(i * 3, _target.transform.position
                                         + new Vector3((i - (iOddCount - 1) / 2) * _target.GridInterval.x, 0, 0),
                                         Quaternion.identity, 0.025f, EventType.Repaint);
                    Handles.color = Color.green;
                    Handles.DotHandleCap(i * 3 + 1, _target.transform.position
                                         + new Vector3(0, (i - (iOddCount - 1) / 2) * _target.GridInterval.y, 0),
                                         Quaternion.identity, 0.025f, EventType.Repaint);
                    Handles.color = Color.blue;
                    Handles.DotHandleCap(i * 3 + 2, _target.transform.position
                                         + new Vector3(0, 0, (i - (iOddCount - 1) / 2) * _target.GridInterval.z),
                                         Quaternion.identity, 0.025f, EventType.Repaint);
                }
            }
        }
Example #2
0
 /// <summary>
 /// Collects assets of the specified prefab type.
 /// </summary>
 /// <typeparam name="TPrefab">The type of the prefab.</typeparam>
 /// <typeparam name="TAsset">The type of the asset.</typeparam>
 /// <returns>A sequence of assets of the specified type.</returns>
 protected static IEnumerable <AssetInfo> CollectPrefabs <TPrefab, TAsset>(Func <PrefabInfo, bool> predicate) where TPrefab : PrefabInfo where TAsset : AssetInfo, new()
 {
     return(PrefabHelper.Collect <TPrefab>()
            .Where(p => predicate(p))
            .Select(p => { AssetInfo a = new TAsset(); a.Initialize(p); return a; })
            .Where(a => a.Initialized));
 }
Example #3
0
        public void OnSceneGUI()
        {
            if (PrefabHelper.IsPrefab(_bulk.gameObject))
            {
                return;
            }

            if (_bulkGrid.IsInheritGrid)
            {
                return;
            }

            int     iOddCount = 9;
            Vector3 _centor   = _bulkGrid.transform.position;

            for (int i = 0; i < iOddCount; ++i)
            {
                Handles.color = Color.red;
                Handles.CircleHandleCap(iOddCount + i * 3, _centor
                                        + new Vector3((i - (iOddCount - 1) / 2) * _bulkGrid.GridInterval.x, 0, 0),
                                        SceneView.currentDrawingSceneView.camera.transform.rotation, 0.05f, EventType.Repaint);
                Handles.color = Color.green;
                Handles.CircleHandleCap(iOddCount + i * 3 + 1, _centor
                                        + new Vector3(0, (i - (iOddCount - 1) / 2) * _bulkGrid.GridInterval.y, 0),
                                        SceneView.currentDrawingSceneView.camera.transform.rotation, 0.05f, EventType.Repaint);
                Handles.color = Color.blue;
                Handles.CircleHandleCap(iOddCount + i * 3 + 2, _centor
                                        + new Vector3(0, 0, (i - (iOddCount - 1) / 2) * _bulkGrid.GridInterval.z),
                                        SceneView.currentDrawingSceneView.camera.transform.rotation, 0.05f, EventType.Repaint);
            }
        }
Example #4
0
        public void Show(GameObject skillMaskPrefab, params int[] parameters)
        {
            var cs = PrefabHelper.InstantiateAndReset <BaseSkillMask>(skillMaskPrefab, RespawnParent);

            cs.Show(parameters);
            SkillMasks.Add(cs);
        }
Example #5
0
    //[Server]
    //只在Server执行
    public void CreateProjectile(Vector3 displacement)
    {
        var ratio = 0.9f;

        //var go = Network.Instantiate(ArrowPrefab, Vector3.zero, Quaternion.identity, 0);
        var go = PrefabHelper.InstantiateAndReset(Info.ProjectilePrefab, null);

        go.transform.position = LaunchPoint.position;
        go.transform.forward  = displacement;
        var rigid      = go.GetComponent <Rigidbody>();
        var projectile = go.GetComponent <Projectile>();

        if (Info.IsSpeedFixed)
        {
            rigid.velocity = Info.InitialSpeed * displacement.normalized;
        }
        else
        {
            var actualDisplacement = displacement.normalized *
                                     (displacement.magnitude - LaunchPoint.localPosition.z);
            const float tanTheta = 1;
            var         vx       = Mathf.Sqrt(actualDisplacement.magnitude * projectile.Gravity / 2 / tanTheta);
            var         vy       = vx * tanTheta;
            rigid.velocity = vx * actualDisplacement.normalized + vy * Vector3.up;
        }
        projectile.Launcher = Caster;
        NetworkServer.Spawn(go);
    }
 void OnEnable()
 {
     if (bPrefab = PrefabHelper.IsPrefab((target as Iso2DObject).gameObject))
     {
         return;
     }
 }
Example #7
0
        public void CreateAddEnergyFloatingLabel(Vector2 localPos, long addEnergy)
        {
            var fl = PrefabHelper.InstantiateAndReset <FloatingLabel>(AddEnergyLabelPrefab, transform);

            fl.Reset(string.Format("{0}蓄力", addEnergy), 1f);
            fl.transform.localPosition = localPos;
        }
Example #8
0
        public static void CreateExplodeEffect(Vector2 pos)
        {
            var go = PrefabHelper.InstantiateAndReset(Instance.ExplodeEffectPrefab, GameManager.Container);

            go.transform.localPosition = pos;
            Destroy(go, 1);
        }
Example #9
0
 public void Refresh()
 {
     if (_slotList == null)
     {
         _slotList = new VegetableSlot[CommonData.MyVegetableList.Count];
     }
     else if (_slotList.Length != CommonData.MyVegetableList.Count)
     {
         foreach (var slot in _slotList.Where(slot => slot != null))
         {
             Destroy(slot.gameObject);
         }
         _slotList = new VegetableSlot[CommonData.MyVegetableList.Count];
     }
     for (int i = 0; i < CommonData.MyVegetableList.Count; i++)
     {
         if (_slotList[i] == null)
         {
             var slot = PrefabHelper.InstantiateAndReset <VegetableSlot>(SlotTemplate, Grid.transform);
             slot.gameObject.SetActive(true);
             _slotList[i] = slot;
         }
         _slotList[i].name = i.ToString();
         _slotList[i].SetAndRefresh(CommonData.MyVegetableList[i]);
     }
     SlotTemplate.SetActive(false);
     Grid.repositionNow = true;
 }
 private void OnEnable()
 {
     if (IsPrefab = PrefabHelper.IsPrefab(targets.Select(r => (r as SubColliderHelper).gameObject).ToArray()))
     {
         return;
     }
 }
Example #11
0
 void RefreshList2()
 {
     foreach (var friendSlot in _friendSlotList2)
     {
         Destroy(friendSlot.gameObject);
     }
     _friendSlotList2.Clear();
     if (CommonData.FriendData.FriendList != null)
     {
         for (int i = 0; i < CommonData.FriendData.FriendList.Count; i++)
         {
             var friendInfo = CommonData.FriendData.FriendList[i];
             var go         = PrefabHelper.InstantiateAndReset(FriendSlotTemplate, Grid2.transform);
             go.name = i.ToString(CultureInfo.InvariantCulture);
             go.SetActive(true);
             var cs = go.GetComponent <FriendSlot>();
             cs.SetAndRefresh(friendInfo, OnSelectFriend2, null);
             cs.ToggleSelected(false);
             _friendSlotList2.Add(cs);
             go.GetComponent <UIDragPanelContents>().draggablePanel = DraggablePanel2;
         }
     }
     Grid2.repositionNow = true;
     FriendSlotTemplate.SetActive(false);
 }
Example #12
0
 void RefreshList1()
 {
     foreach (var friendSlot in _friendSlotList1)
     {
         Destroy(friendSlot.gameObject);
     }
     _friendSlotList1.Clear();
     if (GameData.RandomTeamMemberList != null)
     {
         for (int i = 0; i < GameData.RandomTeamMemberList.Count; i++)
         {
             var friendInfo = GameData.RandomTeamMemberList[i];
             var go         = PrefabHelper.InstantiateAndReset(Reinforce1SlotTemplate, Grid1.transform);
             go.name = i.ToString(CultureInfo.InvariantCulture);
             go.SetActive(true);
             var cs = go.GetComponent <Reinforce1Slot>();
             cs.SetAndRefresh(friendInfo, OnSelectFriend1, null);
             cs.ToggleSelected(false);
             _friendSlotList1.Add(cs);
             go.GetComponent <UIDragPanelContents>().draggablePanel = DraggablePanel1;
         }
     }
     Grid1.repositionNow = true;
     Reinforce1SlotTemplate.SetActive(false);
 }
Example #13
0
 public void Preload(int count = 20)
 {
     while (CandyPoolQueue.Count < count)
     {
         Enqueue(PrefabHelper.InstantiateAndReset(Instance.CandyPrefab, Instance.transform));
     }
 }
Example #14
0
 public void Refresh(List <Mail> mailList)
 {
     if (CommonData.MailList == null)
     {
         foreach (var mailSlot in _mailSlots)
         {
             mailSlot.gameObject.SetActive(false);
         }
     }
     else
     {
         while (_mailSlots.Count < mailList.Count)
         {
             var mailSlot = PrefabHelper.InstantiateAndReset <MailSlot>(MailSlotTemplate, Grid.transform);
             mailSlot.name = "Slot" + _mailSlots.Count;
             _mailSlots.Add(mailSlot);
         }
         for (int i = 0; i < _mailSlots.Count; i++)
         {
             if (i < mailList.Count)
             {
                 _mailSlots[i].gameObject.SetActive(true);
                 _mailSlots[i].SetAndRefresh(mailList[i]);
             }
             else
             {
                 _mailSlots[i].gameObject.SetActive(false);
             }
         }
     }
     Grid.repositionNow = true;
     MailSlotTemplate.SetActive(false);
 }
Example #15
0
        public void CreateAddComboLabel(Vector2 localPos, int multiple)
        {
            var fl = PrefabHelper.InstantiateAndReset <FloatingLabel>(ComboLabelPrefab, transform);

            fl.Reset(string.Format("Combo\n蓄力×{0}", multiple), 1f);
            fl.transform.localPosition = localPos;
        }
Example #16
0
        void SetAndRefresh(Communication.Proto.Leaderboard leaderboard)
        {
            _leaderboard = leaderboard;

            for (int i = 0; i < Count; i++)
            {
                if (i < _leaderboard.ItemList.Count)
                {
                    if (_leaderboardSlots[i] == null)
                    {
                        var go = PrefabHelper.InstantiateAndReset(MySlot.gameObject, Grid.transform);
                        go.name = "Slot " + i;
                        _leaderboardSlots[i] = go.GetComponent <LeaderboardSlot>();
                    }
                    if (_leaderboardSlots[i] != null)
                    {
                        _leaderboardSlots[i].gameObject.SetActive(true);
                        _leaderboardSlots[i].SetAndRefresh(_leaderboard.ItemList[i]);
                    }
                }
                else
                {
                    if (_leaderboardSlots[i] != null)
                    {
                        _leaderboardSlots[i].gameObject.SetActive(false);
                    }
                }
            }
            Grid.repositionNow = true;

            MySlot.SetAndRefresh(_leaderboard.MyItem);
        }
Example #17
0
        public void CreatePraiseLabel(int multiple)
        {
            var    fl = PrefabHelper.InstantiateAndReset <FloatingLabel>(PraiseLabelPrefab, transform);
            string text;

            switch (multiple)
            {
            case 2:
                text = "Good\n×2";
                break;

            case 3:
                text = "Awesome\n×3";
                break;

            case 4:
                text = "Perfect\n×4";
                break;

            default:
                text = "Holy Shit!!!\n×" + multiple;
                break;
            }
            fl.Reset(text, 0.5f);
        }
Example #18
0
        void OnEnable()
        {
            if (target == null || Selection.activeGameObject == null)
            {
                return;
            }

            if (bPrefab = PrefabHelper.IsPrefab(targets.Select(r => (r as IsoTile).gameObject).ToArray()))
            {
                return;
            }

            update_InspectorTile();

            if (screenInfoFontStyle == null)
            {
                screenInfoFontStyle = new GUIStyle();
                screenInfoFontStyle.normal.textColor = Color.green;
                screenInfoFontStyle.fontStyle        = FontStyle.Bold;
                screenInfoFontStyle.fontSize         = 15;
            }

            if (SceneView.lastActiveSceneView != null && bFrameSelected)
            {
                SceneView.lastActiveSceneView.FrameSelected(false);
            }
        }
Example #19
0
        public void StripeHSpecialPopEffect(IntVector2 ij, int genre)
        {
            var go = PrefabHelper.InstantiateAndReset(HEffectPrefab, transform);

            go.transform.localPosition = GameManager.Instance.MyGrid.GetCellPosition(ij);
            Destroy(go, 3);
        }
Example #20
0
        public void Refresh()
        {
            var skillConfig = ConfigManager.GetConfig(ConfigManager.ConfigType.SkillConfig) as SkillConfig;

            if (skillConfig != null)
            {
                if (_slotList == null)
                {
                    _slotList = new SkillSlot[skillConfig.SkillList.Count];
                }
                else if (_slotList.Length != skillConfig.SkillList.Count)
                {
                    foreach (var slot in _slotList.Where(slot => slot != null))
                    {
                        Destroy(slot.gameObject);
                    }
                    _slotList = new SkillSlot[skillConfig.SkillList.Count];
                }
                for (var i = 0; i < skillConfig.SkillList.Count; i++)
                {
                    if (_slotList[i] == null)
                    {
                        var slot = PrefabHelper.InstantiateAndReset <SkillSlot>(SlotTemplate, Grid.transform);
                        _slotList[i] = slot;
                    }
                    _slotList[i].name = i.ToString(CultureInfo.InvariantCulture);

                    _slotList[i].SetAndRefresh(skillConfig.SkillList[i]);
                }
            }
            SlotTemplate.SetActive(false);
        }
Example #21
0
        public void SetAndRefresh(int majorId, SubLevelUnlockInfo subLevelUnlockInfo, SubLevelData subLevelData)
        {
            _majorId            = majorId;
            _subLevelUnlockInfo = subLevelUnlockInfo;
            _subLevelData       = subLevelData;
            LblNum.text         = _subLevelData.SubLevelId.ToString();
            var unlocked  = _subLevelUnlockInfo != null && _subLevelUnlockInfo.Unlocked;
            var starCount = _subLevelUnlockInfo != null ? _subLevelUnlockInfo.CurrentStar : 0;

            SprPoint.color = unlocked ? Color.white : Color.gray;
            for (int i = 0; i < 3; i++)
            {
                Stars[i].SetActive(i < starCount);
            }
            if (unlocked && starCount == 0)
            {
                if (!_standOnArrow)
                {
                    _standOnArrow = PrefabHelper.InstantiateAndReset(StandOnArrowPrefab, transform);
                }
            }
            else
            {
                Destroy(_standOnArrow);
            }
        }
Example #22
0
        public static void CreateVCContextMenu(ref GenericMenu menu, string assetPath, Object instance = null)
        {
            if (VCUtility.ValidAssetPath(assetPath))
            {
                bool ready = VCCommands.Instance.Ready;
                if (ready)
                {
                    if (instance && ObjectUtilities.ChangesStoredInScene(instance))
                    {
                        assetPath = SceneManagerUtilities.GetCurrentScenePath();
                    }
                    var validActions = GetValidActions(assetPath, instance);

                    if (validActions.showDiff)
                    {
                        menu.AddItem(new GUIContent(Terminology.diff), false, () => VCUtility.DiffWithBase(assetPath));
                    }
                    if (validActions.showAdd)
                    {
                        menu.AddItem(new GUIContent(Terminology.add), false, () => VCCommands.Instance.Add(new[] { assetPath }));
                    }
                    if (validActions.showOpen)
                    {
                        menu.AddItem(new GUIContent(Terminology.getlock), false, () => GetLock(assetPath, instance));
                    }
                    if (validActions.showOpenLocal)
                    {
                        menu.AddItem(new GUIContent(Terminology.allowLocalEdit), false, () => AllowLocalEdit(assetPath, instance));
                    }
                    if (validActions.showForceOpen)
                    {
                        menu.AddItem(new GUIContent("Force " + Terminology.getlock), false, () => GetLock(assetPath, instance, OperationMode.Force));
                    }
                    if (validActions.showCommit)
                    {
                        menu.AddItem(new GUIContent(Terminology.commit), false, () => Commit(assetPath, instance));
                    }
                    if (validActions.showUnlock)
                    {
                        menu.AddItem(new GUIContent(Terminology.unlock), false, () => VCCommands.Instance.ReleaseLock(new[] { assetPath }));
                    }
                    if (validActions.showDisconnect)
                    {
                        menu.AddItem(new GUIContent("Disconnect"), false, () => PrefabHelper.DisconnectPrefab(instance as GameObject));
                    }
                    if (validActions.showDelete)
                    {
                        menu.AddItem(new GUIContent(Terminology.delete), false, () => VCCommands.Instance.Delete(new[] { assetPath }));
                    }
                    if (validActions.showRevert)
                    {
                        menu.AddItem(new GUIContent(Terminology.revert), false, () => Revert(assetPath, instance));
                    }
                }
                else
                {
                    menu.AddDisabledItem(new GUIContent("..Busy.."));
                }
            }
        }
Example #23
0
 public void Preload(int count = 20)
 {
     while (PopParticleSysPoolList.Count < count)
     {
         Enqueue(PrefabHelper.InstantiateAndReset(Instance.PopParticleSysPrefab, Instance.transform));
     }
 }
Example #24
0
    public void RpcPlayPointEffect(Vector3 location)//TODO:和Destroy同时故无法在客户端生效
    {
        var go = PrefabHelper.InstantiateAndReset(ExplodePrefab, null);

        go.transform.position = location;
        Destroy(go, 10);
    }
Example #25
0
        public override ISyncScenarioItem Apply(CastContext castContext, int abilityLevel)
        {
            var linesCollider = PrefabHelper.Intantiate(_linesColliderPrefab, Game.Instance.gameObject);

            linesCollider.transform.position   = castContext.Caster.Position;
            linesCollider.transform.localScale = Vector3.one;
            linesCollider.OnTrigger           += (unit) =>
            {
                if (unit.PlayerId != castContext.Caster.PlayerId)
                {
                    DamageSystem.ApplyDamage(castContext.Caster, _damage.GetValue(abilityLevel), unit);
                }
            };
            var renderers = linesCollider.GetComponentsInChildren <Renderer>();

            return(new SyncScenario(
                       new List <ISyncScenarioItem> {
                new ActionScenarioItem(() =>
                {
                    FMODUnity.RuntimeManager.PlayOneShot("event:/Explosion");
                }),
                new AlphaTween(renderers, 0),
                new AlphaTween(renderers, 1, 0.1f, EaseType.QuadIn),
                new AlphaTween(renderers, 0, 0.3f, EaseType.QuadOut)
            },
                       (s, interrupted) => Object.Destroy(linesCollider.gameObject)
                       ).PlayRegisterAndReturnSelf());
        }
Example #26
0
        public void Refresh()
        {
            _challengeLevelConfig =
                ConfigManager.GetConfig(ConfigManager.ConfigType.ChallengeLevelConfig) as ChallengeLevelConfig;
            if (_challengeLevelConfig == null)
            {
                Debug.LogError("没有ChallengeLevelConfig,玩个毛");
                return;
            }
            while (MajorLevelSectorList.Count < _challengeLevelConfig.MajorLevelList.Count)
            {
                MajorLevelSectorList.Add(null);
            }
            for (int i = 0; i < _challengeLevelConfig.MajorLevelList.Count; i++)
            {
                if (MajorLevelSectorList[i] == null)
                {
                    MajorLevelSectorList[i]      = PrefabHelper.InstantiateAndReset(MajorLevelSectorTemplate, transform);
                    MajorLevelSectorList[i].name = "MajorLevelSector " + i;
                    MajorLevelSectorList[i].SetActive(true);
                    MajorLevelSectorList[i].transform.localEulerAngles = new Vector3(0, 0, -i * OffsetAngle);
                }

                var majorLevelId = _challengeLevelConfig.MajorLevelList[i].MajorLevelId;
                var cui          = CommonData.ChallengeUnlockInfoList.Find(
                    x => x.MajorLevelId == majorLevelId);

                MajorLevelSectorList[i].GetComponentInChildren <Island>()
                .SetAndRefresh(PushLevelUI, majorLevelId, cui,
                               _challengeLevelConfig.MajorLevelList[i]);
            }
            //LastNotOpenSign.name = "MajorLevelButton " + CommonData.ChallengeUnlockInfoList.Count;

            MajorLevelSectorTemplate.SetActive(false);
        }
Example #27
0
        public override ISyncScenarioItem Apply(CastContext castContext, int abilityLevel)
        {
            var effect = PrefabHelper.Intantiate(_explosionEffectPrefab, Game.Instance.gameObject);

            effect.transform.position   = castContext.Caster.Position;
            effect.transform.localScale = Vector3.zero;

            var radius  = _radius.GetValue(abilityLevel);
            var targets = MapController.Instance.GetEnemiesInArea(castContext.Caster.Position,
                                                                  radius, castContext.Caster.PlayerId);

            for (int i = 0; i < targets.Count; i++)
            {
                DamageSystem.ApplyDamage(castContext.Caster, _damage.GetValue(abilityLevel), targets[i]);
            }

            return(new SyncScenario(
                       new List <ISyncScenarioItem> {
                new ActionScenarioItem(() =>
                {
                    FMODUnity.RuntimeManager.PlayOneShot("event:/Explosion");
                }),
                new AlphaTween(effect, 1),
                new ScaleTween(effect, 10 * radius * Vector3.one, 0.5f, EaseType.QuadIn),
                new AlphaTween(effect, 0, 0.3f, EaseType.QuadOut)
            },
                       (s, interrupted) => Object.Destroy(effect.gameObject)
                       ).PlayRegisterAndReturnSelf());
        }
Example #28
0
    void Refresh(List <LeaderboardItem> leaderboardItems, LeaderboardItem myItem)
    {
        if (leaderboardItems != null)
        {
            var count = Mathf.Min(10, leaderboardItems.Count);
            SlotTemplate.SetActive(false);
            for (int i = 0; i < count; i++)
            {
                var go = PrefabHelper.InstantiateAndReset(SlotTemplate, Grid.transform);
                go.SetActive(true);
                go.name = SlotTemplate.name + i.ToString("000");
                var slot = go.GetComponent <LeaderboardSlot>();
                SlotList.Add(slot);
                var item = leaderboardItems[i];
                slot.Refresh(item.Rank, item.Nickname, item.Score);
            }
        }
        Grid.repositionNow = true;

        if (myItem != null)
        {
            MySlot.Refresh(myItem.Rank, myItem.Nickname, myItem.Score);
            var nickname = "";// ForeverDataHolder.Nickname;
            if (string.IsNullOrEmpty(nickname))
            {
                GrpNoNickname.SetActive(true);
                MySlot.LblNickname.text = "请输入昵称";
            }
            else
            {
                GrpNoNickname.SetActive(false);
                MySlot.LblNickname.text = nickname;
            }
        }
    }
Example #29
0
        //创建本地玩家
        private void CreateLocalUnit(M2C_InViewUnits message)
        {
            var localUnit = MongoHelper.FromBson <Unit>(message.SelfUnit.bytes);

            Unit.LocalUnit = localUnit;
            Log.Debug($"localUnit.Position {localUnit.Position} ");
            Log.Debug($"localUnit.Position {localUnit.Components.Count} ");
            //Log.Debug($"localUnit.Position  {localUnit.GetComponent<TransformComponent>()}");
            var go = UnityEngine.Object.Instantiate(PrefabHelper.GetUnitPrefab("LocalUnit"));

            go.transform.position = localUnit.Position;
            GameObject.DontDestroyOnLoad(go);
            foreach (var item in localUnit.Components.Values)
            {
                Log.Debug($"{item.GetType().Name}");
                ETModel.Game.EventSystem.RegisterSystem(item);
                item.Parent = localUnit;
            }
            //var unit = ETModel.EntityFactory.CreateWithId<Unit>(ETModel.Game.Scene, localUnit.Id);
            ETModel.Game.EventSystem.Awake(localUnit);
            localUnit.Awake(go);
            UnitComponent.Instance.Add(localUnit);
            //go.transform.GetChild(2).parent = null;
            //go.transform.GetChild(1).parent = null;
            localUnit.Position = localUnit.Position;
            Game.Scene.AddComponent <OperaComponent>();
        }
Example #30
0
 public static async ETTask <ETModel.Entity> OnEnterView(EntiyInfo entityInfo)
 {
     try
     {
         Log.Debug($"{EntityDefine.GetType(entityInfo.Type).Name}");
         if (entityInfo.Type == EntityDefine.GetTypeId <Unit>())
         {
             var remoteUnit = MongoHelper.FromBson <Unit>(entityInfo.BsonBytes.bytes);
             foreach (var item in remoteUnit.Components)
             {
                 Log.Debug($"remoteUnit {item.GetType().Name}");
             }
             //remoteUnit.Domain = ETModel.Game.Scene;
             //Unit unit = UnitFactory.Create(ETModel.Game.Scene, remoteUnit.Id);
             var go = UnityEngine.Object.Instantiate(PrefabHelper.GetUnitPrefab("RemoteUnit"));
             go.transform.position = remoteUnit.Position;
             GameObject.DontDestroyOnLoad(go);
             //var unit = EntityFactory.CreateWithId<Unit>(domain, id);
             ETModel.Game.EventSystem.RegisterSystem(remoteUnit);
             ETModel.Game.EventSystem.Awake(remoteUnit);
             remoteUnit.Awake(go);
             UnitComponent.Instance.Add(remoteUnit);
             remoteUnit.Position = remoteUnit.Position;
             //remoteUnit.Dispose();
             return(remoteUnit);
         }
         if (entityInfo.Type == EntityDefine.GetTypeId <Bullet>())
         {
             var remoteBullet = MongoHelper.FromBson <Bullet>(entityInfo.BsonBytes.bytes);
             //Log.Debug($"{remoteBullet}");
             //var bullet = ETModel.EntityFactory.CreateWithId<Bullet>(ETModel.Game.Scene, remoteBullet.Id);
             Log.Debug($"{remoteBullet.Components.Count}");
             ETModel.Game.EventSystem.RegisterSystem(remoteBullet);
             ETModel.Game.EventSystem.Awake(remoteBullet);
             BulletComponent.Instance.Add(remoteBullet);
             //remoteBullet.Dispose();
             return(remoteBullet);
         }
         if (entityInfo.Type == EntityDefine.GetTypeId <Monster>())
         {
             var remote = MongoHelper.FromBson <Monster>(entityInfo.BsonBytes.bytes);
             Log.Debug($"HealthComponent HP{remote.GetComponent<HealthComponent>().HP}");
             remote.Awake();
             remote.Domain   = ETModel.Game.Scene;
             remote.BodyView = GameObject.Instantiate(PrefabHelper.GetUnitPrefab("Monster"));
             GameObject.DontDestroyOnLoad(remote.BodyView);
             //var monster = MonsterFactory.Create(ETModel.Game.Scene, remote.Id);
             MonsterComponent.Instance.Add(remote);
             //remote.Position = remote.Position;
             //remote.Dispose();
             return(remote);
         }
     }
     catch (System.Exception e)
     {
         Log.Error(e);
     }
     return(null);
 }