public DataQueue RegisterScene(SceneType scene) { ISceneController ctrler = null; if (!ctrlers.TryGetValue(scene, out ctrler)) { Func <SceneType, ISceneController> creator = null; if (ctrlerCreators.TryGetValue(scene, out creator)) { ctrler = creator(scene); } else { return(null); } ctrlers.Add(scene, ctrler); } return(ctrler.RegisterScene(scene)); }