示例#1
0
        /// <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));
        }
示例#2
0
        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);
            }
        }
示例#3
0
    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();
            }
        }
    }
示例#4
0
 /// <summary>
 /// 指定したシーンを閉じる
 /// </summary>
 public void CloseScene(Base scene, SceneResult result = null) =>
 CloseSceneAsync(scene, result).Forget();