假设游戏中有SceneA和SceneB两个场景,想要从SceneA跳转到SceneB时需要传递数据,起初还以为SceneManager.LoadScene应该能像安卓开发一样(intent)挂个数据就行,但很快我发现我想多了,SceneManager没有传递参数选项。
从冰箱拿一瓶82年的可乐边喝边看Unity官网文档后找到解决方案了。
1)新建一个脚本(假设叫GameData)代码如下:
public class GameData : MonoBehaviour
{
public int param;
void Awake()
{
DontDestroyOnLoad(transform.gameObject);
}
}
2) 在SceneA上新建一个EmptyObject(假设名叫GameData,这个名称随便,我为了方便就用了跟脚本文件同名的),然后把刚才的脚本挂上去。
3)在SceneA上SceneManager.LoadScene之前给GameData赋值:
GameObject.Find("GameData").GetComponent<GameData>().param = 12313213;
SceneManager.LoadScene("SceneBScene");
4)在SceneB的start函数中用下面的方式获取我们的数据:
private void Start()
{
int param = GameObject.Find("GameData").GetComponent<GameData&g