Проблема в том, что я думаю
Scene scene = SceneManager.GetActiveScene();
scene.GetRootGameObjects(rootObjects);
получает объекты со сцены до полной загрузки сцены, поэтому они сбрасываются.
Из Документа
При использовании SceneManager.LoadScene загрузка не происходит сразу, она завершается в следующем кадре. Такое полусинхронное поведение может вызвать заикание кадра и может привести к путанице, поскольку загрузка не завершается немедленно.
Полагаю, вам лучше использовать SceneManager.sceneLoaded и делать там что-то вроде
public void Load()
{
SceneManager.LoadScene(sceneID);
}
И, возможно, в дополнительном компоненте сцены:
void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
// your stuff here
}
void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
хотя мы не знаем / не видим откуда player
, cube[ncube]
и т. Д. ...
для переноса значений между сценами, вы должны использовать ScriptableObjects