2.9 KiB
Using Rooms
A [Room](@ref Fungus.Room) is a Game Object that contains a script that inherits from the [Room class](@ref Fungus.Room). Rooms are the main unit of organization in a Fungus game. They are similar to locations in a point and click adventure game.
Rooms may be connected to each other via public Room properties. Connected Rooms are automatically shown in the Unity scene view via a connecting arrow. Rooms may contain [Views](@ref Fungus.View), [Pages](@ref Fungus.Page), Sprites, [Buttons](@ref Fungus.Button) and any other type of Game Object required to construct the location.
How do I add a Room to a scene?
Note: Every Room in a Fungus game must have an attached script component which inherits from the [Room class](@ref Fungus.Room). This script controls all Fungus related behavior for that Room.
- Create an instance of the Fungus/Prefabs/Room.prefab in the Fungus library. This creates a standard Room, but with no Room script attached yet.
- Create a new c# script in your project folder. Give it the same name as your Room.
- Add a
using Fungus;
declaration at the top of the script to allow easy access to the Fungus library. - Add a
void OnEnter()
method. This will be called every time the player enters the room.
C# Code Example
using UnityEngine;
using System.Collections;
using Fungus;
public class MyRoom : Room
{
void OnEnter()
{
Say("Hello world!");
}
}
Notes
- The default start() and update() methods are not typically used in Fungus games. Feel free to delete them.
- A documented example Room script is provided in Fungus/Scripts/RoomTemplate.cs in the Fungus library.
How do I move between Rooms?
- Ensure there are at least two Room objects in your scene.
- Add a public Room property to your Room script and setup the reference to the other Room in the inspector.
- Use the [MoveToRoom](@ref Fungus.GameController.MoveToRoom) command to transition to the other Room.
C# code example
using UnityEngine;
using System.Collections;
using Fungus;
public class MyRoom : Room
{
public Room otherRoom; // Another Room
void OnEnter()
{
Wait(5);
MoveToRoom(otherRoom); // Current Room fades out, new Room fades in
}
}
Notes
- Use [Game.RoomFadeDuration](@ref Fungus.Game.roomFadeDuration) to control the fade transition time.
How do I check if a Room has already been Visited?
The [Room.visitCount](@ref Fungus.Room.visitCount) property tracks how many times the player has entered a Room.
Use the [Room.IsFirstVisit](@ref Fungus.Room.IsFirstVisit) method to check if this is the first visit to the Room.
C# Code Example
using UnityEngine;
using System.Collections;
using Fungus;
public class MyRoom : Room
{
void OnEnter()
{
if (IsFirstVisit())
{
Say("Welcome to the room stranger!");
}
else
{
Say("Nice to have you back!");
}
}
}