增加skill、加入界面基础加载
This commit is contained in:
1 parent
839165ea63
commit
5921a4884e
128 files changed
+17935
-5023
No files matched your search
@@ -0,0 +1,53 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
/// <summary>
|
||||
/// 暂停菜单:继续游戏 / 回到 Main 场景。
|
||||
/// 按钮点击在各自 Button 的 On Click() 里接线(Inspector 配置)。
|
||||
/// </summary>
|
||||
[DisallowMultipleComponent]
|
||||
public class PauseMenu : MonoBehaviour
|
||||
{
|
||||
[Tooltip("「回到Main」要加载的场景名,必须已经加进 Build Settings")]
|
||||
[SerializeField] private string mainSceneName = "Main";
|
||||
|
||||
private bool _leaving;
|
||||
|
||||
/// <summary>继续游戏:恢复时间,关掉自己。</summary>
|
||||
public void OnContinueClicked()
|
||||
{
|
||||
Time.timeScale = 1f;
|
||||
Destroy(gameObject);
|
||||
}
|
||||
|
||||
/// <summary>回到 Main:加载 Main 场景,加载完成后卸载当前场景。</summary>
|
||||
public void OnBackToMainClicked()
|
||||
{
|
||||
if (_leaving) return;
|
||||
_leaving = true;
|
||||
Time.timeScale = 1f;
|
||||
StartCoroutine(LoadMainThenUnloadCurrent());
|
||||
}
|
||||
|
||||
private IEnumerator LoadMainThenUnloadCurrent()
|
||||
{
|
||||
Scene currentScene = gameObject.scene;
|
||||
|
||||
AsyncOperation load = SceneManager.LoadSceneAsync(mainSceneName, LoadSceneMode.Additive);
|
||||
if (load == null)
|
||||
{
|
||||
Debug.LogError("[PauseMenu] 场景 \"" + mainSceneName + "\" 加载失败,确认它已加入 Build Settings。", this);
|
||||
_leaving = false;
|
||||
yield break;
|
||||
}
|
||||
|
||||
yield return load; // 等 Main 加载完成
|
||||
|
||||
Scene loaded = SceneManager.GetSceneByName(mainSceneName);
|
||||
if (loaded.IsValid())
|
||||
SceneManager.SetActiveScene(loaded);
|
||||
|
||||
SceneManager.UnloadSceneAsync(currentScene); // 卸载当前场景
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user