/// <summary> /// 指定したSceneDataを持つところまで戻る /// </summary> public async UniTask <Base> BackToSceneAsync(SceneID sceneID, SceneResult result = null) { var sceneData = FindSceneDataBySceneID(sceneID); if (sceneData == null) { Utility.Log.Error($"指定したSceneIDが見つからない {sceneID}"); return(null); } sceneData.Result = result; return(await BackToSceneAsync(sceneData)); }
public async UniTask CloseSceneAsync(Base scene, SceneResult result = null) { if (_currentScene == scene) { // CurrentSceneの場合、一つ前のシーンに戻る var lastSceneData = _sceneData.Last(); // 結果を登録しておく lastSceneData.Result = result; await BackToSceneAsync(lastSceneData); } else { // 自分を止める await StopSceneAsyncInternal(scene, needsChildren : true); // 親をアクティブ状態にする var parent = scene.Parent; if (parent != null) { // 結果を登録しておく parent.SceneData.Result = result; // 開始前にどのシーンから戻ってきたかを通知する parent.CamebackScene(scene); parent.RemoveChild(scene); parent.IsStartScene = true; parent.StartScene(); } // 自分を削除 await DestroySceneAsyncInternal(scene); } }
IEnumerator LoadScenes() { ProgressIndicator.Instance.SetMessage("Loading scenes..."); string url = string.Format("{0}/v2/api/docs/{1}/scenes", _config.demoServerURL, _config.modelID); using (UnityWebRequest req = UnityWebRequest.Get(url)) { req.SetRequestHeader("Authorization", "Bearer " + _config.accessToken); yield return(req.SendWebRequest()); ProgressIndicator.Instance.Close(); if (req.isNetworkError || req.isHttpError) { Debug.LogError(req.downloadHandler.text); Dialog.Open(dialogPrefab.gameObject, DialogButtonType.OK, "Scenes List Loading Error", req.downloadHandler.text); } else { string json = "{ \"scenes\": " + req.downloadHandler.text + " }"; SceneResult result = JsonUtility.FromJson <SceneResult>(json); foreach (var scene in result.scenes) { GameObject clone = Instantiate(buttonPrefab, transform); var textMesh = clone.GetComponentInChildren <TextMesh>(); textMesh.text = scene; var selectHandler = clone.AddComponent <SceneSelectHandler>(); selectHandler.appConfig = _config; selectHandler.target = sceneTarget; selectHandler.scene = scene; selectHandler.dialogPrefab = dialogPrefab; selectHandler.issuesTarget = issueTarget; selectHandler.issuePrefab = issuePrefab; } GetComponent <ObjectCollection>().UpdateCollection(); } } }
/// <summary> /// 指定したシーンを閉じる /// </summary> public void CloseScene(Base scene, SceneResult result = null) => CloseSceneAsync(scene, result).Forget();