- Home /
Resource.Load is not working
Hi Im new to unity and I am attempting to use the command resource.load, however, when running the game, it does not seem to work.
I am trying to have it to have a game object that would spawn in an explosion once it is about to be destroyed:
void Destroy () {
Debug.Log ("Health is 0");
GameObject boom = Resources.Load ("Explosion",typeof (GameObject)) as GameObject;
//use resource.load
Instantiate(boom,this.transform);
Destroy (this.gameObject);
}
Yet it won't spawn in anything. I made sure it is in the folder which I created as "Resources" and made sure that the spelling is correct.
Please help, I am not sure on what to do here.
Answer by Hellium · Jan 08, 2018 at 02:43 PM
The problem is the following : You instantiate an object, you attach it to the current gameobject, and you destroy the latter, destroying the children too (and thus, the instantiated gameobject)
void Destroy () {
Debug.Log ("Health is 0");
GameObject boom = Resources.Load ("Explosion",typeof (GameObject)) as GameObject;
//use resource.load
Instantiate(boom,transform.position, this.transform.rotation);
Destroy (gameObject);
}
Tested it and it seems that you were right, do you have any method on separating the objects
What do you mean by "any method on separating the objects"?
Instantiate(boom, transform);
is equivalent to :
GameObject clone = Instantiate(boom);
clone.transform.SetParent( transform ) ; // The clone is now a child of your current gameobject
While this
Instantiate(boom, transform.position, transform.rotation);
Is equivalent to :
GameObject clone = Instantiate(boom);
clone.transform.position = transform.position ; // The clone is now placed at the same position as current object
clone.transform.rotation = transform.rotation ; // The clone has now the same rotation as current object
Answer by OneCept-Games · Jan 08, 2018 at 02:48 PM
As i read your code you are trying to create an explosion during game loop.
If that is the case, you should not load from disk/memory, but use a Prefab, and instiate the Prefab instead.
And if you are doing a lot of explosion's during game loop you should consider Object Pooling, so you do not use performance heavy Instantiation, but just SetActive() approach.
They are using a prefab
You don't address their actual problem in any way
Your answer
Follow this Question
Related Questions
Resource Being Deactivated 0 Answers
Resources.Load returns null in a build, but works in editor 2 Answers
Do I need to manually call Resources.UnloadUnusedAssets? 0 Answers
using Contains(gameObject) to find and destroy a gameObject from a list 2 Answers
how to reference child in a prefab within a prefab 0 Answers