- Home /
Dynamic Scene Creation through Scripts?
I am making a dynamic murder mystery game in Unity and was wondering the best way of generating the scenes/scene for my game.
There will be multiple rooms that won't be the same each game and thus I was wondering if I can somehow create a prefab of my room and then subsequently pass it any parameters I need when i instantiate it?
Basically, can I create a room "class" that I can then instantiate later on?
Thanks
Of course. You'll likely need prefabs for the room and its decorations. Just choose where to instantiate the room and where to place decorations. This is what prefabs are all about :D
Answer by Aluxxi · Nov 14, 2016 at 09:00 PM
I would recommend checking out this tutorial for a randomly generated maze:
http://catlikecoding.com/unity/tutorials/maze/
Back to your question; there is more than one way to go about dynamic/procedural generation. It is possible to create prefabs and instantiate them at runtime or you can generate a mesh and pass it parameters depending on what you are doing.
As an example, think of a road tool you would want the user to be able to place roads with in game. You could create a ton of road prefabs and instantiate them where the mouse clicks - or generate a mesh on the fly and add a texture to it.
https://docs.unity3d.com/Manual/GeneratingMeshGeometryProcedurally.html
Unity has a procedural cave generation tutorial that you could learn from:
https://unity3d.com/learn/tutorials/projects/procedural-cave-generation-tutorial
You could create a Room class with parameters to be used when generating a mesh and then call that method from another script.
public class Room : MonoBehaviour {
public int minimum_width = 20;
public int maximum_width = 50;
public int minimum_height = 10;
public void GenerateRoom() {
// Code to generate procedural room
}
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Death Counter Resets When Reloading Scene. 3 Answers
Fading To New Scene Problem? 1 Answer