コード例 #1
0
        /// <summary>
        /// Unity Method
        /// </summary>
        private void Awake()
        {
            //初始化实验室管理交互接口
            LabInterSystem.Init();

            //当存储系统初始化时,即开始记录,设置开始记录时的当前帧数
            if (!StartRecord)
            {
                RecordSystem.StartRecordFrame = Time.frameCount;
                StartRecord = true;
            }
            RestoreSystem.ClearDataModel();
            //场景初始化是,将场景中当前的DataModel保存起来
            var allDataModels = Resources.FindObjectsOfTypeAll <DataModelBehaviour>();

            foreach (var item in allDataModels)
            {
                if (item.hideFlags != (HideFlags.NotEditable | HideFlags.HideInHierarchy))
                {
                    if (item.GetComponent <UniqueID>() == null)
                    {
                        Debug.Log("当前挂有DataModel的物体:[+" + item.name + "] 未添加 [UniqueID]");
                    }
                    else
                    {
                        //报空对象,检查预制体问题
                        RestoreSystem.AddDataModel(item.GetComponent <UniqueID>().UniqueId, item);
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 如果有场景变换,采用异步等待方式还原数据
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        System.Collections.IEnumerator LoadScene(string name)
        {
            if (!UnityEngine.SceneManagement.SceneManager.GetActiveScene().name.Equals(name))
            {
                AsyncOperation asyncOperation = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(name);
                asyncOperation.allowSceneActivation = false;
                while (asyncOperation.isDone)
                {
                    yield return(null);
                }
                asyncOperation.allowSceneActivation = true;
                //等待1秒,初始化结束(场景物体)
                yield return(new WaitForSeconds(1));
            }
            //将所有物体设置为激活状态,随后在还原
            RestoreSystem.ClearDataModel();
            var allDataModels = Resources.FindObjectsOfTypeAll <DataModelBehaviour>();

            foreach (var item in allDataModels)
            {
                if (item.hideFlags != (HideFlags.NotEditable | HideFlags.HideInHierarchy))
                {
                    RestoreSystem.AddDataModel(item.GetComponent <UniqueID>().UniqueId, item);
                    item.gameObject.SetActive(true);
                }
            }
            //等待1秒,初始化结束(DataModel脚本)
            yield return(new WaitForSeconds(1));

            //执行数据写入,设置自身状态
            _restoreSystem.LoadStorageData();
            StartCoroutine(RestoreSceneCallBack());
        }