IEnumerator _EnterScene(int sceneID) { var newBehavior = GetBehavior(sceneID); var new_sceneBase = DB.SceneBaseMap[sceneID]; if (_cur_behavior != newBehavior) { //退出当前玩法 _cur_behavior?.LeaveBehavior(); _last_behavior = _cur_behavior; _cur_behavior = newBehavior; } if (sceneID != _cur_scene_id) { _cur_behavior?.LeaveScene(); _last_scene_id = _cur_scene_id; _cur_scene_id = sceneID; //加载新场景 yield return(GameMng.instance.StartCoroutine(BuildScene(new_sceneBase))); } //初始化 InitScene(new_sceneBase); _cur_behavior.InitBehavior(); _cur_behavior.InitScene(); //进入 _cur_behavior.EnterBehavior(); _cur_behavior.EnterScene(); yield return(null); }