我有一個問題,當我將場景從選單更改為游戲時,當我單擊時,我會收到錯誤訊息“'GameObject' 型別的物件已被破壞,但您仍在嘗試訪問它。” 這發生在選單控制器不在游戲場景中時,過去幾天我一直在努力解決這個問題,但找不到如何去做。如果有人可以提供幫助,那就太好了,這種問題已經被問了很多,但我找不到解決我的問題的方法。
我們還有一個類似的腳本,它具有相同的代碼,只是為了互動而不是場景切換,所以當我們嘗試與某些東西互動時,我們會得到錯誤
感謝您的幫助。
選單控制器
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;
using API;
public class MenuController : MonoBehaviour
{
[SerializeField] private InputActionReference shoot;
[SerializeField] private InputActionReference shoot2;
public GameObject sendObject;
public GameObject sendObject2;
public float range = 1000;
void Start()
{
shoot.action.performed = Shoot;
}
async void Shoot(InputAction.CallbackContext obj)
{
RaycastHit hit;
if (Physics.Raycast(sendObject.transform.position, sendObject.transform.forward, out hit, range))
{
SceneManager.LoadScene("SampleScene");
}
}
}
uj5u.com熱心網友回復:
錯誤訊息聽起來不言自明。
您正在嘗試訪問已被銷毀的物件。
因為你加載了一個新場景
SceneManager.LoadScene("SampleScene");
當前場景及其物件被卸載/銷毀。
每當你處理事件
void Start()
{
shoot.action.performed = Shoot;
}
確保在不再需要/不再有效時也洗掉回呼
private void OnDestroy()
{
shoot.action.performed -= Shoot;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/359807.html
