|
|
|
using UnityEngine;
|
|
|
|
using System;
|
|
|
|
using System.Collections;
|
|
|
|
|
|
|
|
namespace Fungus
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* This class gives easy access to every scripting command available in Fungus.
|
|
|
|
*/
|
|
|
|
public class GameController : MonoBehaviour
|
|
|
|
{
|
|
|
|
#region General Methods
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Transitions from the current Room to another Room.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param room The Room to transition to.
|
|
|
|
*/
|
|
|
|
public void MoveToRoom(Room room)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.MoveToRoomCommand(room));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Wait for a period of time before executing the next command.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param duration The wait duration in seconds
|
|
|
|
*/
|
|
|
|
public void Wait(float duration)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.WaitCommand(duration));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Wait until player taps, clicks or presses a key before executing the next command.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
*/
|
|
|
|
public void WaitForInput()
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.WaitForInputCommand());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Call a delegate method provided by the client.
|
|
|
|
* Used to queue the execution of arbitrary code as part of a command sequeunce.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param callAction The Action delegate method to be called when the command executes.
|
|
|
|
*/
|
|
|
|
public void Call(Action callAction)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.CallCommand(callAction));
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region View Methods
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the currently active View immediately.
|
|
|
|
* The main camera snaps to the new active View. If the View contains a Page object, this Page becomes the active Page.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param view The View object to make active
|
|
|
|
*/
|
|
|
|
public void SetView(View view)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetViewCommand(view));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pans the camera to the target View over a period of time.
|
|
|
|
* The pan starts at the current camera position and performs a smoothed linear pan to the target View.
|
|
|
|
* Command execution blocks until the pan completes. When the camera arrives at the target View, this View becomes the active View.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param targetView The View to pan the camera to.
|
|
|
|
* @param duration The length of time in seconds needed to complete the pan.
|
|
|
|
*/
|
|
|
|
public void PanToView(View targetView, float duration)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.PanToViewCommand(targetView, duration));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pans the camera through a sequence of target Views over a period of time.
|
|
|
|
* The pan starts at the current camera position and performs a smooth pan through all Views in the list.
|
|
|
|
* Command execution blocks until the pan completes. When the camera arrives at the last View in the list, this View becomes the active View.
|
|
|
|
* If more control is required over the camera path then you should instead use an Animator component to precisely control the Camera path.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param duration The length of time in seconds needed to complete the pan.
|
|
|
|
* @param targetViews A parameter list of views to visit during the pan.
|
|
|
|
*/
|
|
|
|
public void PanToPath(float duration, params View[] targetViews)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.PanToPathCommand(targetViews, duration));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fades out the current camera View, and fades in again using the target View.
|
|
|
|
* If the target View contains a Page object, this Page becomes the active Page.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param targetView The View object to fade to.
|
|
|
|
* @param duration The length of time in seconds needed to complete the pan.
|
|
|
|
*/
|
|
|
|
public void FadeToView(View targetView, float duration)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.FadeToViewCommand(targetView, duration));
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region Page Methods
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the currently active Page for story text display.
|
|
|
|
* Once this command executes, all story text added using Say(), AddOption(), Choose(), etc. will be displayed on this Page.
|
|
|
|
* When a Room contains multiple Page objects, this method can be used to control which Page object is active at a given time.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param page The Page object to make active
|
|
|
|
*/
|
|
|
|
public void SetPage(Page page)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetPageCommand(page));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the currently active style for displaying Pages.
|
|
|
|
* Once this command executes, all Pages will display using the new style.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param pageStyle The style object to make active
|
|
|
|
*/
|
|
|
|
public void SetPageStyle(PageStyle pageStyle)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetPageStyleCommand(pageStyle));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the title text displayed at the top of the active Page.
|
|
|
|
* The title text is only displayed when there is some story text or options to be shown.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param titleText The text to display as the title of the Page.
|
|
|
|
*/
|
|
|
|
public void Title(string titleText)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.TitleCommand(titleText));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Writes story text to the currently active Page.
|
|
|
|
* A 'continue' button is displayed when the text has fully appeared.
|
|
|
|
* Command execution halts until the user chooses to continue.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param storyText The text to be written to the currently active Page.
|
|
|
|
*/
|
|
|
|
public void Say(string storyText)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SayCommand(storyText));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds an option to the current list of player options.
|
|
|
|
* Use the Choose() method to display previously added options.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param optionText The text to be displayed for this option
|
|
|
|
* @param optionAction The Action delegate method to be called when the player selects the option
|
|
|
|
*/
|
|
|
|
public void AddOption(string optionText, Action optionAction)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.AddOptionCommand(optionText, optionAction));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Display all previously added options as buttons, with no text prompt.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
*/
|
|
|
|
public void Choose()
|
|
|
|
{
|
|
|
|
Choose("");
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Displays a story text prompt, followed by all previously added options.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param chooseText The story text to be written above the list of options
|
|
|
|
*/
|
|
|
|
public void Choose(string chooseText)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.ChooseCommand(chooseText));
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region State Methods
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets a boolean flag value.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param key The name of the flag
|
|
|
|
* @param value The boolean value to set the flag to
|
|
|
|
*/
|
|
|
|
public void SetFlag(string key, bool value)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetFlagCommand(key, value));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the current state of a flag.
|
|
|
|
* Flag values are set using SetFlag().
|
|
|
|
* Returns false if the flag has previously been set to false, or has not yet been set.
|
|
|
|
* @param key The name of the flag
|
|
|
|
* @return The boolean state of the flag.
|
|
|
|
*/
|
|
|
|
public bool GetFlag(string key)
|
|
|
|
{
|
|
|
|
GameState state = Game.GetInstance().state;
|
|
|
|
return state.GetFlag(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets an integer counter value.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param key The name of the counter
|
|
|
|
* @param value The value to set the counter to
|
|
|
|
*/
|
|
|
|
public void SetCounter(string key, int value)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetCounterCommand(key, value));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the current value of a counter.
|
|
|
|
* Counter values are set using SetCounter().
|
|
|
|
* Returns zero if the counter has not previously been set to a value.
|
|
|
|
* @param key The name of the counter
|
|
|
|
* @return The current value of the counter
|
|
|
|
*/
|
|
|
|
public int GetCounter(string key)
|
|
|
|
{
|
|
|
|
GameState state = Game.GetInstance().state;
|
|
|
|
return state.GetCounter(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets an inventory item count to 1.
|
|
|
|
* This supports the common case where the player can only collect 1 instance of an inventory item.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param key The name of the inventory item
|
|
|
|
*/
|
|
|
|
public void SetInventory(string key)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetInventoryCommand(key, 1));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the inventory count for an item.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param key The name of the inventory item
|
|
|
|
* @param value The inventory count for the item
|
|
|
|
*/
|
|
|
|
public void SetInventory(string key, int value)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetInventoryCommand(key, value));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the current inventory count for an item.
|
|
|
|
* Inventory counts are set using SetInventory().
|
|
|
|
* Returns zero if the inventory count has not previously been set to a value.
|
|
|
|
* @param key The name of the inventory item
|
|
|
|
* @return The current inventory count of the item
|
|
|
|
*/
|
|
|
|
public int GetInventory(string key)
|
|
|
|
{
|
|
|
|
GameState state = Game.GetInstance().state;
|
|
|
|
return state.GetInventory(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if player has an inventory item.
|
|
|
|
* @param key The name of the inventory item
|
|
|
|
* @return Returns true if the inventory count for an item is greater than zero
|
|
|
|
*/
|
|
|
|
public bool HasInventory(string key)
|
|
|
|
{
|
|
|
|
GameState state = Game.GetInstance().state;
|
|
|
|
return (state.GetInventory(key) > 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region Sprite Methods
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes a sprite completely transparent immediately.
|
|
|
|
* This changes the alpha component of the sprite renderer color to 0.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param spriteRenderer The sprite to be modified
|
|
|
|
*/
|
|
|
|
public void HideSprite(SpriteRenderer spriteRenderer)
|
|
|
|
{
|
|
|
|
FadeSprite(spriteRenderer, 0, 0, Vector2.zero);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes a sprite completely opaque immediately.
|
|
|
|
* This changes the alpha component of the sprite renderer color to 1.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param spriteRenderer The sprite to be modified
|
|
|
|
*/
|
|
|
|
public void ShowSprite(SpriteRenderer spriteRenderer)
|
|
|
|
{
|
|
|
|
FadeSprite(spriteRenderer, 1, 0, Vector2.zero);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fades the transparency of a sprite over a period of time.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param spriteRenderer The sprite to be modified
|
|
|
|
* @param targetAlpha The final required transparency value [0..1]
|
|
|
|
* @param duration The duration of the fade transition in seconds
|
|
|
|
*/
|
|
|
|
public void FadeSprite(SpriteRenderer spriteRenderer, float targetAlpha, float duration)
|
|
|
|
{
|
|
|
|
FadeSprite(spriteRenderer, targetAlpha, duration, Vector2.zero);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fades the transparency of a sprite over a period of time, and applies a sliding motion to the sprite's position.
|
|
|
|
* The sprite starts at a position calculated by adding the current sprite position + the slide offset.
|
|
|
|
* The sprite then smoothly moves from this starting position to the original position of the sprite.
|
|
|
|
* Automatically adds a SpriteFader component to the sprite object to perform the transition.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param spriteRenderer The sprite to be modified
|
|
|
|
* @param targetAlpha The final required transparency value [0..1]
|
|
|
|
* @param duration The duration of the fade transition in seconds
|
|
|
|
* @param slideOffset Offset to the starting position for the slide effect.
|
|
|
|
*/
|
|
|
|
public void FadeSprite(SpriteRenderer spriteRenderer, float targetAlpha, float duration, Vector2 slideOffset)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
Color color = spriteRenderer.color;
|
|
|
|
color.a = targetAlpha;
|
|
|
|
commandQueue.AddCommand(new Command.FadeSpriteCommand(spriteRenderer, color, duration, slideOffset));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes a sprite behave as a clickable button.
|
|
|
|
* Automatically adds a Button component to the object to respond to player input.
|
|
|
|
* If no Collider2D already exists on the object, then a BoxCollider2D is automatically added.
|
|
|
|
* Use RemoveButton() to make a sprite non-clickable again.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param spriteRenderer The sprite to be made clickable
|
|
|
|
* @param buttonAction The Action delegate method to be called when the player clicks on the button
|
|
|
|
*/
|
|
|
|
public void AddButton(SpriteRenderer spriteRenderer, Action buttonAction)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.AddButtonCommand(spriteRenderer, buttonAction, false));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes a sprite behave as a clickable button.
|
|
|
|
* Same behaviour as AddButton(), except the button will be automatically hidden/shown by the game depending on the context.
|
|
|
|
* All auto buttons are automatically displayed when there is no page content and the player taps on the screen.
|
|
|
|
* If the player does not interact for a period, then all auto buttons are hidden again.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param spriteRenderer The sprite to be made clickable
|
|
|
|
* @param buttonAction The Action delegate method to be called when the player clicks on the button
|
|
|
|
*/
|
|
|
|
public void AddAutoButton(SpriteRenderer spriteRenderer, Action buttonAction)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.AddButtonCommand(spriteRenderer, buttonAction, true));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes a sprite stop behaving as a clickable button.
|
|
|
|
* Removes the Button component from the sprite object.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param spriteRenderer The sprite to be made non-clickable
|
|
|
|
*/
|
|
|
|
public void RemoveButton(SpriteRenderer spriteRenderer)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.RemoveButtonCommand(spriteRenderer));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Makes a sprite stop behaving as a clickable button and fades out the button sprite.
|
|
|
|
* The fade duration is specified in Game.buttonFadeDuration
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param spriteRenderer The sprite to be made non-clickable
|
|
|
|
*/
|
|
|
|
public void RemoveAndFadeButton(SpriteRenderer spriteRenderer)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.RemoveButtonCommand(spriteRenderer));
|
|
|
|
|
|
|
|
FadeSprite(spriteRenderer, 0f, Game.GetInstance().buttonFadeDuration);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets an animator trigger to change the animation state for an animated sprite.
|
|
|
|
* This is the primary method of controlling Unity animations from a Fungus command sequence.
|
|
|
|
* This method returns immediately but it queues an asynchronous command for later execution.
|
|
|
|
* @param animator The sprite to be made non-clickable
|
|
|
|
* @param triggerName Name of a trigger parameter in the animator controller
|
|
|
|
*/
|
|
|
|
public void SetAnimatorTrigger(Animator animator, string triggerName)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetAnimatorTriggerCommand(animator, triggerName));
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region Audio Methods
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Plays game music using an audio clip.
|
|
|
|
* One music clip may be played at a time.
|
|
|
|
* @param audioClip The music clip to play
|
|
|
|
*/
|
|
|
|
public void PlayMusic(AudioClip audioClip)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.PlayMusicCommand(audioClip));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Stops playing game music.
|
|
|
|
*/
|
|
|
|
public void StopMusic()
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.StopMusicCommand());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the game music volume immediately.
|
|
|
|
* @param musicVolume The new music volume value [0..1]
|
|
|
|
*/
|
|
|
|
public void SetMusicVolume(float musicVolume)
|
|
|
|
{
|
|
|
|
SetMusicVolume(musicVolume, 0f);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fades the game music volume to required level over a period of time.
|
|
|
|
* @param musicVolume The new music volume value [0..1]
|
|
|
|
* @param duration The length of time in seconds needed to complete the volume change.
|
|
|
|
*/
|
|
|
|
public void SetMusicVolume(float musicVolume, float duration)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.SetMusicVolumeCommand(musicVolume, duration));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Plays a sound effect once.
|
|
|
|
* Multiple sound effects can be played at the same time.
|
|
|
|
* @param audioClip The sound effect clip to play
|
|
|
|
*/
|
|
|
|
public void PlaySound(AudioClip audioClip)
|
|
|
|
{
|
|
|
|
PlaySound(audioClip, 1f);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Plays a sound effect once, at the specified volume.
|
|
|
|
* Multiple sound effects can be played at the same time.
|
|
|
|
* @param audioClip The sound effect clip to play
|
|
|
|
* @param volume The volume level of the sound effect
|
|
|
|
*/
|
|
|
|
public void PlaySound(AudioClip audioClip, float volume)
|
|
|
|
{
|
|
|
|
CommandQueue commandQueue = Game.GetInstance().commandQueue;
|
|
|
|
commandQueue.AddCommand(new Command.PlaySoundCommand(audioClip, volume));
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|