An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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.

  1. 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.
  2. Create a new c# script in your project folder. Give it the same name as your Room.
  3. Add a using Fungus; declaration at the top of the script to allow easy access to the Fungus library.
  4. 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?

  1. Ensure there are at least two Room objects in your scene.
  2. Add a public Room property to your Room script and setup the reference to the other Room in the inspector.
  3. 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!");
		}
	}
}