public void Pause() { pause = true; foreach (var entity in entityLoader.GetAllEntities()) { IPause iPause = entity.Logic as IPause; if (iPause != null) { iPause.Pause(); } } cameraInput.Pause(); }
public void ShowEntity(int entityId, Type entityType, Action <Entity> showSuccess, EntityData entityData) { entityLoader.ShowEntity(entityId, entityType, (entity) => { //这里处理一下,如果暂停前调用ShowEntity,暂停后才成功加载出来调用Entity的OnShow的话,那这个Entity是没被执行到IPause的逻辑的,这里在ShowEntity成功的回调下补充个调用IPause的逻辑 if (pause == true) { IPause iPause = entity.Logic as IPause; if (iPause != null) { iPause.Pause(); } } if (showSuccess != null) { showSuccess(entity); } }, entityData); }
/// <summary> /// 一時停止・再開を切り替える /// </summary> void PauseResume() { m_pauseFlg = !m_pauseFlg; // 全ての GameObject を取ってきて、IPause を継承したコンポーネントが追加されていたら Pause または Resume を呼ぶ var objects = FindObjectsOfType <GameObject>(); foreach (var o in objects) { IPause i = o.GetComponent <IPause>(); if (m_pauseFlg) { i?.Pause(); // ここで「多態性」が使われている } else { i?.Resume(); // ここで「多態性」が使われている } } }
public IVertex Parse(Uri userLink) { var profile = _profileFactory.Create(userLink); if (InCache(profile.Id, out IVertex vertex)) { return(vertex); } //Wait before processing _pause.Pause(); //Parse root var enumerableLinks = _hyperLinkParser.ParseUser(profile); //Parse root children var degrees = enumerableLinks.Select(link => _profileFactory.Create(new Uri(link))); vertex = _vertexFactory.Create(profile, degrees); _cache.Save(vertex); return(vertex); }