private async UniTask Open(RequestDialog request) { Context context = null; if (!_contexts.TryGetValue(request.Name, out context)) { var dialogObject = await _factory.Spawn(request.Name); context = new Context() { Dialog = dialogObject.GetComponent <IDialog>(), Object = dialogObject, }; _contexts.Add(request.Name, context); } await Open(new Request() { Dialog = context.Dialog, Param = request.Param, }); }