private void onLeaveWorld(Entity entity) { Debug.LogFormat("World::Entity(id={0},class={1}) leave world.", entity.id, entity.className); EntityUnityComponent component = null; if (!_entityDict.TryGetValue(entity.id, out component)) { return; } if (entity.renderObj == null) { return; } if (component == null) { //Debug.LogErrorFormat("Entity资源加载后,竟然没有EntityUnityComponent!,entityId={0}, className={1}", entity.id, entity.className); return; } _entitySynchronizerDict.Remove(entity.id); if (OnEntityLeave != null) { OnEntityLeave(entity.id); } _entityDict.Remove(entity.id); _entityList.Remove(component); UnityEngine.GameObject.Destroy((UnityEngine.GameObject)entity.renderObj); entity.renderObj = null; }
public EntityUnityComponent FindEntity(int entityId) { EntityUnityComponent r = null; if (_entityDict.TryGetValue(entityId, out r)) { return(r); } return(null); }
void OnEntityResLoaded(string resName, string resPath, UnityEngine.Object resObject, System.Object userData) { IGameObject go = userData as IGameObject; Entity entity = userData as Entity; if (go == null || entity == null) { throw new Exception("World::OnResLoaded: userData cannot transfer to IGameObject or Entity"); } if (KBEngineApp.app.findEntity(entity.id) == null) { Debug.LogWarningFormat("World::OnEntityResLoaded:发现entity已经不存在,则不需要加载资源了"); return; } float y = entity.position.y; //if (entity.isOnGround) // y = 1.3f; Vector3 pos = new Vector3(entity.position.x, y, entity.position.z); Quaternion rotation = Quaternion.Euler(EngineUtils.EngineDirectionToUnity(entity.direction)); GameObject renderObj = GameObject.Instantiate(resObject, pos, rotation) as GameObject; renderObj.name = entity.className + "_" + entity.id; //该方法会由Entity的实现类去完成Unity相关组件的添加和初始化 go.SetRenderObj(renderObj); var synchronizer = renderObj.GetComponent <BaseSynchronizer>(); if (synchronizer != null) { synchronizer.SetDestPosition(entity.position); synchronizer.SetDestDirection(EngineUtils.EngineDirectionToUnity(entity.direction)); synchronizer.SpaceID = KBEngineApp.app.spaceID; _entitySynchronizerDict.Add(entity.id, synchronizer); } EntityUnityComponent component = null; if (entity.isPlayer()) { //如果是玩家自己,需要先disable一下,等待地形完成加载 _playerEntity = renderObj.GetComponent <EntityUnityComponent>(); } component = renderObj.GetComponent <EntityUnityComponent>(); if (component == null) { Debug.LogErrorFormat("Entity资源加载后,竟然没有EntityUnityComponent!,entityId={0}, className={1}", entity.id, entity.className); return; } _entityList.Add(component); _entityDict.Add(entity.id, component); if (OnEntityEnter != null) { OnEntityEnter(component); } if (entity.isPlayer()) { if (_terrain != null) { FinishMyselfLoadTask(); } } }
void OnMyselfEntered(EntityUnityComponent entity) { _btn_hello.gameObject.SetActive(true); }