实例:想在coursePage中传递个字符串参数到lessonPage中。 coursePage里面写个脚本,起作用的其实是DontDestroyOnLoad,有了这句,在切换Scene的时候就可以保留这个obj而不被销毁。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LessonObjScript : MonoBehaviour
{
public static LessonObjScript myLessonApi;
public string lessonApiAddress;
public static GameObject obj;
// Use this for initialization
void Start()
{
}
public static LessonObjScript getInstance()
{
if (myLessonApi == null)
{
obj = new GameObject("apiLesson");//创建一个带名字的对象
myLessonApi = obj.AddComponent(typeof(LessonObjScript)) as LessonObjScript;
DontDestroyOnLoad(obj);
}
return myLessonApi;
}
// Update is called once per frame
void Update()
{
}
}
然后在coursePage里面这样用:
var lScript = LessonObjScript.getInstance();
lScript.lessonApiAddress = brief.LessonUrl; //coursePage中产生的某数据保存起来
SceneManager.LoadScene("lessonPage");
新建这个实例之后就可以保存字符串数据到LessonObjScript实例类中了,之后可以载入并打开新的Scene:lessonPage lessonPage里面就可以通过实例类来获取到里面的数据。
。。。
void Start()
{
var lScript = LessonObjScript.getInstance();
Debug.Log("需要下载的lessonApi: "+lScript.lessonApiAddress);
明白了原理其实也比较简单,就是通过实例类来共享数据,在整个程序运行中,此LessonObjScript实例类有且仅有一份(单例)
