Files
Convention-Unity-Demo/Assets/Scripts/Framework/SubWorld.cs

49 lines
1.5 KiB
C#
Raw Normal View History

2025-09-25 19:04:05 +08:00
using System.Collections;
using System.IO;
using System.Linq;
using Convention;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace Demo.Game
{
public class SubWorld : ScriptableObject
{
public static SubWorld Make()
{
return new GameObject().AddComponent<SubWorld>();
}
[Content, SerializeField] private string project;
[Content, SerializeField] private GameController SubWorldGameController;
2025-11-24 18:02:57 +08:00
protected override IEnumerator DoSomethingDuringApplyScript()
2025-09-25 19:04:05 +08:00
{
2025-11-24 18:02:57 +08:00
yield return base.DoSomethingDuringApplyScript();
2025-09-25 19:04:05 +08:00
var ir = SceneManager.LoadSceneAsync(Editor.EditorController.SceneName, LoadSceneMode.Additive);
ir.completed += x =>
{
SubWorldGameController = (from controller in FindObjectsOfType<GameController>()
where controller.RootSourcePath == project
select controller).First();
2025-11-24 18:02:57 +08:00
ConventionUtility.StartCoroutine(SubWorldGameController.GameInitBySubWorld(GetRoot().InputCatch));
2025-09-25 19:04:05 +08:00
};
}
public override IEnumerator UnloadScript()
{
yield return SubWorldGameController.GameExit();
yield return base.UnloadScript();
}
/// <summary>
/// 加载附属场景
/// </summary>
/// <param name="project"></param>
[Convention.RScript.Variable.Attr.Method]
2025-09-25 19:04:05 +08:00
public void Load(string project)
{
this.project = project;
}
}
}