JukeboxController
From Unify Community Wiki
(Difference between revisions)
Tsphillips (Talk | contribs) m (→C# - JukeboxController.cs) |
m (Text replace - "</csharp>" to "</syntaxhighlight>") |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 11: | Line 11: | ||
== C# - JukeboxController.cs == | == C# - JukeboxController.cs == | ||
− | <csharp> | + | <syntaxhighlight lang="csharp"> |
using UnityEngine; | using UnityEngine; | ||
using System.Collections; | using System.Collections; | ||
Line 75: | Line 75: | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
Latest revision as of 20:45, 10 January 2012
Author: Unknown (69.174.143.210)
[edit] Description
This is a simple jukebox-style audio manager that lets you load multiple sound clips and have them played/mixed on the fly. The intent was to gradually grow this class into something that would easilly allow crossfades, ducking, etc.
This class is meant to be used in a main game controller script. For example, a game might have multiple levels, a score, lives remaining, etc. All of this state would be kept in a main controller class. This controller might also hold a reference to a JukeboxController object, which would make all the registered sound clips available to all game components, regardless of what scene they are in.
[edit] C# - JukeboxController.cs
using UnityEngine; using System.Collections; /* Usage: JukeboxController jukebox = new JukeboxController(); jukebox.AddClip("mysong", myclip); jukebox.PlayClip("mysong"); jukebox.StopClip(); */ public class JukeboxController { Hashtable jukebox; string current_clip; public JukeboxController() { jukebox = new Hashtable(); current_clip = null; } // constructor public void AddClip(string name, AudioClip clip) { if (jukebox == null) { jukebox = new Hashtable(); } // if GameObject obj; obj = new GameObject(); obj.AddComponent("AudioSource"); obj.audio.clip = clip; obj.audio.ignoreListenerVolume = true; DontDestroyOnLoad(obj); jukebox.Add(name, obj); } // AddClip() /* Play a named audio clip. Does not restart the clip if it is played twice in a row. Will stop a previously playing clip to play this new clip. */ public void PlayClip(string name) { if (name == current_clip) { return; } // if if (current_clip != null) { StopClip(); } // if ((GameObject)jukebox[name]).audio.Play(); current_clip = name; } // PlayClip() public void StopClip() { ((GameObject)jukebox[current_clip]).audio.Stop(); } // StopClip() }