1 .先创建两个场景 test1 ,test2 ,在builde setting设置
代码如下
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour {
/// <summary>
/// 单例
/// </summary>
static GameManager instance;
public void Awake()
{
// 这样就可以保证这个物体不被摧毁,那么它的子物体也就不会被摧毁,所以可以用来要保存每个场景数据的内容,分别创建
//在该父物体下。(启发思维,大小项目都需要基础扎实)
if (instance == null)
{
instance = this;
DontDestroyOnLoad(this);
}
// 如果这个静态变量已经有了, 那么就要删除掉,保留整个游戏只有一个
else if(instance !=null)
{
Debug.Log(SceneManager.GetActiveScene().name +"被摧毁的物体名字" +gameObject.name);
Destroy(gameObject);
}
}
public void Update()
{
if (Input.GetKeyDown(KeyCode.H))
{
SceneManager.LoadScene("test2");
}
if (Input.GetKeyDown(KeyCode.J))
{
SceneManager.LoadScene("test1");
}
}
}
场景设置如下
test1场景
test2场景
场景3.现在按键 H,就可以实现场景的切换。并且输出B的物体名字“被摧毁的物体名字B”;再按键J,看到被摧毁的物体名字A 。但是这开始到游戏结束一直只有一个单例A,。
最后总结,其实创建在这个脚本的变量也是不会被摧毁也可以当做共享使用。