Destroyed instance of Prefab, can't spawn it back.
I'm making a game with bacteria and viruses and such. When a virus comes near enough the bacteria the bacteria is infected, the bacteria gets a new script from the virus. Here's the part of the virus script that does this:
public class Virus : MonoBehaviour
{
private GameObject host; //The bacteria choosen by the virus.
public GameObject virusType;
public int spawnTimes;
void InjectCode()
{
host.AddComponent<InfectedScript>();
host.GetComponent<InfectedScript>().virusType = virusType;
host.GetComponent<InfectedScript>().spawnTimes = spawnTimes;
Destroy(this.gameObject);
}
}
The virus has it's own Prefab stored inside "virusType". Because of this the new script attached to the bacteria should also store the prefab of the virus. In the inspector it says "None (Game Object)" is stored in the "virusType", so nothing is saved there then? I erased the part of the script that destroys the virus after it has infected a bacteria and then things works as intended. I came to the conclusion that it was the instance of the Prefab that were stored in "virusType" and not the Prefab itself(if that makes any sense). However even when I've manually deleted the virus(deleting it from the Hierarchy) the infected bacteria works as intended. What's going on? Does the "Destroy(gameObject)" line destroy the virus so soon it's not done with the earlier lines or why isn't it working specifically when destroyed by it's own code?
Answer by knudsjef · Aug 25, 2016 at 03:33 PM
Honestly, if it were me, I would have a script controlling all interactions between Virus and Hosts and when they collide or whatever, I would save the position in a Vector3, destroy the host and spawn a new virus in that position, if that makes sense.
I might be able to make something like that. However things are supposed to happen to the bacteria while it's infected (such as random survival chance, they are supposed to evolve and stuff) and it's supposed to take some time.
Your answer
Follow this Question
Related Questions
The bullet never destroyed!!! 2 Answers
Having multiple UNET errors that I believe are caused by unity itself. Am I doing something wrong? 1 Answer
RPG instantiate problem 3 Answers
How attach C# script by argument? 3 Answers
Preventing name duplication in Hierarchy(getting selected GameObject) 1 Answer