Переход сцены Unity - исходный фон не отображаетсяC#

Место общения программистов C#
Ответить
Anonymous
 Переход сцены Unity - исходный фон не отображается

Сообщение Anonymous »

[*]В сцене с названием Stage1 игрок перемещается в сцену с названием Stage1_1 через врата.
с использованием System.Collections; использование System.Collections.Generic; использование UnityEngine; использование UnityEngine.SceneManagement; общедоступный класс ChangeSceneOnTag: MonoBehaviour { частная пустота OnTriggerEnter2D (другое Collider2D) { // При контакте с объектом с тегом "Звезда" если (other.CompareTag("Звезда")) { LoadStage1_1Сцена(); } } недействительный LoadStage1_1Scene() { SceneManager.LoadScene("Сцена1_Сцена 1"); } } [*]Из этапа 1_1 игрок переходит к определенной точке появления на этапе 1 через другие ворота. с использованием UnityEngine; использование UnityEngine.SceneManagement; общедоступный класс ChangeSceneOnTag2: MonoBehaviour { частная пустота Старт() { } частная пустота OnTriggerEnter2D (другое Collider2D) { // При контакте с объектом с тегом "Gate" если (other.CompareTag("Ворота")) { ЗагрузитьСцену1Сцена(); // Регистрируем метод, который будет вызываться после завершения загрузки сцены SceneManager.sceneLoaded += OnSceneLoaded; } } недействительный LoadStage1Scene() { SceneManager.LoadScene("Stage1_Scene"); } void OnSceneLoaded (сцена сцены, режим LoadSceneMode) { if (scene.name == "Stage1_Scene") { GameObject player = GameObject.FindGameObjectWithTag("Игрок"); GameObject spawnPoint = GameObject.Find("SpawnPoint"); if (player != null && spawnPoint != null) { player.transform.position = spawnPoint.transform.position; Камера mainCamera = Camera.main; если (mainCamera != ноль) { mainCamera.transform.position = новый Vector3(spawnPoint.transform.position.x, spawnPoint.transform.position.y, mainCamera.transform.position.z); } // Сбрасываем ParallaxBackground. СброситьПараллаксФон(); } // Удаляем этот обработчик событий, поскольку он больше не нужен. SceneManager.sceneLoaded -= OnSceneLoaded; } } void ResetParallaxBackground() { ParallaxBackground[] parallaxBackgrounds = FindObjectsOfType(); foreach (var bg в parallaxBackgrounds) { bg.ResetBackground(Camera.main.transform.position); } } } Проблема, с которой я столкнулся, связана с фоном. У меня есть код ParallaxBackground.cs.

с использованием System.Collections; использование System.Collections.Generic; использование UnityEngine; общедоступный класс ParallaxBackground: MonoBehaviour { общедоступная камера TransformTransform; public float parallaxSpeed ​​= 0.5f; // Отрегулируйте значение от 0 до 1, чтобы изменить степень движения. частный Vector3 LastCameraPosition; недействительный старт() { LastCameraPosition = cameraTransform.position; } недействительное обновление() { Vector3 deltaMovement = cameraTransform.position - LastCameraPosition; Transform.position += new Vector3(deltaMovement.x * parallaxSpeed, deltaMovement.y * parallaxSpeed, 0f); LastCameraPosition = cameraTransform.position; } public void ResetBackground (Vector3 newCameraPosition) { LastCameraPosition = newCameraPosition; } } Однако при переходе к определенной точке SpawnPoint на этапе Stage1 этот код не работает. В результате исходный фон Stage1 не отображается. Как мне решить эту проблему?

Stage1 -> Stage1_1 -> SpawnPoint на Stage1 ==> Переход сцены в порядке. Однако ParallaxBackground.cs, связанный с переходом сцены, не работает. Игрок переместился в SpawnPoint, но фон не последовал за ним.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»