GameManager
单例:绑定在不同的gameobject上,还是会每次都实例化一个GameManager但是可以为每一个GameManager赋值一个已经存在的单例--------------------awake()
如果是第一次启动会增加MainThreadDispatcher组件。永不销毁如果是重新加载该关卡的时候或者单例已经存在。会重启启动并设置start场景管理Start() 如果是第一次启动过渡到start场景管理中
-----------------------Startup()清除所有场景注册当前关卡中的所有场景管理
设置ActiveSceneManager为_Start
----------------------
RegisterSceneManager1.会设置sceneManager的Container为gameManager的Container2.会SwitchLevelSettings执行切换关卡设置3.向容器中注入sceneManager4.执行sceneManager的Setup()和Initialize()5.设置sceneManager的enabled为false且其对象不激活-----------------------------
Transition()----该方法将过渡到另一个sceneManager,或加载第一个sceneManagersceneManager.OnLoading();//加载开始
开始一个LoadSceneManager的携程sceneManager.Load(progress)//加载过程sceneManager.OnLoaded(); //加载完成 ------------------------------------------------加载另外一个关卡TransitionLevelSwitchLevelSettings-----------------
LevelLoadViewModel LoadingViewModelLevelLoadViewModel ProgressLoad------------------------------
ExecuteCommandCommandsAsObservableSubscribe------------------------------------------------------------------
ViewContainer 所有视图容器的基类继承与MonoBehaviour TView CreateView<TView>(ViewModel model) 创建view ViewBase InstantiateView(ViewModel model) 实例化一个view Coroutine LoadAdditive(string rootObjectName, string levelName, Action<GameObject> complete = null) 使用协程加载完某个场景(levelName),然后使用委托处理(rootObjectName)------------------------------------------------场景管理 MainSceneManagerSettings 场景管理设置 具有SerializableAttribute特性。可被序列化。。且是个密封类 MainSceneManagerBase:SceneManager:ViewContainer, ITypeResolverITypeResolver 接口实现了GetType SetType CreateInstance
SceneManager 实例化的时候会注册到GameManager中 -------------------------------------------------view 包含viewModelviewModel包含controller -------------------------------classnode 实现了INotifyPropertyChanged