首页 > 编程语言 > 详细

解决unity场景切换中数据交互的问题

时间:2020-10-26 12:24:22      阅读:79      评论:0      收藏:0      [点我收藏+]

笔者在此举一个简单的例子

我们现在已经创建好两个场景, start, game, 现在要在这两个场景中进行数据交互

unity提供了一个方法将我们想要交互的数据以一个场景保存下来,DontDestroyOnLoad();, 该方法将对挂载的物体DontDestroyOnLoad场景中,该场景不会随着start和game的切换而切换,所以,在切换场景后,我们需要的数据可以在DontDestroyOnLoad场景的物体中获取

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class Data : MonoBehaviour{

    /// <summary>
    /// 单例模式
    /// </summary>
    public static Data m_Data;

    private void Awake()
    {
        m_Data = this;
        DontDestroyOnLoad(this);
    }

}

此时便可以在想要的场景中获取到需要的数据和资源,然后再切换场景的时候,将这些数据和资源进行整合,这里的单例模式也是方便获取数据的一种方法。

挂载Data这个脚本的物体要做成预制体,否则直接存在场景中,在每一次加载该场景时,就会生成一个该物体,会造成数据积压,还会有不必要的bug产生,所以,我们在开始游戏的时候,再创建一个物体,该物体搭载的脚本将判断场景中是否有搭载Data脚本的物体,如果没有,则加载,有,则不需要创建该物体。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Global : MonoBehaviour {

    public GameObject data;

    private void Awake()
    {
        if (GameObject.FindGameObjectWithTag("Data") == null)
        {
            Instantiate(data);
        }else
        {
            GameObject.FindGameObjectWithTag("Data").GetComponent<Data>().Init();
        }
    }
}

本期是对场景切换中的一些问题进行解决,如有错误或者其他更好的方法,欢迎评论!

解决unity场景切换中数据交互的问题

原文:https://www.cnblogs.com/yylgoodjob/p/13876824.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!