[ad_1]
I assumed this might have been requested already however I couldn’t discover a solution to it so sorry if it has been requested already.
I’m making a VR recreation in Unity utilizing the Hurricane VR Framework. Now I’m attempting to create a list system like Saints & Sinners, with a backpack, however I couldn’t make it work.
I used to be in a position to make it with the intention to seize gadgets and retailer them within the backpack, it is rather straightforward with this framework, the issue is passing these objects to the following scene the place I get this error:
The thing of sort ‘GameObject’ has been destroyed however you’re nonetheless
attempting to entry it.
What I’ve now’s this recreation supervisor:
utilizing System.Collections;
utilizing System.Collections.Generic;
utilizing UnityEngine.SceneManagement;
utilizing UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Occasion;
// Checklist to retailer the article and the tag of the socket the place it was saved
personal static Checklist<(string, GameObject)> Stock = new Checklist<(string, GameObject)>();
// Array with the tags of the stock sockets.
personal string[] tags = { "I11", "I12", "I13", "I21", "I22", "I23", "HolsDer", "HolsIz"};
personal void Awake()
{
if(Occasion==null)
{
Occasion = this;
DontDestroyOnLoad(gameObject);
}
else
{
if(Occasion!=null)
{
Destroy(gameObject);
}
}
}
// Add a brand new tuple to the stock
public void addObject(string socket, GameObject objeto)
{
if (objeto != null)
{
Debug.Log(objeto.tag);
Stock.Add((socket, objeto));
}
else
{
Debug.Log("Object is null");
}
}
public void nextScene(int scene)
{
// Iterate by the tags of the sockets to seek out objects within the present scene
foreach (string tag in tags)
{
// Search the sockets by tag
GameObject[] sockets = GameObject.FindGameObjectsWithTag(tag);
if (sockets.Size > 0)
{
GameObject socket = sockets[0];
// Test if the socket has a toddler (It all the time has one baby so the situation
// is that it should have 2, the default and the article)
if (socket.rework.childCount == 2)
{
GameObject objeto = socket.rework.GetChild(1).gameObject;
DontDestroyOnLoad(objeto);
// Add the article to the Stock record
addObject(tag, objeto);
}
else
{
Debug.Log("No childs in socket "+ tag);
}
}
}
// Load subsequent scene
SceneManager.LoadScene(scene);
}
// That is known as initially of every scene.
public void restoreObjects()
{
foreach ((string socketName, GameObject objeto) in Stock)
{
// Discover the socket the place the article needs to be positioned
GameObject[] sockets = GameObject.FindGameObjectsWithTag(socketName);
if (sockets.Size > 0)
{
GameObject socket = sockets[0];
// Test for null objects or sockets (That is the place it fails, the objects are all null)
if(objeto == null)
{
Debug.Log("objeto is null");
}
if (socket == null)
{
Debug.Log("Socket is null");
}
// This fails throwing this error: The thing of sort 'GameObject' has been destroyed however you're nonetheless attempting to entry it.
GameObject newObject = Instantiate(objeto, socket.rework);
}
else
{
Debug.LogWarning("Socket with tag '" + socketName + "' not discovered.");
}
}
}
}
The nextScene() operate is named when urgent a button, only for testing and the restoreObjects() one is named initially of the following scene and that’s when it fails as a result of the article is null.
What am I doing fallacious?
[ad_2]