Browse Source

Merge pull request #133 from FungusGames/dialogs-using-writer

Dialogs using writer
master
Chris Gregan 9 years ago
parent
commit
271b85dce9
  1. 9
      Assets/Fungus/Audio/Scripts/Commands/ControlAudio.cs
  2. 38
      Assets/Fungus/Flowchart/Scripts/Flowchart.cs
  3. BIN
      Assets/Fungus/Narrative/Audio/Click.wav
  4. 22
      Assets/Fungus/Narrative/Audio/Click.wav.meta
  5. BIN
      Assets/Fungus/Narrative/Audio/HighVoice.wav
  6. 22
      Assets/Fungus/Narrative/Audio/HighVoice.wav.meta
  7. BIN
      Assets/Fungus/Narrative/Audio/LowVoice.wav
  8. 22
      Assets/Fungus/Narrative/Audio/LowVoice.wav.meta
  9. 49
      Assets/Fungus/Narrative/Editor/DialogInputEditor.cs
  10. 6
      Assets/Fungus/Narrative/Editor/DialogInputEditor.cs.meta
  11. 44
      Assets/Fungus/Narrative/Editor/SayEditor.cs
  12. 493
      Assets/Fungus/Narrative/Resources/SayDialog.prefab
  13. 36
      Assets/Fungus/Narrative/Scripts/Commands/Menu.cs
  14. 52
      Assets/Fungus/Narrative/Scripts/Commands/Say.cs
  15. 625
      Assets/Fungus/Narrative/Scripts/Dialog.cs
  16. 84
      Assets/Fungus/Narrative/Scripts/DialogAudio.cs
  17. 168
      Assets/Fungus/Narrative/Scripts/DialogInput.cs
  18. 6
      Assets/Fungus/Narrative/Scripts/DialogInput.cs.meta
  19. 250
      Assets/Fungus/Narrative/Scripts/DialogParser.cs
  20. 222
      Assets/Fungus/Narrative/Scripts/DialogText.cs
  21. 17
      Assets/Fungus/Narrative/Scripts/MenuDialog.cs
  22. 272
      Assets/Fungus/Narrative/Scripts/SayDialog.cs
  23. 1
      Assets/Fungus/UI/Editor/WriteEditor.cs
  24. 57
      Assets/Fungus/UI/Editor/WriterAudioEditor.cs
  25. 6
      Assets/Fungus/UI/Editor/WriterAudioEditor.cs.meta
  26. 8
      Assets/Fungus/UI/Scripts/Commands/Write.cs
  27. 231
      Assets/Fungus/UI/Scripts/Writer.cs
  28. 189
      Assets/Fungus/UI/Scripts/WriterAudio.cs
  29. 0
      Assets/Fungus/UI/Scripts/WriterAudio.cs.meta
  30. 193
      Assets/FungusExamples/Sherlock/TheExperiment.unity
  31. 1025
      Assets/FungusExamples/TheFacility/TheFacility.unity
  32. 151
      Assets/FungusExamples/TheHunter/TheHunter.unity
  33. 655
      Assets/Tests/Audio/AudioTests.unity
  34. 5391
      Assets/Tests/Narrative/NarrativeTests.unity
  35. 12
      Assets/Tests/Narrative/SayTest.cs
  36. 12
      Assets/Tests/Narrative/SayTest.cs.meta
  37. BIN
      Assets/Tests/TestAssets/Audio/Beep1.wav
  38. 22
      Assets/Tests/TestAssets/Audio/Beep1.wav.meta
  39. BIN
      Assets/Tests/TestAssets/Audio/Beep2.wav
  40. 22
      Assets/Tests/TestAssets/Audio/Beep2.wav.meta
  41. BIN
      Assets/Tests/TestAssets/Audio/Beep3.wav
  42. 22
      Assets/Tests/TestAssets/Audio/Beep3.wav.meta
  43. BIN
      Assets/Tests/TestAssets/Audio/VoiceOver3.wav
  44. 22
      Assets/Tests/TestAssets/Audio/VoiceOver3.wav.meta
  45. 2
      Assets/Tests/UI/FakeWriterInput.cs
  46. 657
      Assets/Tests/UI/TextTests.unity

9
Assets/Fungus/Audio/Scripts/Commands/ControlAudio.cs

@ -5,7 +5,7 @@ namespace Fungus
{
[CommandInfo("Audio",
"Control Audio",
"Plays, loops, or stops an audiosource.")]
"Plays, loops, or stops an audiosource. Any AudioSources with the same tag as the target Audio Source will automatically be stoped.")]
public class ControlAudio : Command
{
public enum controlType
@ -78,8 +78,13 @@ namespace Fungus
*/
protected void StopAudioWithSameTag()
{
AudioSource[] audioSources = GameObject.FindObjectsOfType<AudioSource>();
// Don't stop audio if there's no tag assigned
if (audioSource.tag == "Untagged")
{
return;
}
AudioSource[] audioSources = GameObject.FindObjectsOfType<AudioSource>();
foreach (AudioSource a in audioSources)
{
if ((a.GetComponent<AudioSource>() != audioSource) && (a.tag == audioSource.tag))

38
Assets/Fungus/Flowchart/Scripts/Flowchart.cs

@ -1,4 +1,5 @@
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Serialization;
using System;
using System.Linq;
@ -128,6 +129,8 @@ namespace Fungus
*/
public static List<Flowchart> cachedFlowcharts = new List<Flowchart>();
protected static bool eventSystemPresent;
/**
* Returns the next id to assign to a new flowchart item.
* Item ids increase monotically so they are guaranteed to
@ -150,6 +153,41 @@ namespace Fungus
return maxId + 1;
}
protected virtual void OnLevelWasLoaded(int level)
{
// Reset the flag for checking for an event system as there may not be one in the newly loaded scene.
eventSystemPresent = false;
}
protected virtual void Start()
{
CheckEventSystem();
}
// There must be an Event System in the scene for Say and Menu input to work.
// This method will automatically instantiate one if none exists.
protected virtual void CheckEventSystem()
{
if (eventSystemPresent)
{
return;
}
EventSystem eventSystem = GameObject.FindObjectOfType<EventSystem>();
if (eventSystem == null)
{
// Auto spawn an Event System from the prefab
GameObject prefab = Resources.Load<GameObject>("EventSystem");
if (prefab != null)
{
GameObject go = Instantiate(prefab) as GameObject;
go.name = "EventSystem";
}
}
eventSystemPresent = true;
}
public virtual void OnEnable()
{
if (!cachedFlowcharts.Contains(this))

BIN
Assets/Fungus/Narrative/Audio/Click.wav

Binary file not shown.

22
Assets/Fungus/Narrative/Audio/Click.wav.meta

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 14a396b1562834718b2d52b9c4639264
timeCreated: 1440511211
licenseType: Free
AudioImporter:
serializedVersion: 6
defaultSettings:
loadType: 1
sampleRateSetting: 0
sampleRateOverride: 0
compressionFormat: 0
quality: .5
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
3D: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Fungus/Narrative/Audio/HighVoice.wav

Binary file not shown.

22
Assets/Fungus/Narrative/Audio/HighVoice.wav.meta

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 774486030b696474e8b3cf7f178123da
timeCreated: 1440509679
licenseType: Free
AudioImporter:
serializedVersion: 6
defaultSettings:
loadType: 1
sampleRateSetting: 0
sampleRateOverride: 0
compressionFormat: 0
quality: .5
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
3D: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Fungus/Narrative/Audio/LowVoice.wav

Binary file not shown.

22
Assets/Fungus/Narrative/Audio/LowVoice.wav.meta

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: c53b7c20372e444c6bd7f2ac0729bbe2
timeCreated: 1440509678
licenseType: Free
AudioImporter:
serializedVersion: 6
defaultSettings:
loadType: 1
sampleRateSetting: 0
sampleRateOverride: 0
compressionFormat: 0
quality: .5
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
3D: 0
userData:
assetBundleName:
assetBundleVariant:

49
Assets/Fungus/Narrative/Editor/DialogInputEditor.cs

@ -0,0 +1,49 @@
using UnityEditor;
using UnityEngine;
using System.Collections;
using Rotorz.ReorderableList;
using System.Collections.Generic;
namespace Fungus
{
[CustomEditor (typeof(DialogInput))]
public class DialogInputEditor : Editor
{
protected SerializedProperty clickModeProp;
protected SerializedProperty nextClickDelayProp;
protected SerializedProperty keyPressModeProp;
protected SerializedProperty shiftKeyEnabledProp;
protected SerializedProperty keyListProp;
protected virtual void OnEnable()
{
clickModeProp = serializedObject.FindProperty ("clickMode");
nextClickDelayProp = serializedObject.FindProperty ("nextClickDelay");
keyPressModeProp = serializedObject.FindProperty ("keyPressMode");
shiftKeyEnabledProp = serializedObject.FindProperty ("shiftKeyEnabled");
keyListProp = serializedObject.FindProperty ("keyList");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
DialogInput t = target as DialogInput;
EditorGUILayout.PropertyField(clickModeProp);
EditorGUILayout.PropertyField(nextClickDelayProp);
EditorGUILayout.PropertyField(keyPressModeProp);
if (t.keyPressMode == DialogInput.KeyPressMode.KeyPressed)
{
EditorGUILayout.PropertyField(shiftKeyEnabledProp);
ReorderableListGUI.Title(new GUIContent("Key List", "Keycodes to check for user input"));
ReorderableListGUI.ListField(keyListProp);
}
serializedObject.ApplyModifiedProperties();
}
}
}

6
Assets/Fungus/Narrative/Scripts/DialogParser.cs.meta → Assets/Fungus/Narrative/Editor/DialogInputEditor.cs.meta

@ -1,8 +1,12 @@
fileFormatVersion: 2
guid: 674037e0ad6e34e149f9bbab6940e155
guid: 2a336080b178f4c239754dd614d6d6b4
timeCreated: 1440156410
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

44
Assets/Fungus/Narrative/Editor/SayEditor.cs

@ -16,34 +16,7 @@ namespace Fungus
static public void DrawTagHelpLabel()
{
string tagsText = "";
tagsText += "\n";
tagsText += "\t-------- DEFAULT TAGS --------\n\n" +
"\t{b} Bold Text {/b}\n" +
"\t{i} Italic Text {/i}\n" +
"\t{color=red} Color Text (color){/color}\n" +
"\n" +
"\t{s}, {s=60} Writing speed (chars per sec){/s}\n" +
"\t{w}, {w=0.5} Wait (seconds)\n" +
"\t{wi} Wait for input\n" +
"\t{wc} Wait for input and clear\n" +
"\t{wp}, {wp=0.5} Wait on punctuation (seconds){/wp}\n" +
"\t{c} Clear\n" +
"\t{x} Exit, advance to the next command without waiting for input\n" +
"\n" +
"\t{vpunch=0.5} Vertically punch screen (intensity)\n" +
"\t{hpunch=0.5} Horizontally punch screen (intensity)\n" +
"\t{shake=1} Shake screen (intensity)\n" +
"\t{shiver=1} Shiver screen (intensity)\n" +
"\t{flash=0.5} Flash screen (duration)\n" +
"\n" +
"\t{audio=AudioObjectName} Play Audio Once\n" +
"\t{audioloop=AudioObjectName} Play Audio Loop\n" +
"\t{audiopause=AudioObjectName} Pause Audio\n" +
"\t{audiostop=AudioObjectName} Stop Audio\n" +
"\n" +
"\t{m=MessageName} Broadcast message\n" +
"\t{$VarName} Substitute variable";
string tagsText = TextTagParser.GetTagHelp();
if (CustomTag.activeCustomTags.Count > 0)
{
@ -105,8 +78,7 @@ namespace Fungus
protected SerializedProperty showAlwaysProp;
protected SerializedProperty showCountProp;
protected SerializedProperty extendPreviousProp;
protected SerializedProperty fadeInProp;
protected SerializedProperty fadeOutProp;
protected SerializedProperty fadeWhenDoneProp;
protected SerializedProperty waitForClickProp;
protected SerializedProperty setSayDialogProp;
@ -123,8 +95,7 @@ namespace Fungus
showAlwaysProp = serializedObject.FindProperty("showAlways");
showCountProp = serializedObject.FindProperty("showCount");
extendPreviousProp = serializedObject.FindProperty("extendPrevious");
fadeInProp = serializedObject.FindProperty("fadeIn");
fadeOutProp = serializedObject.FindProperty("fadeOut");
fadeWhenDoneProp = serializedObject.FindProperty("fadeWhenDone");
waitForClickProp = serializedObject.FindProperty("waitForClick");
setSayDialogProp = serializedObject.FindProperty("setSayDialog");
@ -217,14 +188,7 @@ namespace Fungus
rightButton.fontSize = 10;
rightButton.font = EditorStyles.toolbarButton.font;
EditorGUILayout.BeginHorizontal();
EditorGUILayout.PrefixLabel("Fade");
t.fadeIn = GUILayout.Toggle(t.fadeIn, "In", leftButton, GUILayout.Width(60));
t.fadeOut = GUILayout.Toggle(t.fadeOut, "Out", rightButton, GUILayout.Width(60));
EditorGUILayout.EndHorizontal();
EditorGUILayout.PropertyField(fadeWhenDoneProp);
EditorGUILayout.PropertyField(waitForClickProp);
EditorGUILayout.PropertyField(setSayDialogProp);

493
Assets/Fungus/Narrative/Resources/SayDialog.prefab

@ -1,72 +1,71 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &139138
--- !u!1 &148914
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 4
m_Component:
- 224: {fileID: 22439138}
- 222: {fileID: 22239138}
- 114: {fileID: 11439140}
- 224: {fileID: 22448914}
- 222: {fileID: 22248914}
- 114: {fileID: 11448914}
- 114: {fileID: 11439142}
m_Layer: 5
m_Name: Container
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &148914
--- !u!1 &155030
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 4
m_Component:
- 224: {fileID: 22448914}
- 222: {fileID: 22248914}
- 114: {fileID: 11448914}
- 114: {fileID: 11439142}
- 224: {fileID: 22443574}
- 222: {fileID: 22257884}
- 114: {fileID: 11431470}
m_Layer: 5
m_Name: Image
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &188894
--- !u!1 &180152
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 4
m_Component:
- 224: {fileID: 22488896}
- 222: {fileID: 22288894}
- 114: {fileID: 11488896}
- 114: {fileID: 11439138}
- 224: {fileID: 22433354}
- 222: {fileID: 22268826}
- 114: {fileID: 11493918}
- 114: {fileID: 11419088}
m_Layer: 5
m_Name: StoryText
m_Name: Continue
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &188896
--- !u!1 &188894
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 4
m_Component:
- 224: {fileID: 22488898}
- 222: {fileID: 22288896}
- 114: {fileID: 11488898}
- 212: {fileID: 21288894}
- 95: {fileID: 9588894}
- 224: {fileID: 22488896}
- 222: {fileID: 22288894}
- 114: {fileID: 11488896}
- 114: {fileID: 11439138}
m_Layer: 5
m_Name: Continue
m_Name: StoryText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -99,9 +98,8 @@ GameObject:
- 224: {fileID: 22488900}
- 222: {fileID: 22288900}
- 114: {fileID: 11488904}
- 225: {fileID: 22588894}
- 114: {fileID: 11488902}
- 114: {fileID: 11439144}
- 225: {fileID: 22583964}
- 114: {fileID: 11478524}
m_Layer: 5
m_Name: Panel
m_TagString: Untagged
@ -120,7 +118,11 @@ GameObject:
- 223: {fileID: 22388894}
- 114: {fileID: 11488906}
- 225: {fileID: 22588896}
- 114: {fileID: 11486804}
- 114: {fileID: 11488894}
- 114: {fileID: 11487070}
- 114: {fileID: 11404316}
- 114: {fileID: 11481894}
- 82: {fileID: 8294266}
m_Layer: 5
m_Name: SayDialog
@ -198,67 +200,111 @@ AudioSource:
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
--- !u!95 &9588894
Animator:
serializedVersion: 3
--- !u!114 &11404316
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188896}
m_GameObject: {fileID: 188902}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 0}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 1
m_LinearVelocityBlending: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
--- !u!114 &11439138
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c4782cf42f2644447b9631f6e522160b, type: 3}
m_Name:
m_EditorClassIdentifier:
volume: 1
loop: 1
targetAudioSource: {fileID: 0}
audioMode: 0
beepSounds:
- {fileID: 8300000, guid: 774486030b696474e8b3cf7f178123da, type: 3}
- {fileID: 8300000, guid: f637c5ce9d10e45c7855ed89bfc6b97e, type: 3}
- {fileID: 8300000, guid: c53b7c20372e444c6bd7f2ac0729bbe2, type: 3}
soundEffect: {fileID: 0}
inputSound: {fileID: 8300000, guid: 14a396b1562834718b2d52b9c4639264, type: 3}
--- !u!114 &11419088
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188894}
m_GameObject: {fileID: 180152}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: 1150
m_PreferredHeight: 200
m_FlexibleWidth: 1
m_FlexibleHeight: -1
--- !u!114 &11439140
m_Navigation:
m_Mode: 3
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1}
m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1}
m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814}
m_ColorMultiplier: 1
m_FadeDuration: .100000001
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 11493918}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 11481894}
m_MethodName: SetButtonClickedFlag
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null
--- !u!114 &11431470
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 139138}
m_GameObject: {fileID: 155030}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 7
m_Spacing: 0
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
--- !u!114 &11439142
m_Material: {fileID: 0}
m_Color: {r: .196078435, g: .196078435, b: .196078435, a: 1}
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text:
--- !u!114 &11439138
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 148914}
m_GameObject: {fileID: 188894}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
@ -267,30 +313,28 @@ MonoBehaviour:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: 350
m_PreferredHeight: 350
m_FlexibleWidth: -1
m_PreferredWidth: 1150
m_PreferredHeight: 200
m_FlexibleWidth: 1
m_FlexibleHeight: -1
--- !u!114 &11439144
--- !u!114 &11439142
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188900}
m_Enabled: 0
m_GameObject: {fileID: 148914}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 0
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: 350
m_PreferredHeight: 350
m_FlexibleWidth: -1
m_FlexibleHeight: -1
--- !u!114 &11448914
MonoBehaviour:
m_ObjectHideFlags: 1
@ -312,6 +356,84 @@ MonoBehaviour:
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!114 &11478524
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188900}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Delegates:
- eventID: 4
callback:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 11481894}
m_MethodName: SetDialogClickedFlag
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
delegates: []
--- !u!114 &11481894
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188902}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 43b85556abd314f3f870c18c013fdcef, type: 3}
m_Name:
m_EditorClassIdentifier:
clickMode: 1
keyPressMode: 2
shiftKeyEnabled: 1
nextClickDelay: 0
keyList: 0900000020000000
--- !u!114 &11486804
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188902}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &11487070
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188902}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 188894}
writingSpeed: 60
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
writeWholeWords: 0
--- !u!114 &11488894
MonoBehaviour:
m_ObjectHideFlags: 1
@ -323,29 +445,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 3a0bbe22c246e4c78ad8e9816cbae9d5, type: 3}
m_Name:
m_EditorClassIdentifier:
writingSpeed: 30
writingSound: {fileID: 8300000, guid: f637c5ce9d10e45c7855ed89bfc6b97e, type: 3}
writingVolume: 1
loopWritingSound: 1
beepPerCharacter: 0
slowBeepsAt: 10
fastBeepsAt: 30
punctuationPause: .200000003
alwaysFadeDialog: 0
fadeDuration: .25
fadeEaseType: 0
alwaysMoveDialog: 0
startPosition: {x: 0, y: 0}
moveSpeed: 1000
moveEaseType: 0
clickAnywhere: 1
continueButton: {fileID: 11419088}
dialogCanvas: {fileID: 22388894}
nameText: {fileID: 11488900}
storyText: {fileID: 11488896}
characterImage: {fileID: 11448914}
characterTypingSound: {fileID: 0}
continueImage: {fileID: 11488898}
continueSound: {fileID: 0}
--- !u!114 &11488896
MonoBehaviour:
m_ObjectHideFlags: 1
@ -361,9 +466,9 @@ MonoBehaviour:
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FontData:
m_Font: {fileID: 12800000, guid: 79197ecfbc3a4294a89ce589dac02cf2, type: 3}
m_FontSize: 40
m_FontSize: 50
m_FontStyle: 0
m_BestFit: 1
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 0
@ -372,27 +477,6 @@ MonoBehaviour:
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Story text
--- !u!114 &11488898
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188896}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Sprite: {fileID: 21300000, guid: 226248ac6f184e448af731df91b91958, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!114 &11488900
MonoBehaviour:
m_ObjectHideFlags: 1
@ -419,36 +503,6 @@ MonoBehaviour:
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Character Name
--- !u!114 &11488902
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188900}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
delegates:
- eventID: 4
callback:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 0}
m_MethodName: OnPointerClick
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 1
m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
--- !u!114 &11488904
MonoBehaviour:
m_ObjectHideFlags: 1
@ -465,7 +519,7 @@ MonoBehaviour:
m_Sprite: {fileID: 21300000, guid: eeb00f6cd27e9ef4d9174551b3342dec, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1
m_FillCenter: 0
m_FillMethod: 0
m_FillAmount: 1
m_FillClockwise: 1
@ -491,56 +545,51 @@ MonoBehaviour:
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
--- !u!212 &21288894
SpriteRenderer:
--- !u!114 &11493918
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188896}
m_GameObject: {fileID: 180152}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 1
m_ProbeAnchor: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_ImportantGI: 0
m_AutoUVMaxDistance: .5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: 226248ac6f184e448af731df91b91958, type: 3}
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
--- !u!222 &22239138
m_Sprite: {fileID: 21300000, guid: 226248ac6f184e448af731df91b91958, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!222 &22248914
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 139138}
--- !u!222 &22248914
m_GameObject: {fileID: 148914}
--- !u!222 &22257884
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 148914}
--- !u!222 &22288894
m_GameObject: {fileID: 155030}
--- !u!222 &22268826
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188894}
--- !u!222 &22288896
m_GameObject: {fileID: 180152}
--- !u!222 &22288894
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188896}
m_GameObject: {fileID: 188894}
--- !u!222 &22288898
CanvasRenderer:
m_ObjectHideFlags: 1
@ -570,94 +619,92 @@ Canvas:
m_OverridePixelPerfect: 0
m_SortingLayerID: 0
m_SortingOrder: 1
--- !u!224 &22439138
--- !u!224 &22433354
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 139138}
m_GameObject: {fileID: 180152}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 22488896}
- {fileID: 22448914}
- {fileID: 22443574}
m_Father: {fileID: 22488900}
m_RootOrder: 0
m_RootOrder: 3
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -2, y: -381}
m_SizeDelta: {x: -90, y: -846}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 1533.59998, y: 83.8300018}
m_SizeDelta: {x: 77.9000015, y: 77}
m_Pivot: {x: .5, y: .5}
--- !u!224 &22448914
--- !u!224 &22443574
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 148914}
m_GameObject: {fileID: 155030}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 22439138}
m_RootOrder: 1
m_Father: {fileID: 22433354}
m_RootOrder: 0
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: .5, y: .5}
--- !u!224 &22488894
--- !u!224 &22448914
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188898}
m_GameObject: {fileID: 148914}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 22488900}
m_RootOrder: 1
m_AnchorMin: {x: .0131249959, y: 1}
m_AnchorMax: {x: .785268068, y: 1}
m_AnchoredPosition: {x: -22.25, y: -914}
m_SizeDelta: {x: -68.5, y: 71}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 1435, y: 404}
m_SizeDelta: {x: 300, y: 300}
m_Pivot: {x: .5, y: .5}
--- !u!224 &22488896
--- !u!224 &22488894
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188894}
m_GameObject: {fileID: 188898}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 22488898}
m_Father: {fileID: 22439138}
m_Children: []
m_Father: {fileID: 22488900}
m_RootOrder: 0
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchoredPosition: {x: 622.25, y: 281}
m_SizeDelta: {x: 1178.5, y: 71}
m_Pivot: {x: .5, y: .5}
--- !u!224 &22488898
--- !u!224 &22488896
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 188896}
m_GameObject: {fileID: 188894}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 22488896}
m_RootOrder: 0
m_AnchorMin: {x: .942586243, y: .0550000034}
m_AnchorMax: {x: .988172412, y: .0550000034}
m_AnchoredPosition: {x: -.400008023, y: 21.6499996}
m_SizeDelta: {x: -.400001526, y: 43.2999992}
m_Pivot: {x: .500000417, y: .5}
m_Father: {fileID: 22488900}
m_RootOrder: 2
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 803, y: 145.630005}
m_SizeDelta: {x: 1539, y: 199.75}
m_Pivot: {x: .5, y: .5}
--- !u!224 &22488900
RectTransform:
m_ObjectHideFlags: 1
@ -668,14 +715,16 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 22439138}
- {fileID: 22488894}
- {fileID: 22448914}
- {fileID: 22488896}
- {fileID: 22433354}
m_Father: {fileID: 22488902}
m_RootOrder: 0
m_AnchorMin: {x: .5, y: .5}
m_AnchorMax: {x: .5, y: .5}
m_AnchoredPosition: {x: -800, y: -600}
m_SizeDelta: {x: 1600, y: 1200}
m_AnchorMin: {x: .5, y: 0}
m_AnchorMax: {x: .5, y: 0}
m_AnchoredPosition: {x: -805, y: 0}
m_SizeDelta: {x: 1605, y: 335}
m_Pivot: {x: 0, y: 0}
--- !u!224 &22488902
RectTransform:
@ -695,7 +744,7 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!225 &22588894
--- !u!225 &22583964
CanvasGroup:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}

36
Assets/Fungus/Narrative/Scripts/Commands/Menu.cs

@ -1,6 +1,5 @@
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.EventSystems;
using System;
using System.Collections;
using System.Collections.Generic;
@ -32,12 +31,8 @@ namespace Fungus
[Tooltip("A custom Menu Dialog to use to display this menu. All subsequent Menu commands will use this dialog.")]
public MenuDialog setMenuDialog;
protected static bool eventSystemPresent;
public override void OnEnter()
{
CheckEventSystem();
if (setMenuDialog != null)
{
// Override the active menu dialog
@ -60,37 +55,6 @@ namespace Fungus
Continue();
}
void OnLevelWasLoaded(int level)
{
// Reset the flag for checking for an event system as there may not be one
// in the newly loaded scene.
eventSystemPresent = false;
}
// There must be an Event System in the scene for Menu input to work.
// This function will automatically instantiate one if none exists.
protected virtual void CheckEventSystem()
{
if (eventSystemPresent)
{
return;
}
EventSystem eventSystem = GameObject.FindObjectOfType<EventSystem>();
if (eventSystem == null)
{
// Auto spawn an Event System from the prefab
GameObject prefab = Resources.Load<GameObject>("EventSystem");
if (prefab != null)
{
GameObject go = Instantiate(prefab) as GameObject;
go.name = "EventSystem";
}
}
eventSystemPresent = true;
}
public override void GetConnectedBlocks(ref List<Block> connectedBlocks)
{
if (targetBlock != null)

52
Assets/Fungus/Narrative/Scripts/Commands/Say.cs

@ -36,13 +36,10 @@ namespace Fungus
[Tooltip("Type this text in the previous dialog box.")]
public bool extendPrevious = false;
[Tooltip("Fade in this dialog box.")]
public bool fadeIn = false;
[Tooltip("Fade out the dialog box when writing has finished and not waiting for input.")]
public bool fadeWhenDone = true;
[Tooltip("Fade out this dialog box.")]
public bool fadeOut = false;
[Tooltip("Wait for player to click before hiding the dialog and continuing. If false then the dialog will display and execution will continue immediately.")]
[Tooltip("Wait for player to click before continuing.")]
public bool waitForClick = true;
[Tooltip("Sets the active Say dialog with a reference to a Say Dialog object in the scene. All story text will now display using this Say Dialog.")]
@ -78,22 +75,7 @@ namespace Fungus
sayDialog.SetCharacter(character, flowchart);
sayDialog.SetCharacterImage(portrait);
bool fadingIn = false;
bool movingIn = false;
if (sayDialog.alwaysFadeDialog || fadeIn)
{
sayDialog.FadeInDialog();
fadingIn = true;
}
if (sayDialog.alwaysMoveDialog)
{
sayDialog.MoveInDialog();
movingIn = true;
}
if (!fadingIn && !movingIn)
{
sayDialog.ShowDialog(true);
}
sayDialog.gameObject.SetActive(true);
string displayText = storyText;
@ -106,33 +88,9 @@ namespace Fungus
}
}
if (extendPrevious)
{
displayText = "{s=0}" + Dialog.prevStoryText + "{/s}" + displayText;
}
string subbedText = flowchart.SubstituteVariables(displayText);
sayDialog.Say(subbedText, waitForClick, voiceOverClip, delegate {
if (waitForClick)
{
bool fadingOut = false;
bool movingOut = false;
if (sayDialog.alwaysFadeDialog || fadeOut)
{
sayDialog.FadeOutDialog();
fadingOut = true;
}
if (sayDialog.alwaysMoveDialog)
{
sayDialog.MoveOutDialog();
movingOut = true;
}
if (!fadingOut && !movingOut)
{
sayDialog.ShowDialog(false);
}
}
sayDialog.Say(subbedText, !extendPrevious, waitForClick, fadeWhenDone, voiceOverClip, delegate {
Continue();
});
}

625
Assets/Fungus/Narrative/Scripts/Dialog.cs

@ -1,625 +0,0 @@
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using System;
using System.Collections;
using System.Collections.Generic;
namespace Fungus
{
public class Dialog : MonoBehaviour
{
public static Character speakingCharacter;
public static string prevStoryText;
public float writingSpeed = 60;
public AudioClip writingSound;
[Range(0,1)]
public float writingVolume = 1f;
public bool loopWritingSound = true;
public bool beepPerCharacter = false;
public float slowBeepsAt = 10f;
public float fastBeepsAt = 30f;
public float punctuationPause = 0.25f;
public bool alwaysFadeDialog = false;
public float fadeDuration = 1f;
public LeanTweenType fadeEaseType;
public bool alwaysMoveDialog = false;
public Vector2 startPosition;
protected Vector2 endPosition;
public float moveSpeed = 1000f;
public LeanTweenType moveEaseType;
[Tooltip("Click anywhere on screen to continue when set to true, or only on dialog when false.")]
public bool clickAnywhere = true;
public Canvas dialogCanvas;
public Text nameText;
public Text storyText;
public Image characterImage;
public AudioClip characterTypingSound;
protected float currentSpeed;
protected float currentPunctuationPause;
protected bool boldActive;
protected bool italicActive;
protected bool colorActive;
protected string colorText;
protected float clickCooldownTimer;
protected bool wasPointerClicked;
public DialogAudio audioController = new DialogAudio();
protected virtual void LateUpdate()
{
wasPointerClicked = false;
if (clickCooldownTimer > 0f)
{
clickCooldownTimer -= Time.deltaTime;
clickCooldownTimer = Mathf.Max(0, clickCooldownTimer);
}
if (clickCooldownTimer == 0f &&
clickAnywhere &&
Input.GetMouseButtonDown(0))
{
wasPointerClicked = true;
clickCooldownTimer = 0.2f;
}
}
public virtual void ShowDialog(bool visible)
{
if (dialogCanvas != null)
{
LeanTween.cancel(dialogCanvas.gameObject);
CanvasGroup canvasGroup = dialogCanvas.GetComponent<CanvasGroup>();
if (canvasGroup != null)
{
canvasGroup.alpha = 1;
}
dialogCanvas.gameObject.SetActive(visible);
}
if (visible)
{
// A new dialog is often shown as the result of a mouse click, so we need
// to make sure the previous click doesn't register on the new dialogue
wasPointerClicked = false;
clickCooldownTimer = 0.2f;
}
}
public virtual void FadeInDialog()
{
LeanTween.cancel(dialogCanvas.gameObject);
CanvasGroup canvasGroup = dialogCanvas.GetComponent<CanvasGroup>();
if (canvasGroup != null)
{
canvasGroup.alpha = 0;
}
dialogCanvas.gameObject.SetActive(true);
if (fadeDuration == 0) fadeDuration = float.Epsilon;
LeanTween.value(dialogCanvas.gameObject,0,1,fadeDuration).setEase(fadeEaseType).setOnUpdate(
(float fadeAmount)=>{
if (canvasGroup != null)
{
canvasGroup.alpha = fadeAmount;
}
}
).setOnComplete(
()=>{
if (canvasGroup != null)
{
canvasGroup.alpha = 1;
}
}
);
}
public virtual void MoveInDialog()
{
endPosition = this.transform.position;
float moveDuration = (Vector3.Distance(startPosition,this.transform.position)/moveSpeed);
if (moveSpeed == 0) moveDuration = float.Epsilon;
LeanTween.value(this.gameObject,(Vector2)startPosition,(Vector2)endPosition,moveDuration).setEase(moveEaseType).setOnUpdate(
(Vector3 updatePosition)=>{
this.transform.position = updatePosition;
}
).setOnComplete(
()=>{
this.transform.position = endPosition;
}
);
}
public virtual void FadeOutDialog()
{
CanvasGroup canvasGroup = dialogCanvas.GetComponent<CanvasGroup>();
LeanTween.cancel(dialogCanvas.gameObject);
if (fadeDuration == 0) fadeDuration = float.Epsilon;
LeanTween.value(dialogCanvas.gameObject,1,0,fadeDuration).setEase(fadeEaseType).setOnUpdate(
(float fadeAmount)=>{
if (canvasGroup != null)
{
canvasGroup.alpha = fadeAmount;
}
}
).setOnComplete(
()=>{
dialogCanvas.gameObject.SetActive(false);
if (canvasGroup != null)
{
canvasGroup.alpha = 1;
}
}
);
}
public virtual void MoveOutDialog()
{
endPosition = this.transform.position;
float moveDuration = (Vector3.Distance(startPosition,this.transform.position)/moveSpeed);
if (moveSpeed == 0) moveDuration = float.Epsilon;
LeanTween.value(this.gameObject,(Vector2)endPosition,(Vector2)startPosition,moveDuration).setEase(moveEaseType).setOnUpdate(
(Vector3 updatePosition)=>{
this.transform.position = updatePosition;
}
).setOnComplete(
()=>{
this.transform.position = endPosition;
}
);
}
public virtual void SetCharacter(Character character, Flowchart flowchart = null)
{
if (character == null)
{
if (characterImage != null)
characterImage.gameObject.SetActive(false);
if (nameText != null)
nameText.text = "";
characterTypingSound = null;
}
else
{
Character prevSpeakingCharacter = speakingCharacter;
speakingCharacter = character;
// Dim portraits of non-speaking characters
foreach (Stage s in Stage.activeStages)
{
if (s.dimPortraits)
{
foreach (Character c in s.charactersOnStage)
{
if (prevSpeakingCharacter != speakingCharacter)
{
if (c != speakingCharacter)
{
Portrait.SetDimmed(c, s, true);
}
else
{
Portrait.SetDimmed(c, s, false);
}
}
}
}
}
string characterName = character.nameText;
if (characterName == "")
{
// Use game object name as default
characterName = character.name;
}
if (flowchart != null)
{
characterName = flowchart.SubstituteVariables(characterName);
}
characterTypingSound = character.soundEffect;
SetCharacterName(characterName, character.nameColor);
}
}
public virtual void SetCharacterImage(Sprite image)
{
if (characterImage != null)
{
if (image != null)
{
characterImage.sprite = image;
characterImage.gameObject.SetActive(true);
}
else
{
characterImage.gameObject.SetActive(false);
}
}
}
public virtual void SetCharacterName(string name, Color color)
{
if (nameText != null)
{
nameText.text = name;
nameText.color = color;
}
}
protected virtual IEnumerator WriteText(string text, AudioClip voiceOverClip, Action onWritingComplete, Action onExitTag)
{
storyText.text = "";
// Parse the story text & tag markup to produce a list of tokens for processing
DialogParser parser = new DialogParser();
parser.Tokenize(text);
if (parser.tokens.Count == 0)
{
if (onWritingComplete != null)
{
onWritingComplete();
}
yield break;
}
DialogText dialogText = new DialogText();
dialogText.parentDialog = this;
dialogText.writingSpeed = writingSpeed;
dialogText.punctuationPause = punctuationPause;
dialogText.beepPerCharacter = beepPerCharacter;
dialogText.slowBeepsAt = slowBeepsAt;
dialogText.fastBeepsAt = fastBeepsAt;
audioController.audioSource = GetComponent<AudioSource>();
audioController.volume = writingVolume;
audioController.loop = loopWritingSound;
if (voiceOverClip != null)
{
audioController.audioClip = voiceOverClip;
}
else if (characterTypingSound != null)
{
audioController.audioClip = characterTypingSound;
}
else if (writingSound != null)
{
audioController.audioClip = writingSound;
}
audioController.Play();
foreach (Token token in parser.tokens)
{
switch (token.type)
{
case TokenType.Words:
dialogText.Append(token.param);
break;
case TokenType.BoldStart:
dialogText.boldActive = true;
break;
case TokenType.BoldEnd:
dialogText.boldActive = false;
break;
case TokenType.ItalicStart:
dialogText.italicActive = true;
break;
case TokenType.ItalicEnd:
dialogText.italicActive = false;
break;
case TokenType.ColorStart:
dialogText.colorActive = true;
dialogText.colorText = token.param;
break;
case TokenType.ColorEnd:
dialogText.colorActive = false;
break;
case TokenType.Wait:
float duration = 1f;
if (!Single.TryParse(token.param, out duration))
{
duration = 1f;
}
yield return StartCoroutine(WaitForSecondsOrInput(duration));
break;
case TokenType.WaitForInputNoClear:
OnWaitForInputTag(true);
yield return StartCoroutine(WaitForInput(null));
OnWaitForInputTag(false);
break;
case TokenType.WaitForInputAndClear:
OnWaitForInputTag(true);
yield return StartCoroutine(WaitForInput(null));
OnWaitForInputTag(false);
currentSpeed = writingSpeed;
dialogText.Clear();
audioController.Stop();
break;
case TokenType.WaitOnPunctuationStart:
float newPunctuationPause = 0f;
if (!Single.TryParse(token.param, out newPunctuationPause))
{
newPunctuationPause = 0f;
}
dialogText.punctuationPause = newPunctuationPause;
break;
case TokenType.WaitOnPunctuationEnd:
dialogText.punctuationPause = punctuationPause;
break;
case TokenType.Clear:
dialogText.Clear();
break;
case TokenType.SpeedStart:
float newSpeed = 0;
if (!Single.TryParse(token.param, out newSpeed))
{
newSpeed = 0f;
}
dialogText.writingSpeed = newSpeed;
break;
case TokenType.SpeedEnd:
dialogText.writingSpeed = writingSpeed;
break;
case TokenType.Exit:
if (onExitTag != null)
{
prevStoryText = storyText.text;
audioController.Stop();
onExitTag();
}
yield break;
case TokenType.Message:
Flowchart.BroadcastFungusMessage(token.param);
break;
case TokenType.VerticalPunch:
float vPunchIntensity = 0;
if (!Single.TryParse(token.param, out vPunchIntensity))
{
vPunchIntensity = 0f;
}
VerticalPunch(vPunchIntensity);
break;
case TokenType.HorizontalPunch:
float hPunchIntensity = 0;
if (!Single.TryParse(token.param, out hPunchIntensity))
{
hPunchIntensity = 0f;
}
HorizontalPunch(hPunchIntensity);
break;
case TokenType.Shake:
float shakeIntensity = 0;
if (!Single.TryParse(token.param, out shakeIntensity))
{
shakeIntensity = 0f;
}
Shake(shakeIntensity);
break;
case TokenType.Shiver:
float shiverIntensity = 0;
if (!Single.TryParse(token.param, out shiverIntensity))
{
shiverIntensity = 0f;
}
Shiver(shiverIntensity);
break;
case TokenType.Flash:
float flashDuration = 0;
if (!Single.TryParse(token.param, out flashDuration))
{
flashDuration = 0f;
}
Flash(flashDuration);
break;
case TokenType.Audio:
{
AudioSource audioSource = FindAudio(token.param);
if (audioSource != null)
{
audioSource.PlayOneShot(audioSource.clip);
}
}
break;
case TokenType.AudioLoop:
{
AudioSource audioSource = FindAudio(token.param);
if (audioSource != null)
{
audioSource.Play();
audioSource.loop = true;
}
}
break;
case TokenType.AudioPause:
{
AudioSource audioSource = FindAudio(token.param);
if (audioSource != null)
{
audioSource.Pause ();
}
}
break;
case TokenType.AudioStop:
{
AudioSource audioSource = FindAudio(token.param);
if (audioSource != null)
{
audioSource.Pause ();
}
}
break;
}
// Update text writing
while (!dialogText.UpdateGlyphs(wasPointerClicked))
{
storyText.text = dialogText.GetDialogText();
yield return null;
}
storyText.text = dialogText.GetDialogText();
wasPointerClicked = false;
// Now process next token
}
prevStoryText = storyText.text;
audioController.Stop();
if (onWritingComplete != null)
{
onWritingComplete();
}
yield break;
}
protected virtual AudioSource FindAudio(string audioObjectName)
{
GameObject go = GameObject.Find(audioObjectName);
if (go == null)
{
return null;
}
return go.GetComponent<AudioSource>();
}
protected virtual void VerticalPunch(float intensity)
{
iTween.ShakePosition(this.gameObject, new Vector3(0f, intensity, 0f), 0.5f);
}
protected virtual void HorizontalPunch(float intensity)
{
iTween.ShakePosition(this.gameObject, new Vector3(intensity, 0f, 0f), 0.5f);
}
protected virtual void Shake(float intensity)
{
iTween.ShakePosition(this.gameObject, new Vector3(intensity, intensity, 0f), 0.5f);
}
protected virtual void Shiver(float intensity)
{
iTween.ShakePosition(this.gameObject, new Vector3(intensity, intensity, 0f), 1f);
}
protected virtual void Flash(float duration)
{
CameraController cameraController = CameraController.GetInstance();
cameraController.screenFadeTexture = CameraController.CreateColorTexture(new Color(1f,1f,1f,1f), 32, 32);
cameraController.Fade(1f, duration, delegate {
cameraController.screenFadeTexture = CameraController.CreateColorTexture(new Color(1f,1f,1f,1f), 32, 32);
cameraController.Fade(0f, duration, null);
});
}
public virtual void Clear()
{
ClearStoryText();
// Reset control variables
currentSpeed = 60;
currentPunctuationPause = 0.25f;
boldActive = false;
italicActive = false;
colorActive = false;
colorText = "";
// Kill any active write coroutine
StopAllCoroutines();
}
protected virtual void ClearStoryText()
{
if (storyText != null)
{
storyText.text = "";
}
}
protected virtual IEnumerator WaitForInput(Action onInput)
{
while (!wasPointerClicked)
{
yield return null;
}
wasPointerClicked = false;
if (onInput != null)
{
// Stop all tweening portraits
foreach( Character c in Character.activeCharacters )
{
if (c.state.portraitImage != null)
{
if (LeanTween.isTweening(c.state.portraitImage.gameObject))
{
LeanTween.cancel(c.state.portraitImage.gameObject, true);
Portrait.SetRectTransform(c.state.portraitImage.rectTransform, c.state.position);
if (c.state.dimmed == true)
{
c.state.portraitImage.color = new Color(0.5f,0.5f,0.5f,1f);
}
else
{
c.state.portraitImage.color = Color.white;
}
}
}
}
onInput();
}
}
protected virtual IEnumerator WaitForSecondsOrInput(float duration)
{
float timer = duration;
while (timer > 0 && !wasPointerClicked)
{
timer -= Time.deltaTime;
yield return null;
}
wasPointerClicked = false;
}
protected virtual void OnWaitForInputTag(bool waiting)
{}
public virtual void OnPointerClick()
{
if (clickCooldownTimer == 0f)
{
wasPointerClicked = true;
}
}
}
}

84
Assets/Fungus/Narrative/Scripts/DialogAudio.cs

@ -1,84 +0,0 @@
using UnityEngine;
using System.Collections;
namespace Fungus
{
/*
* Helper class to manage play, pause & stop operations on voiceover and writing sound effects
*/
public class DialogAudio
{
public AudioSource audioSource;
public AudioClip audioClip;
public float volume;
public bool loop;
public virtual void Play()
{
if (audioSource == null ||
audioClip == null)
{
return;
}
audioSource.clip = audioClip;
audioSource.loop = loop;
// Fade in the audio at start
LeanTween.value(audioSource.gameObject, 0f, volume, 0.1f).setOnUpdate( (value) => {
audioSource.volume = value;
});
audioSource.Play();
}
public virtual void Pause()
{
if (audioSource == null)
{
return;
}
// Fade out the audio
// There's an audible click if you call audioSource.Pause() so instead just
// drop the volume to 0.
LeanTween.value(audioSource.gameObject, volume, 0f, 0.1f).setOnUpdate( (value) => {
audioSource.volume = value;
});
}
public virtual void Stop()
{
if (audioSource == null)
{
return;
}
// Fade out the audio
LeanTween.value(audioSource.gameObject, audioSource.volume, 0f, 0.1f).setOnUpdate( (value) => {
audioSource.volume = value;
}).setOnComplete( () => {
// There's an audible click if you call audioSource.Stop() so instead we just switch off
// looping and let the audio stop automatically at the end of the clip
audioSource.loop = false;
});
}
public virtual void Resume()
{
if (audioSource == null)
{
return;
}
audioSource.volume = volume;
if (!audioSource.isPlaying)
{
audioSource.loop = loop;
audioSource.Play();
}
}
}
}

168
Assets/Fungus/Narrative/Scripts/DialogInput.cs

@ -0,0 +1,168 @@
using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections;
namespace Fungus
{
public interface IDialogInputListener
{
void OnNextLineEvent();
}
public class DialogInput : MonoBehaviour
{
public enum ClickMode
{
Disabled, // Clicking disabled
ClickAnywhere, // Click anywhere on screen to advance
ClickOnDialog, // Click anywhere on Say Dialog to advance
ClickOnButton // Click on continue button to advance
}
public enum KeyPressMode
{
Disabled, // Key pressing disabled
AnyKey, // Press any key to continue
KeyPressed // Press one of specified keys to advance
}
[Tooltip("Click to advance story")]
public ClickMode clickMode;
[Tooltip("Press a key to advance story")]
public KeyPressMode keyPressMode;
[Tooltip("Hold down shift while pressing a key to advance though story instantly")]
public bool shiftKeyEnabled = true;
[Tooltip("Delay between consecutive clicks. Useful to prevent accidentally clicking through story.")]
public float nextClickDelay = 0f;
[Tooltip("Keycodes to check for key presses")]
public KeyCode[] keyList;
protected bool dialogClickedFlag;
protected bool nextLineInputFlag;
protected float ignoreClickTimer;
/**
* Trigger next line input event from script.
*/
public void SetNextLineFlag()
{
nextLineInputFlag = true;
}
/**
* Set the dialog clicked flag (usually from an Event Trigger component in the dialog UI)
*/
public void SetDialogClickedFlag()
{
// Ignore repeat clicks for a short time to prevent accidentally clicking through the character dialogue
if (ignoreClickTimer > 0f)
{
return;
}
ignoreClickTimer = nextClickDelay;
// Only applies in Click On Dialog mode
if (clickMode == ClickMode.ClickOnDialog)
{
dialogClickedFlag = true;
}
}
public void SetButtonClickedFlag()
{
// Only applies if clicking is not disabled
if (clickMode != ClickMode.Disabled)
{
SetNextLineFlag();
}
}
protected virtual void Update()
{
switch (keyPressMode)
{
case KeyPressMode.Disabled:
break;
case KeyPressMode.AnyKey:
if (Input.anyKeyDown)
{
SetNextLineFlag();
}
break;
case KeyPressMode.KeyPressed:
foreach (KeyCode keyCode in keyList)
{
if (shiftKeyEnabled &&
(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)))
{
if (Input.GetKey(keyCode))
{
SetNextLineFlag();
}
}
else
{
if (Input.GetKeyDown(keyCode))
{
SetNextLineFlag();
}
}
}
break;
}
switch (clickMode)
{
case ClickMode.Disabled:
break;
case ClickMode.ClickAnywhere:
if (Input.GetMouseButtonDown(0))
{
SetNextLineFlag();
}
break;
case ClickMode.ClickOnDialog:
if (dialogClickedFlag)
{
SetNextLineFlag();
dialogClickedFlag = false;
}
break;
}
if (ignoreClickTimer > 0f)
{
ignoreClickTimer = Mathf.Max (ignoreClickTimer - Time.deltaTime, 0f);
}
// Ignore input events if a Menu is being displayed
if (MenuDialog.activeMenuDialog != null)
{
if (MenuDialog.activeMenuDialog.gameObject.activeSelf)
{
dialogClickedFlag = false;
nextLineInputFlag = false;
}
}
// Tell any listeners to move to the next line
if (nextLineInputFlag)
{
IDialogInputListener[] inputListeners = gameObject.GetComponentsInChildren<IDialogInputListener>();
foreach (IDialogInputListener inputListener in inputListeners)
{
inputListener.OnNextLineEvent();
}
nextLineInputFlag = false;
}
}
}
}

6
Assets/Fungus/Narrative/Scripts/Dialog.cs.meta → Assets/Fungus/Narrative/Scripts/DialogInput.cs.meta

@ -1,8 +1,12 @@
fileFormatVersion: 2
guid: b7e8f397d6557484f91f9992f702cff5
guid: 43b85556abd314f3f870c18c013fdcef
timeCreated: 1439996546
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

250
Assets/Fungus/Narrative/Scripts/DialogParser.cs

@ -1,250 +0,0 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Fungus
{
public enum TokenType
{
Words, // A string of words
BoldStart, // b
BoldEnd, // /b
ItalicStart, // i
ItalicEnd, // /i
ColorStart, // color=red
ColorEnd, // /color
Wait, // w, w=0.5
WaitForInputNoClear, // wi
WaitForInputAndClear, // wc
WaitOnPunctuationStart, // wp, wp=0.5
WaitOnPunctuationEnd, // /wp
Clear, // c
SpeedStart, // s, s=60
SpeedEnd, // /s
Exit, // x
Message, // m=MessageName
VerticalPunch, // {vpunch=0.5}
HorizontalPunch, // {hpunch=0.5}
Shake, // {shake=0.5}
Shiver, // {shiver=0.5}
Flash, // {flash=0.5}
Audio, // {audio=Sound}
AudioLoop, // {audioloop=Sound}
AudioPause, // {audiopause=Sound}
AudioStop // {audiostop=Sound}
}
public class Token
{
public TokenType type = TokenType.Words;
public string param = "";
}
public class DialogParser
{
public List<Token> tokens = new List<Token>();
public virtual void Tokenize(string storyText)
{
tokens.Clear();
string pattern = @"\{.*?\}";
Regex myRegex = new Regex(pattern);
Match m = myRegex.Match(storyText); // m is the first match
int position = 0;
while (m.Success)
{
// Get bit leading up to tag
string preText = storyText.Substring(position, m.Index - position);
string tagText = m.Value;
AddWordsToken(tokens, preText);
AddTagToken(tokens, tagText);
position = m.Index + tagText.Length;
m = m.NextMatch();
}
if (position < storyText.Length)
{
string postText = storyText.Substring(position, storyText.Length - position);
if (postText.Length > 0)
{
AddWordsToken(tokens, postText);
}
}
// Remove all leading whitespace & newlines after a {c} or {wc} tag
// These characters are usually added for legibility when editing, but are not
// desireable when viewing the text in game.
bool trimLeading = false;
foreach (Token token in tokens)
{
if (trimLeading &&
token.type == TokenType.Words)
{
token.param.TrimStart(' ', '\t', '\r', '\n');
}
if (token.type == TokenType.Clear ||
token.type == TokenType.WaitForInputAndClear)
{
trimLeading = true;
}
else
{
trimLeading = false;
}
}
}
protected static void AddWordsToken(List<Token> tokenList, string words)
{
Token token = new Token();
token.type = TokenType.Words;
token.param = words;
tokenList.Add(token);
}
protected virtual void AddTagToken(List<Token> tokenList, string tagText)
{
if (tagText.Length < 3 ||
tagText.Substring(0,1) != "{" ||
tagText.Substring(tagText.Length - 1,1) != "}")
{
return;
}
string tag = tagText.Substring(1, tagText.Length - 2);
TokenType type = TokenType.Words;
string paramText = "";
if (tag == "b")
{
type = TokenType.BoldStart;
}
else if (tag == "/b")
{
type = TokenType.BoldEnd;
}
else if (tag == "i")
{
type = TokenType.ItalicStart;
}
else if (tag == "/i")
{
type = TokenType.ItalicEnd;
}
else if (tag.StartsWith("color="))
{
type = TokenType.ColorStart;
paramText = tag.Substring(6, tag.Length - 6);
}
else if (tag == "/color")
{
type = TokenType.ColorEnd;
}
else if (tag == "wi")
{
type = TokenType.WaitForInputNoClear;
}
if (tag == "wc")
{
type = TokenType.WaitForInputAndClear;
}
else if (tag.StartsWith("wp="))
{
type = TokenType.WaitOnPunctuationStart;
paramText = tag.Substring(3, tag.Length - 3);
}
else if (tag == "wp")
{
type = TokenType.WaitOnPunctuationStart;
}
else if (tag == "/wp")
{
type = TokenType.WaitOnPunctuationEnd;
}
else if (tag.StartsWith("w="))
{
type = TokenType.Wait;
paramText = tag.Substring(2, tag.Length - 2);
}
else if (tag == "w")
{
type = TokenType.Wait;
}
else if (tag == "c")
{
type = TokenType.Clear;
}
else if (tag.StartsWith("s="))
{
type = TokenType.SpeedStart;
paramText = tag.Substring(2, tag.Length - 2);
}
else if (tag == "s")
{
type = TokenType.SpeedStart;
}
else if (tag == "/s")
{
type = TokenType.SpeedEnd;
}
else if (tag == "x")
{
type = TokenType.Exit;
}
else if (tag.StartsWith("m="))
{
type = TokenType.Message;
paramText = tag.Substring(2, tag.Length - 2);
}
else if (tag.StartsWith("vpunch="))
{
type = TokenType.VerticalPunch;
paramText = tag.Substring(7, tag.Length - 7);
}
else if (tag.StartsWith("hpunch="))
{
type = TokenType.HorizontalPunch;
paramText = tag.Substring(7, tag.Length - 7);
}
else if (tag.StartsWith("shake="))
{
type = TokenType.Shake;
paramText = tag.Substring(6, tag.Length - 6);
}
else if (tag.StartsWith("shiver="))
{
type = TokenType.Shiver;
paramText = tag.Substring(7, tag.Length - 7);
}
else if (tag.StartsWith("flash="))
{
type = TokenType.Flash;
paramText = tag.Substring(6, tag.Length - 6);
}
else if (tag.StartsWith("audio="))
{
type = TokenType.Audio;
paramText = tag.Substring(6, tag.Length - 6);
}
else if (tag.StartsWith("audioloop="))
{
type = TokenType.AudioLoop;
paramText = tag.Substring(10, tag.Length - 10);
}
Token token = new Token();
token.type = type;
token.param = paramText.Trim();
tokenList.Add(token);
}
}
}

222
Assets/Fungus/Narrative/Scripts/DialogText.cs

@ -1,222 +0,0 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace Fungus
{
public class Glyph
{
public float hideTimer;
public string character;
public bool boldActive;
public bool italicActive;
public bool colorActive;
public string colorText;
public bool hasPunctuationPause;
}
public class DialogText
{
protected List<Glyph> glyphs = new List<Glyph>();
protected bool oneBeep = false;
public bool boldActive { get; set; }
public bool italicActive { get; set; }
public bool colorActive { get; set; }
public string colorText { get; set; }
public float writingSpeed { get; set; }
public float punctuationPause { get; set; }
public float slowBeepsAt { get; set; }
public float fastBeepsAt { get; set; }
public bool beepPerCharacter { get; set; }
public Dialog parentDialog { get; set; }
public virtual void Clear()
{
glyphs.Clear();
}
public virtual void Append(string words)
{
if (beepPerCharacter && (writingSpeed <= slowBeepsAt || writingSpeed >= fastBeepsAt)) // beeps match character speed at these speeds
{
oneBeep = true;
}
else
{
oneBeep = false;
}
float hideTimer = 0f;
if (writingSpeed > 0f)
{
hideTimer = 1f / writingSpeed;
}
bool doPunctuationPause = false;
for (int i = 0; i < words.Length; ++i)
{
char c = words[i];
// Ignore leading newlines
if (glyphs.Count == 0 && c == '\n')
{
continue;
}
Glyph glyph = new Glyph();
glyph.hideTimer = hideTimer;
if (doPunctuationPause && writingSpeed != 0)
{
glyph.hasPunctuationPause = true;
glyph.hideTimer += punctuationPause;
doPunctuationPause = false;
}
glyph.character = c.ToString();
glyph.boldActive = boldActive;
glyph.italicActive = italicActive;
glyph.colorActive = colorActive;
glyph.colorText = colorText;
glyphs.Add(glyph);
if (IsPunctuation(c)) // If punctuation, do punctuation pause
{
doPunctuationPause = true;
}
// Special case: pause just before open parentheses
if (i < words.Length - 2)
{
if (words[i + 1] == '(')
{
doPunctuationPause = true;
}
}
}
}
protected virtual bool IsPunctuation(char character)
{
return character == '.' ||
character == '?' ||
character == '!' ||
character == ',' ||
character == ':' ||
character == ';' ||
character == ')';
}
/**
* Returns true when all glyphs are visible.
*/
public virtual bool UpdateGlyphs(bool instantComplete)
{
AudioSource typingAudio = parentDialog.GetComponent<AudioSource>();
float elapsedTime = Time.deltaTime;
foreach (Glyph glyph in glyphs)
{
if (instantComplete)
{
glyph.hideTimer = 0f;
continue;
}
if (glyph.hideTimer > 0f)
{
// Don't pause audio on punctuation pause as it's very noticeable and distracting
if (glyph.hasPunctuationPause)
{
parentDialog.audioController.Pause();
}
bool finished = false;
if (elapsedTime > glyph.hideTimer)
{
elapsedTime -= glyph.hideTimer;
glyph.hideTimer = 0f;
// Some elapsed time left over, so carry on to next glyph
if ((oneBeep && typingAudio != null))
{
if (!typingAudio.isPlaying &&
(glyph.character != " " && glyph.character != "\t" && glyph.character != "\n" ) )
{
typingAudio.PlayOneShot(typingAudio.clip);
}
}
}
else
{
glyph.hideTimer -= elapsedTime;
glyph.hideTimer = Mathf.Max(glyph.hideTimer, 0f);
finished = true;
}
// Check if we need to restore audio after a punctuation pause
if (glyph.hideTimer == 0f)
{
parentDialog.audioController.Resume();
}
if (finished)
{
return false; // Glyph is still hidden
}
}
}
parentDialog.audioController.Stop();
return true;
}
public virtual string GetDialogText()
{
string outputText = "";
bool hideGlyphs = false;
foreach (Glyph glyph in glyphs)
{
// Wrap each individual character in rich text markup tags (if required)
string start = "";
string end = "";
if (glyph.boldActive)
{
start += "<b>";
end += "</b>";
}
if (glyph.italicActive)
{
start += "<i>";
end = "</i>" + end; // Have to nest tags correctly
}
if (!hideGlyphs &&
glyph.hideTimer > 0f)
{
hideGlyphs = true;
outputText += "<color=#FFFFFF00>";
}
if (!hideGlyphs &&
glyph.colorActive)
{
start += "<color=" + glyph.colorText + ">";
end += "</color>";
}
outputText += start + glyph.character + end;
}
if (hideGlyphs)
{
outputText += "</color>";
}
return outputText;
}
}
}

17
Assets/Fungus/Narrative/Scripts/MenuDialog.cs

@ -144,22 +144,7 @@ namespace Fungus
SayDialog sayDialog = SayDialog.GetSayDialog();
if (sayDialog != null)
{
bool fadingOut = false;
bool movingOut = false;
if (sayDialog.alwaysFadeDialog)
{
sayDialog.FadeOutDialog();
fadingOut = true;
}
if (sayDialog.alwaysMoveDialog)
{
sayDialog.MoveOutDialog();
movingOut = true;
}
if (!fadingOut && !movingOut)
{
sayDialog.ShowDialog(false);
}
sayDialog.FadeOut();
}
}

272
Assets/Fungus/Narrative/Scripts/SayDialog.cs

@ -1,4 +1,4 @@
using UnityEngine;
using UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections;
@ -7,13 +7,29 @@ using System.Collections.Generic;
namespace Fungus
{
public class SayDialog : Dialog
public class SayDialog : MonoBehaviour
{
// Currently active Say Dialog used to display Say text
public static SayDialog activeSayDialog;
public Image continueImage;
public AudioClip continueSound;
// Most recent speaking character
public static Character speakingCharacter;
public float fadeDuration = 0.25f;
public Button continueButton;
public Canvas dialogCanvas;
public Text nameText;
public Text storyText;
public Image characterImage;
protected WriterAudio writerAudio;
protected Writer writer;
protected CanvasGroup canvasGroup;
protected bool fadeWhenDone = true;
protected float targetAlpha = 0f;
protected float fadeCoolDownTimer = 0f;
public static SayDialog GetSayDialog()
{
@ -43,67 +59,255 @@ namespace Fungus
return activeSayDialog;
}
public virtual void Say(string text, bool waitForInput, AudioClip voiceOverClip, Action onComplete)
protected Writer GetWriter()
{
if (writer != null)
{
return writer;
}
writer = GetComponent<Writer>();
if (writer == null)
{
writer = gameObject.AddComponent<Writer>();
}
return writer;
}
protected CanvasGroup GetCanvasGroup()
{
if (canvasGroup != null)
{
return canvasGroup;
}
canvasGroup = GetComponent<CanvasGroup>();
if (canvasGroup == null)
{
canvasGroup = gameObject.AddComponent<CanvasGroup>();
}
return canvasGroup;
}
protected WriterAudio GetWriterAudio()
{
if (writerAudio != null)
{
return writerAudio;
}
writerAudio = GetComponent<WriterAudio>();
if (writerAudio == null)
{
writerAudio = gameObject.AddComponent<WriterAudio>();
}
return writerAudio;
}
protected void Start()
{
// Dialog always starts invisible, will be faded in when writing starts
GetCanvasGroup().alpha = 0f;
}
public virtual void Say(string text, bool clearPrevious, bool waitForInput, bool fadeWhenDone, AudioClip audioClip, Action onComplete)
{
Clear();
this.fadeWhenDone = fadeWhenDone;
Action onWritingComplete = delegate {
if (waitForInput)
// Look for a character sound effect if no voice over clip is specified
AudioClip clip = audioClip;
if (speakingCharacter != null &&
clip == null)
{
ShowContinueImage(true);
StartCoroutine(WaitForInput(delegate {
clip = speakingCharacter.soundEffect;
}
GetWriter().Write(text, clearPrevious, waitForInput, clip, onComplete);
}
if (continueSound != null)
protected virtual void LateUpdate()
{
UpdateAlpha();
if (continueButton != null)
{
continueButton.gameObject.SetActive( GetWriter().isWaitingForInput );
}
}
/**
* Tell dialog to fade out if it's finished writing.
*/
public virtual void FadeOut()
{
fadeWhenDone = true;
}
/**
* Stop a Say Dialog while its writing text.
*/
public virtual void Stop()
{
fadeWhenDone = true;
GetWriter().Stop();
}
protected virtual void UpdateAlpha()
{
if (GetWriter().isWriting)
{
targetAlpha = 1f;
fadeCoolDownTimer = 0.1f;
}
else if (fadeWhenDone && fadeCoolDownTimer == 0f)
{
targetAlpha = 0f;
}
else
{
AudioSource.PlayClipAtPoint(continueSound, Vector3.zero);
// Add a short delay before we start fading in case there's another Say command in the next frame or two.
// This avoids a noticeable flicker between consecutive Say commands.
fadeCoolDownTimer = Mathf.Max(0f, fadeCoolDownTimer - Time.deltaTime);
}
Clear();
audioController.Stop();
CanvasGroup canvasGroup = GetCanvasGroup();
float fadeDuration = GetSayDialog().fadeDuration;
if (fadeDuration <= 0f)
{
canvasGroup.alpha = targetAlpha;
}
else
{
float delta = (1f / fadeDuration) * Time.deltaTime;
float alpha = Mathf.MoveTowards(canvasGroup.alpha, targetAlpha, delta);
canvasGroup.alpha = alpha;
}
}
if (onComplete != null)
public virtual void SetCharacter(Character character, Flowchart flowchart = null)
{
onComplete();
if (character == null)
{
if (characterImage != null)
{
characterImage.gameObject.SetActive(false);
}
if (nameText != null)
{
nameText.text = "";
}
speakingCharacter = null;
}
else
{
Character prevSpeakingCharacter = speakingCharacter;
speakingCharacter = character;
}));
// Dim portraits of non-speaking characters
foreach (Stage s in Stage.activeStages)
{
if (s.dimPortraits)
{
foreach (Character c in s.charactersOnStage)
{
if (prevSpeakingCharacter != speakingCharacter)
{
if (c != speakingCharacter)
{
Portrait.SetDimmed(c, s, true);
}
else
{
if (onComplete != null)
Portrait.SetDimmed(c, s, false);
}
}
}
}
}
string characterName = character.nameText;
if (characterName == "")
{
// Use game object name as default
characterName = character.name;
}
if (flowchart != null)
{
onComplete();
characterName = flowchart.SubstituteVariables(characterName);
}
SetCharacterName(characterName, character.nameColor);
}
}
};
Action onExitTag = delegate {
Clear();
if (onComplete != null)
public virtual void SetCharacterImage(Sprite image)
{
if (characterImage != null)
{
if (image != null)
{
characterImage.sprite = image;
characterImage.gameObject.SetActive(true);
}
else
{
onComplete();
characterImage.gameObject.SetActive(false);
}
}
}
};
StartCoroutine(WriteText(text, voiceOverClip, onWritingComplete, onExitTag));
public virtual void SetCharacterName(string name, Color color)
{
if (nameText != null)
{
nameText.text = name;
nameText.color = color;
}
}
public override void Clear()
public virtual void Clear()
{
base.Clear();
ShowContinueImage(false);
ClearStoryText();
// Kill any active write coroutine
StopAllCoroutines();
}
protected override void OnWaitForInputTag(bool waiting)
protected virtual void ClearStoryText()
{
if (storyText != null)
{
ShowContinueImage(waiting);
storyText.text = "";
}
}
protected virtual void ShowContinueImage(bool visible)
public static void StopPortraitTweens()
{
// Stop all tweening portraits
foreach( Character c in Character.activeCharacters )
{
if (continueImage != null)
if (c.state.portraitImage != null)
{
if (LeanTween.isTweening(c.state.portraitImage.gameObject))
{
LeanTween.cancel(c.state.portraitImage.gameObject, true);
Portrait.SetRectTransform(c.state.portraitImage.rectTransform, c.state.position);
if (c.state.dimmed == true)
{
continueImage.enabled = visible;
c.state.portraitImage.color = new Color(0.5f, 0.5f, 0.5f, 1f);
}
else
{
c.state.portraitImage.color = Color.white;
}
}
}
}
}
}

1
Assets/Fungus/UI/Editor/WriteEditor.cs

@ -3,7 +3,6 @@ using UnityEditorInternal;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Rotorz.ReorderableList;
namespace Fungus
{

57
Assets/Fungus/UI/Editor/WriterAudioEditor.cs

@ -0,0 +1,57 @@
using UnityEditor;
using UnityEditorInternal;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Rotorz.ReorderableList;
namespace Fungus
{
[CustomEditor (typeof(WriterAudio))]
public class WriterAudioEditor : Editor
{
protected SerializedProperty volumeProp;
protected SerializedProperty loopProp;
protected SerializedProperty targetAudioSourceProp;
protected SerializedProperty audioModeProp;
protected SerializedProperty beepSoundsProp;
protected SerializedProperty soundEffectProp;
protected SerializedProperty inputSoundProp;
protected virtual void OnEnable()
{
volumeProp = serializedObject.FindProperty("volume");
loopProp = serializedObject.FindProperty("loop");
targetAudioSourceProp = serializedObject.FindProperty("targetAudioSource");
inputSoundProp = serializedObject.FindProperty("inputSound");
audioModeProp = serializedObject.FindProperty("audioMode");
beepSoundsProp = serializedObject.FindProperty("beepSounds");
soundEffectProp = serializedObject.FindProperty("soundEffect");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(volumeProp);
EditorGUILayout.PropertyField(loopProp);
EditorGUILayout.PropertyField(targetAudioSourceProp);
EditorGUILayout.PropertyField(inputSoundProp);
EditorGUILayout.PropertyField(audioModeProp);
if ((WriterAudio.AudioMode)audioModeProp.enumValueIndex == WriterAudio.AudioMode.Beeps)
{
ReorderableListGUI.Title(new GUIContent("Beep Sounds", "A list of beep sounds to play at random"));
ReorderableListGUI.ListField(beepSoundsProp);
}
else
{
EditorGUILayout.PropertyField(soundEffectProp);
}
serializedObject.ApplyModifiedProperties();
}
}
}

6
Assets/Fungus/Narrative/Scripts/DialogText.cs.meta → Assets/Fungus/UI/Editor/WriterAudioEditor.cs.meta

@ -1,8 +1,12 @@
fileFormatVersion: 2
guid: 4aada7218611f4257bddea1cd4ab8fcf
guid: f07068d2254394c5d9367a7b738d8c86
timeCreated: 1440497180
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Fungus/UI/Scripts/Commands/Write.cs

@ -22,8 +22,10 @@ namespace Fungus
[Tooltip("Notes about this story text for other authors, localization, etc.")]
public string description;
[Tooltip("Clear existing text before writing new text")]
public bool clearText = true;
[Tooltip("Wait until this command finishes before executing the next command")]
public bool waitUntilFinished = true;
public enum TextColor
@ -73,12 +75,14 @@ namespace Fungus
if (!waitUntilFinished)
{
writer.Write(newText, clearText);
writer.Write(newText, clearText, false, null, null);
Continue();
}
else
{
writer.Write(newText, clearText, () => { Continue (); } );
writer.Write(newText, clearText, false, null,
() => { Continue (); }
);
}
}

231
Assets/Fungus/UI/Scripts/Writer.cs

@ -7,13 +7,56 @@ using System;
namespace Fungus
{
public class Writer : MonoBehaviour
/**
* Implement this interface to be notified about Writer events
*/
public interface IWriterListener
{
// Called when a user input event (e.g. a click) has been handled by the Writer
void OnInput();
// Called when the Writer starts writing new text
// An optional audioClip sound effect can be supplied (e.g. for voiceover)
void OnStart(AudioClip audioClip);
// Called when the Writer has paused writing text (e.g. on a {wi} tag)
void OnPause();
// Called when the Writer has resumed writing text
void OnResume();
// Called when the Writer has finshed writing text
void OnEnd();
// Called every time the Writer writes a new character glyph
void OnGlyph();
}
public class Writer : MonoBehaviour, IDialogInputListener
{
[Tooltip("Gameobject containing a Text, Inout Field or Text Mesh object to write to")]
public GameObject targetTextObject;
[Tooltip("Writing characters per second")]
public float writingSpeed = 60;
[Tooltip("Pause duration for punctuation characters")]
public float punctuationPause = 0.25f;
[Tooltip("Color of text that has not been revealed yet")]
public Color hiddenTextColor = new Color(1,1,1,0);
[Tooltip("Write one word at a time rather one character at a time")]
public bool writeWholeWords = false;
// This property is true when the writer is waiting for user input to continue
[System.NonSerialized]
public bool isWaitingForInput;
// This property is true when the writer is writing text or waiting (i.e. still processing tokens)
[System.NonSerialized]
public bool isWriting;
protected float currentWritingSpeed;
protected float currentPunctuationPause;
protected Text textUI;
@ -24,6 +67,9 @@ namespace Fungus
protected bool colorActive = false;
protected string colorText = "";
protected bool inputFlag;
protected bool exitFlag;
protected List<IWriterListener> writerListeners = new List<IWriterListener>();
public string text
{
@ -63,9 +109,25 @@ namespace Fungus
protected virtual void Awake()
{
textUI = GetComponent<Text>();
inputField = GetComponent<InputField>();
textMesh = GetComponent<TextMesh>();
GameObject go = targetTextObject;
if (go == null)
{
go = gameObject;
}
textUI = go.GetComponent<Text>();
inputField = go.GetComponent<InputField>();
textMesh = go.GetComponent<TextMesh>();
// Cache the list of child writer listeners
foreach (Component component in GetComponentsInChildren<Component>())
{
IWriterListener writerListener = component as IWriterListener;
if (writerListener != null)
{
writerListeners.Add(writerListener);
}
}
}
public virtual bool HasTextObject()
@ -136,14 +198,6 @@ namespace Fungus
return closeText;
}
protected virtual void Update()
{
if (Input.anyKeyDown)
{
SetInputFlag();
}
}
public virtual void SetTextColor(Color textColor)
{
if (textUI != null)
@ -188,7 +242,12 @@ namespace Fungus
}
}
public virtual void Write(string content, bool clear, Action onComplete = null)
public virtual void Stop()
{
exitFlag = true;
}
public virtual void Write(string content, bool clear, bool waitForInput, AudioClip audioClip, Action onComplete)
{
if (clear)
{
@ -200,16 +259,23 @@ namespace Fungus
return;
}
// If this clip is null then WriterAudio will play the default sound effect (if any)
NotifyStart(audioClip);
string tokenText = content;
if (waitForInput)
{
tokenText += "{wi}";
}
TextTagParser tagParser = new TextTagParser();
List<TextTagParser.Token> tokens = tagParser.Tokenize(content);
List<TextTagParser.Token> tokens = tagParser.Tokenize(tokenText);
StartCoroutine(ProcessTokens(tokens, onComplete));
}
protected virtual IEnumerator ProcessTokens(List<TextTagParser.Token> tokens, Action onComplete)
{
text = "";
// Reset control members
boldActive = false;
italicActive = false;
@ -218,8 +284,12 @@ namespace Fungus
currentPunctuationPause = punctuationPause;
currentWritingSpeed = writingSpeed;
exitFlag = false;
isWriting = true;
foreach (TextTagParser.Token token in tokens)
{
switch (token.type)
{
case TextTagParser.TokenType.Words:
@ -290,7 +360,8 @@ namespace Fungus
break;
case TextTagParser.TokenType.Exit:
yield break;
exitFlag = true;
break;
case TextTagParser.TokenType.Message:
Flowchart.BroadcastFungusMessage(token.param);
@ -372,11 +443,19 @@ namespace Fungus
}
}
break;
}
if (exitFlag)
{
break;
}
}
inputFlag = false;
}
exitFlag = false;
isWriting = false;
NotifyEnd();
if (onComplete != null)
{
@ -394,17 +473,31 @@ namespace Fungus
for (int i = 0; i < param.Length; ++i)
{
// Exit immediately if the exit flag has been set
if (exitFlag)
{
break;
}
string left = "";
string right = "";
PartitionString(writeWholeWords, param, i, out left, out right);
text = ConcatenateString(startText, openText, closeText, left, right);
NotifyGlyph();
// No delay if user has clicked
if (inputFlag)
{
continue;
}
// Punctuation pause
if (left.Length > 0 &&
IsPunctuation(left.Substring(left.Length - 1)[0]))
{
yield return new WaitForSeconds(currentPunctuationPause);
yield return StartCoroutine(DoWait(currentPunctuationPause));
}
// Delay between characters
@ -464,11 +557,6 @@ namespace Fungus
return tempText;
}
public virtual void SetInputFlag()
{
inputFlag = true;
}
public virtual string GetTagHelp()
{
return "";
@ -482,22 +570,53 @@ namespace Fungus
duration = 1f;
}
yield return new WaitForSeconds(duration);
NotifyPause();
float timeRemaining = duration;
while (timeRemaining > 0f && !inputFlag)
{
timeRemaining -= Time.deltaTime;
yield return null;
}
NotifyResume();
}
protected virtual IEnumerator DoWait(float duration)
{
NotifyPause();
float timeRemaining = duration;
while (timeRemaining > 0f && !inputFlag)
{
timeRemaining -= Time.deltaTime;
yield return null;
}
NotifyResume();
}
protected virtual IEnumerator DoWaitForInput(bool clear)
{
NotifyPause();
inputFlag = false;
isWaitingForInput = true;
while (!inputFlag)
{
yield return null;
}
isWaitingForInput = false;
inputFlag = false;
if (clear)
{
textUI.text = "";
}
NotifyResume();
}
protected virtual bool IsPunctuation(char character)
@ -536,6 +655,68 @@ namespace Fungus
return go.GetComponent<AudioSource>();
}
protected virtual void NotifyInput()
{
foreach (IWriterListener writerListener in writerListeners)
{
writerListener.OnInput();
}
}
protected virtual void NotifyStart(AudioClip audioClip)
{
foreach (IWriterListener writerListener in writerListeners)
{
writerListener.OnStart(audioClip);
}
}
protected virtual void NotifyPause()
{
foreach (IWriterListener writerListener in writerListeners)
{
writerListener.OnPause();
}
}
protected virtual void NotifyResume()
{
foreach (IWriterListener writerListener in writerListeners)
{
writerListener.OnResume();
}
}
protected virtual void NotifyEnd()
{
foreach (IWriterListener writerListener in writerListeners)
{
writerListener.OnEnd();
}
}
protected virtual void NotifyGlyph()
{
foreach (IWriterListener writerListener in writerListeners)
{
writerListener.OnGlyph();
}
}
//
// IDialogInputListener implementation
//
public virtual void OnNextLineEvent()
{
inputFlag = true;
if (isWriting)
{
NotifyInput();
}
}
}
}

189
Assets/Fungus/UI/Scripts/WriterAudio.cs

@ -0,0 +1,189 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace Fungus
{
/*
* Manages audio effects for Dialogs
*/
public class WriterAudio : MonoBehaviour, IWriterListener
{
[Tooltip("Volume level of writing sound effects")]
[Range(0,1)]
public float volume = 1f;
[Tooltip("Loop the audio when in Sound Effect mode. Has no effect in Beeps mode.")]
public bool loop = true;
// If none is specifed then we use any AudioSource on the gameobject, and if that doesn't exist we create one.
[Tooltip("AudioSource to use for playing sound effects. If none is selected then one will be created.")]
public AudioSource targetAudioSource;
public enum AudioMode
{
Beeps, // Use short beep sound effects
SoundEffect, // Use long looping sound effect
}
[Tooltip("Type of sound effect to play when writing text")]
public AudioMode audioMode = AudioMode.Beeps;
[Tooltip("List of beeps to randomly select when playing beep sound effects. Will play maximum of one beep per character, with only one beep playing at a time.")]
public List<AudioClip> beepSounds = new List<AudioClip>();
[Tooltip("Long playing sound effect to play when writing text")]
public AudioClip soundEffect;
[Tooltip("Sound effect to play on user input (e.g. a click)")]
public AudioClip inputSound;
protected float targetVolume = 0f;
// When true, a beep will be played on every written character glyph
protected bool playBeeps;
public virtual void SetAudioMode(AudioMode mode)
{
audioMode = mode;
}
protected virtual void Awake()
{
// Need to do this in Awake rather than Start due to init order issues
if (targetAudioSource == null)
{
targetAudioSource = GetComponent<AudioSource>();
if (targetAudioSource == null)
{
targetAudioSource = gameObject.AddComponent<AudioSource>();
}
}
targetAudioSource.volume = 0f;
}
public virtual void Play(AudioClip audioClip)
{
if (targetAudioSource == null ||
(audioMode == AudioMode.SoundEffect && soundEffect == null && audioClip == null) ||
(audioMode == AudioMode.Beeps && beepSounds.Count == 0))
{
return;
}
targetAudioSource.volume = 0f;
targetVolume = 1f;
if (audioClip != null)
{
// Voice over clip provided
targetAudioSource.clip = audioClip;
targetAudioSource.loop = loop;
targetAudioSource.Play();
}
else if (audioMode == AudioMode.SoundEffect &&
soundEffect != null)
{
// Use sound effects defined in WriterAudio
targetAudioSource.clip = soundEffect;
targetAudioSource.loop = loop;
targetAudioSource.Play();
}
else if (audioMode == AudioMode.Beeps)
{
// Use beeps defined in WriterAudio
targetAudioSource.clip = null;
targetAudioSource.loop = false;
playBeeps = true;
}
}
public virtual void Pause()
{
if (targetAudioSource == null)
{
return;
}
// There's an audible click if you call audioSource.Pause() so instead just drop the volume to 0.
targetVolume = 0f;
}
public virtual void Stop()
{
if (targetAudioSource == null)
{
return;
}
// There's an audible click if you call audioSource.Stop() so instead we just switch off
// looping and let the audio stop automatically at the end of the clip
targetVolume = 0f;
targetAudioSource.loop = false;
playBeeps = false;
}
public virtual void Resume()
{
if (targetAudioSource == null)
{
return;
}
targetVolume = 1f;
}
protected virtual void Update()
{
targetAudioSource.volume = Mathf.MoveTowards(targetAudioSource.volume, targetVolume, Time.deltaTime * 5f);
}
//
// IWriterListener implementation
//
public virtual void OnInput()
{
if (inputSound != null)
{
// Assumes we're playing a 2D sound
AudioSource.PlayClipAtPoint(inputSound, Vector3.zero);
}
}
public virtual void OnStart(AudioClip audioClip)
{
Play(audioClip);
}
public virtual void OnPause()
{
Pause();
}
public virtual void OnResume()
{
Resume();
}
public virtual void OnEnd()
{
Stop();
}
public virtual void OnGlyph()
{
if (playBeeps && beepSounds.Count > 0)
{
if (!targetAudioSource.isPlaying)
{
targetAudioSource.clip = beepSounds[Random.Range(0, beepSounds.Count - 1)];
targetAudioSource.loop = false;
targetAudioSource.Play();
}
}
}
}
}

0
Assets/Fungus/Narrative/Scripts/DialogAudio.cs.meta → Assets/Fungus/UI/Scripts/WriterAudio.cs.meta

193
Assets/FungusExamples/Sherlock/TheExperiment.unity

@ -2255,6 +2255,7 @@ Camera:
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: .0219999999
m_StereoMirrorMode: 0
--- !u!1 &955843138
GameObject:
m_ObjectHideFlags: 0
@ -3059,7 +3060,6 @@ GameObject:
- 4: {fileID: 1390555296}
- 114: {fileID: 1390555295}
- 114: {fileID: 1390555440}
- 114: {fileID: 1390555293}
- 114: {fileID: 1390555312}
- 114: {fileID: 1390555302}
- 114: {fileID: 1390555298}
@ -3184,8 +3184,9 @@ MonoBehaviour:
itemId: 73
errorMessage:
indentLevel: 0
targetFlowchart: {fileID: 0}
targetBlock: {fileID: 1390555371}
stopParentBlock: 1
callMode: 0
--- !u!114 &1390555292
MonoBehaviour:
m_ObjectHideFlags: 2
@ -3204,20 +3205,10 @@ MonoBehaviour:
description:
targetBlock: {fileID: 1390555302}
hideIfVisited: 0
interactable:
booleanRef: {fileID: 0}
booleanVal: 1
setMenuDialog: {fileID: 0}
--- !u!114 &1390555293
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 11499482, guid: 1a602840cc64f2a438277c078435e290,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1390555290}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d2f6487d21a03404cb21b245f0242e79, type: 3}
m_Name:
m_EditorClassIdentifier:
parentBlock: {fileID: 0}
--- !u!114 &1390555294
MonoBehaviour:
m_ObjectHideFlags: 2
@ -3236,6 +3227,9 @@ MonoBehaviour:
description:
targetBlock: {fileID: 1390555312}
hideIfVisited: 0
interactable:
booleanRef: {fileID: 0}
booleanVal: 1
setMenuDialog: {fileID: 0}
--- !u!114 &1390555295
MonoBehaviour:
@ -3249,6 +3243,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1.0
scrollPos: {x: 2985.33252, y: 1207.83801}
variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1
@ -3260,17 +3255,16 @@ MonoBehaviour:
y: -1729.35046
width: 5969.4458
height: 2818.85034
selectedBlock: {fileID: 1390555308}
selectedBlock: {fileID: 1390555440}
selectedCommands: []
variables:
- {fileID: 1390555396}
description: 'Example scene from Sherlock: The Game Is On'
pauseAfterCommand: 0
stepPause: 0
colorCommands: 1
hideComponents: 1
saveSelection: 1
localizationId:
nextItemId: 105
--- !u!4 &1390555296
Transform:
m_ObjectHideFlags: 0
@ -3306,8 +3300,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 1
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555298
@ -3385,7 +3378,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -3412,7 +3405,6 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
waitForClick: 0
setSayDialog: {fileID: 0}
@ -3434,6 +3426,9 @@ MonoBehaviour:
description:
targetBlock: {fileID: 1390555362}
hideIfVisited: 0
interactable:
booleanRef: {fileID: 0}
booleanVal: 1
setMenuDialog: {fileID: 0}
--- !u!114 &1390555302
MonoBehaviour:
@ -3482,8 +3477,9 @@ MonoBehaviour:
itemId: 17
errorMessage:
indentLevel: 0
targetFlowchart: {fileID: 0}
targetBlock: {fileID: 1390555304}
stopParentBlock: 1
callMode: 0
--- !u!114 &1390555304
MonoBehaviour:
m_ObjectHideFlags: 2
@ -3530,6 +3526,9 @@ MonoBehaviour:
description:
targetBlock: {fileID: 1390555308}
hideIfVisited: 0
interactable:
booleanRef: {fileID: 0}
booleanVal: 1
setMenuDialog: {fileID: 0}
--- !u!114 &1390555306
MonoBehaviour:
@ -3553,8 +3552,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 0
setSayDialog: {fileID: 0}
--- !u!114 &1390555307
@ -3619,7 +3617,7 @@ MonoBehaviour:
- {fileID: 1390555309}
--- !u!114 &1390555309
MonoBehaviour:
m_ObjectHideFlags: 0
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1390555290}
@ -3635,10 +3633,13 @@ MonoBehaviour:
description:
targetBlock: {fileID: 1390555302}
hideIfVisited: 0
interactable:
booleanRef: {fileID: 0}
booleanVal: 1
setMenuDialog: {fileID: 0}
--- !u!114 &1390555310
MonoBehaviour:
m_ObjectHideFlags: 0
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1390555290}
@ -3654,10 +3655,13 @@ MonoBehaviour:
description:
targetBlock: {fileID: 1390555312}
hideIfVisited: 0
interactable:
booleanRef: {fileID: 0}
booleanVal: 1
setMenuDialog: {fileID: 0}
--- !u!114 &1390555311
MonoBehaviour:
m_ObjectHideFlags: 0
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1390555290}
@ -3677,8 +3681,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 0
setSayDialog: {fileID: 0}
--- !u!114 &1390555312
@ -3749,7 +3752,6 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
@ -3776,8 +3778,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555315
@ -3803,8 +3804,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555316
@ -3830,8 +3830,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555317
@ -3857,8 +3856,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 1
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555318
@ -3924,7 +3922,6 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
@ -3951,8 +3948,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555322
@ -3978,8 +3974,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555323
@ -4005,8 +4000,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555324
@ -4033,8 +4027,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555325
@ -4071,8 +4064,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555327
@ -4098,8 +4090,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555328
@ -4125,8 +4116,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555329
@ -4152,8 +4142,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555330
@ -4179,8 +4168,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555331
@ -4206,8 +4194,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555332
@ -4233,8 +4220,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555333
@ -4261,8 +4247,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555334
@ -4288,7 +4273,6 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 1
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
@ -4306,8 +4290,9 @@ MonoBehaviour:
itemId: 86
errorMessage:
indentLevel: 0
targetFlowchart: {fileID: 0}
targetBlock: {fileID: 1390555298}
stopParentBlock: 1
callMode: 0
--- !u!114 &1390555336
MonoBehaviour:
m_ObjectHideFlags: 2
@ -4323,8 +4308,9 @@ MonoBehaviour:
itemId: 24
errorMessage:
indentLevel: 0
targetFlowchart: {fileID: 0}
targetBlock: {fileID: 1390555440}
stopParentBlock: 1
callMode: 0
--- !u!114 &1390555337
MonoBehaviour:
m_ObjectHideFlags: 2
@ -4351,7 +4337,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4382,7 +4368,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4451,7 +4437,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4482,7 +4468,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4513,7 +4499,7 @@ MonoBehaviour:
facing: 2
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 1
shiftIntoPlace: 0
@ -4564,7 +4550,7 @@ MonoBehaviour:
facing: 1
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 1
shiftIntoPlace: 0
@ -4595,7 +4581,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4626,7 +4612,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4657,7 +4643,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4688,7 +4674,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4716,8 +4702,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 1
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555351
@ -4746,7 +4731,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4777,7 +4762,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4807,7 +4792,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4837,7 +4822,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -4864,7 +4849,6 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
@ -4893,7 +4877,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5067,7 +5051,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 1
shiftIntoPlace: 0
@ -5097,7 +5081,7 @@ MonoBehaviour:
facing: 1
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5124,8 +5108,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 1
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555367
@ -5189,7 +5172,6 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
@ -5265,7 +5247,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5295,7 +5277,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5325,7 +5307,7 @@ MonoBehaviour:
facing: 1
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5355,7 +5337,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5385,7 +5367,7 @@ MonoBehaviour:
facing: 1
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5415,7 +5397,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5445,7 +5427,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5475,7 +5457,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5505,7 +5487,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5533,8 +5515,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 1
fadeIn: 0
fadeOut: 0
fadeOut: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1390555382
@ -5562,7 +5543,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5592,7 +5573,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5622,7 +5603,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -5652,7 +5633,7 @@ MonoBehaviour:
facing: 0
useDefaultSettings: 1
fadeDuration: 0
moveSpeed: 0
moveDuration: 1
shiftOffset: {x: 0, y: 0}
move: 0
shiftIntoPlace: 0
@ -6463,7 +6444,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
tagStartSymbol: '{worried}'
tagEndSymbol:
replaceTagStartWith: '{audio=worried}{shiver=4}'
replaceTagStartWith: '{audio=worried}{vpunch=4}'
replaceTagEndWith:
--- !u!82 &1986911342
AudioSource:

1025
Assets/FungusExamples/TheFacility/TheFacility.unity

File diff suppressed because it is too large Load Diff

151
Assets/FungusExamples/TheHunter/TheHunter.unity

@ -965,6 +965,7 @@ Camera:
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: .0219999999
m_StereoMirrorMode: 0
--- !u!4 &648988545
Transform:
m_ObjectHideFlags: 0
@ -1188,6 +1189,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1.0
scrollPos: {x: 226.013794, y: 380.023193}
variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1
@ -1208,7 +1210,6 @@ MonoBehaviour:
hideComponents: 1
saveSelection: 1
localizationId:
nextItemId: 2
--- !u!4 &891057089
Transform:
m_ObjectHideFlags: 1
@ -1387,6 +1388,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1.0
scrollPos: {x: 0, y: 0}
variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1
@ -1407,7 +1409,6 @@ MonoBehaviour:
hideComponents: 1
saveSelection: 1
localizationId:
nextItemId: 1
--- !u!4 &1247920062
Transform:
m_ObjectHideFlags: 1
@ -1684,9 +1685,7 @@ GameObject:
m_Component:
- 4: {fileID: 1831099567}
- 114: {fileID: 1831099568}
- 114: {fileID: 1831099570}
- 114: {fileID: 1831099569}
- 114: {fileID: 1831099571}
- 114: {fileID: 1831099578}
- 114: {fileID: 1831099577}
- 114: {fileID: 1831099576}
@ -1792,19 +1791,21 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
m_Name:
m_EditorClassIdentifier:
scrollPos: {x: 287.41153, y: 432.32724}
version: 1.0
scrollPos: {x: 82.0114822, y: 581.36969}
variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1
blockViewHeight: 400
zoom: .985999107
zoom: .929995656
scrollViewRect:
serializedVersion: 2
x: -810.017578
y: -920.022339
width: 1939.01758
height: 2009.52234
selectedBlock: {fileID: 1831099637}
selectedCommands: []
selectedBlock: {fileID: 1831099608}
selectedCommands:
- {fileID: 1831099604}
variables:
- {fileID: 1831099569}
description: 'This is an example of a short Visual Novel / RPG
@ -1815,7 +1816,6 @@ MonoBehaviour:
hideComponents: 0
saveSelection: 1
localizationId:
nextItemId: 73
--- !u!114 &1831099569
MonoBehaviour:
m_ObjectHideFlags: 0
@ -1830,35 +1830,6 @@ MonoBehaviour:
scope: 0
key: SkipperAngry
value: 0
--- !u!114 &1831099570
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11400104, guid: 4844148fce0014eedac572d6562c44d0,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1831099566}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: afb91b566ceda411bad1e9d3c3243ecc, type: 3}
m_Name:
m_EditorClassIdentifier:
scope: 0
key: Var
value: 0
--- !u!114 &1831099571
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1831099566}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 705fa1ac97df74e3a84ff952ffd923f1, type: 3}
m_Name:
m_EditorClassIdentifier:
scope: 0
key: Var
value: 0
--- !u!114 &1831099572
MonoBehaviour:
m_ObjectHideFlags: 0
@ -2058,8 +2029,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099582
@ -2086,8 +2056,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099583
@ -2134,8 +2103,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099585
@ -2160,8 +2128,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099586
@ -2186,8 +2153,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099587
@ -2212,8 +2178,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099588
@ -2239,8 +2204,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099589
@ -2302,8 +2266,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099592
@ -2380,8 +2343,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099595
@ -2412,8 +2374,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099596
@ -2442,8 +2403,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099597
@ -2494,7 +2454,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 107.654449
x: 108.729736
y: -378.268433
width: 125
height: 40
@ -2527,6 +2487,9 @@ MonoBehaviour:
description:
targetBlock: {fileID: 1831099592}
hideIfVisited: 0
interactable:
booleanRef: {fileID: 0}
booleanVal: 1
setMenuDialog: {fileID: 0}
--- !u!114 &1831099601
MonoBehaviour:
@ -2546,6 +2509,9 @@ MonoBehaviour:
description:
targetBlock: {fileID: 1831099599}
hideIfVisited: 0
interactable:
booleanRef: {fileID: 0}
booleanVal: 1
setMenuDialog: {fileID: 0}
--- !u!114 &1831099602
MonoBehaviour:
@ -2585,8 +2551,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 0
waitForClick: 0
setSayDialog: {fileID: 0}
--- !u!114 &1831099605
@ -2611,8 +2576,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099606
@ -2659,8 +2623,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099608
@ -2676,7 +2639,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 112.963318
x: 114.038605
y: -441.890259
width: 120
height: 40
@ -2733,8 +2696,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099611
@ -2759,8 +2721,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099612
@ -2806,8 +2767,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099614
@ -2832,8 +2792,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099615
@ -2878,8 +2837,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099617
@ -2904,8 +2862,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099618
@ -2947,8 +2904,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099620
@ -2973,8 +2929,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099621
@ -2999,8 +2954,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099622
@ -3062,8 +3016,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099625
@ -3234,8 +3187,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099634
@ -3308,8 +3260,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099637
@ -3325,7 +3276,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 108.007446
x: 106.93219
y: -254.68811
width: 120
height: 40
@ -3409,8 +3360,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099641
@ -3437,8 +3387,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099642
@ -3463,8 +3412,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099643
@ -3493,8 +3441,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1831099644
@ -3606,6 +3553,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1.0
scrollPos: {x: 0, y: 0}
variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1
@ -3626,7 +3574,6 @@ MonoBehaviour:
hideComponents: 1
saveSelection: 1
localizationId:
nextItemId: 1
--- !u!4 &1846387300
Transform:
m_ObjectHideFlags: 1

655
Assets/Tests/Audio/AudioTests.unity

@ -172,6 +172,341 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
--- !u!114 &141331629
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2586c8e41f35d2f4fadde53020bf4207, type: 3}
m_Name:
m_EditorClassIdentifier:
go: {fileID: 1280611022}
thisPropertyPath: AudioSource.isPlaying
compareToType: 1
other: {fileID: 0}
otherPropertyPath:
constantValueGeneric: 0
--- !u!1 &154271128
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 142980, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 154271129}
- 114: {fileID: 154271130}
- 114: {fileID: 154271132}
- 114: {fileID: 154271137}
- 114: {fileID: 154271136}
- 114: {fileID: 154271135}
- 114: {fileID: 154271134}
- 114: {fileID: 154271133}
- 114: {fileID: 154271131}
m_Layer: 0
m_Name: Flowchart
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &154271129
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 467082, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a, type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2109416473}
m_RootOrder: 0
--- !u!114 &154271130
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11430050, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1.0
scrollPos: {x: 0, y: 0}
variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1
blockViewHeight: 400
zoom: 1
scrollViewRect:
serializedVersion: 2
x: -343
y: -340
width: 1114
height: 859
selectedBlock: {fileID: 154271132}
selectedCommands: []
variables: []
description:
stepPause: 0
colorCommands: 1
hideComponents: 1
saveSelection: 1
localizationId:
--- !u!114 &154271131
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bc30c92f7ffe3d746ac76cd528d616e5, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 5
errorMessage:
indentLevel: 0
control: 3
audioSource: {fileID: 1280611024}
startVolume: 1
endVolume: 1
fadeDuration: 0
waitUntilFinished: 0
--- !u!114 &154271132
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 11433304, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
m_Name:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 64
y: 69
width: 120
height: 40
itemId: 0
blockName: Start
description:
eventHandler: {fileID: 154271137}
commandList:
- {fileID: 154271136}
- {fileID: 154271135}
- {fileID: 154271134}
- {fileID: 154271133}
- {fileID: 154271131}
--- !u!114 &154271133
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bc30c92f7ffe3d746ac76cd528d616e5, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 4
errorMessage:
indentLevel: 0
control: 3
audioSource: {fileID: 2113119600}
startVolume: 1
endVolume: 1
fadeDuration: 0
waitUntilFinished: 0
--- !u!114 &154271134
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3315ad2ebb85443909a1203d56d9344e, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 3
errorMessage:
indentLevel: 0
duration: 2
--- !u!114 &154271135
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bc30c92f7ffe3d746ac76cd528d616e5, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 2
errorMessage:
indentLevel: 0
control: 1
audioSource: {fileID: 1280611024}
startVolume: 1
endVolume: 1
fadeDuration: 0
waitUntilFinished: 0
--- !u!114 &154271136
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bc30c92f7ffe3d746ac76cd528d616e5, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 1
errorMessage:
indentLevel: 0
control: 1
audioSource: {fileID: 2113119600}
startVolume: 1
endVolume: 1
fadeDuration: 0
waitUntilFinished: 0
--- !u!114 &154271137
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 154271128}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d2f6487d21a03404cb21b245f0242e79, type: 3}
m_Name:
m_EditorClassIdentifier:
parentBlock: {fileID: 154271132}
--- !u!1 &353260577
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 353260578}
- 114: {fileID: 353260582}
- 114: {fileID: 353260581}
- 114: {fileID: 353260580}
- 114: {fileID: 353260579}
m_Layer: 0
m_Name: TestComponent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &353260578
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 353260577}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2109416473}
m_RootOrder: 3
--- !u!114 &353260579
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 353260577}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8bafa54482a87ac4cbd7ff1bfd1ac93a, type: 3}
m_Name:
m_EditorClassIdentifier:
checkAfterTime: 3
repeatCheckTime: 0
repeatEveryTime: 1
checkAfterFrames: 1
repeatCheckFrame: 1
repeatEveryFrame: 1
hasFailed: 0
checkMethods: 1
m_ActionBase: {fileID: 141331629}
checksPerformed: 0
--- !u!114 &353260580
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 353260577}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8bafa54482a87ac4cbd7ff1bfd1ac93a, type: 3}
m_Name:
m_EditorClassIdentifier:
checkAfterTime: 3
repeatCheckTime: 0
repeatEveryTime: 1
checkAfterFrames: 1
repeatCheckFrame: 1
repeatEveryFrame: 1
hasFailed: 0
checkMethods: 1
m_ActionBase: {fileID: 665292077}
checksPerformed: 0
--- !u!114 &353260581
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 353260577}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8bafa54482a87ac4cbd7ff1bfd1ac93a, type: 3}
m_Name:
m_EditorClassIdentifier:
checkAfterTime: 1
repeatCheckTime: 0
repeatEveryTime: 1
checkAfterFrames: 1
repeatCheckFrame: 1
repeatEveryFrame: 1
hasFailed: 0
checkMethods: 1
m_ActionBase: {fileID: 1297950424}
checksPerformed: 0
--- !u!114 &353260582
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 353260577}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8bafa54482a87ac4cbd7ff1bfd1ac93a, type: 3}
m_Name:
m_EditorClassIdentifier:
checkAfterTime: 1
repeatCheckTime: 0
repeatEveryTime: 1
checkAfterFrames: 1
repeatCheckFrame: 1
repeatEveryFrame: 1
hasFailed: 0
checkMethods: 1
m_ActionBase: {fileID: 706075662}
checksPerformed: 0
--- !u!1 &641282520
GameObject:
m_ObjectHideFlags: 0
@ -261,6 +596,40 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
--- !u!114 &665292077
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2586c8e41f35d2f4fadde53020bf4207, type: 3}
m_Name:
m_EditorClassIdentifier:
go: {fileID: 2113119598}
thisPropertyPath: AudioSource.isPlaying
compareToType: 1
other: {fileID: 0}
otherPropertyPath:
constantValueGeneric: 0
--- !u!114 &706075662
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2586c8e41f35d2f4fadde53020bf4207, type: 3}
m_Name:
m_EditorClassIdentifier:
go: {fileID: 2113119598}
thisPropertyPath: AudioSource.isPlaying
compareToType: 1
other: {fileID: 0}
otherPropertyPath:
constantValueGeneric: 1
--- !u!114 &809764427
MonoBehaviour:
m_ObjectHideFlags: 0
@ -318,6 +687,120 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
--- !u!1 &1280611022
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1280611023}
- 82: {fileID: 1280611024}
m_Layer: 0
m_Name: Audio Source 2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1280611023
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1280611022}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -.320000172, y: -13.6900005, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2109416473}
m_RootOrder: 2
--- !u!82 &1280611024
AudioSource:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1280611022}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 8300000, guid: 4740988b391ff49bfbb897b60a0bf268, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
--- !u!114 &1297950424
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2586c8e41f35d2f4fadde53020bf4207, type: 3}
m_Name:
m_EditorClassIdentifier:
go: {fileID: 1280611022}
thisPropertyPath: AudioSource.isPlaying
compareToType: 1
other: {fileID: 0}
otherPropertyPath:
constantValueGeneric: 1
--- !u!1 &1602367571
GameObject:
m_ObjectHideFlags: 0
@ -333,7 +816,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!114 &1602367572
MonoBehaviour:
m_ObjectHideFlags: 0
@ -471,7 +954,7 @@ MonoBehaviour:
y: -340
width: 1114
height: 859
selectedBlock: {fileID: 0}
selectedBlock: {fileID: 1716415746}
selectedCommands: []
variables: []
description: "This is a manual test. \nClick through the Say dialog and listen to
@ -503,8 +986,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1716415749
@ -529,8 +1011,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1716415750
@ -556,8 +1037,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1716415751
@ -583,8 +1063,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1716415752
@ -609,8 +1088,7 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!114 &1716415753
@ -635,7 +1113,156 @@ MonoBehaviour:
showAlways: 1
showCount: 1
extendPrevious: 0
fadeIn: 0
fadeOut: 0
fadeWhenDone: 1
waitForClick: 1
setSayDialog: {fileID: 0}
--- !u!1 &2109416471
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 2109416473}
- 114: {fileID: 2109416472}
m_Layer: 0
m_Name: ControlAudioTest
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &2109416472
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2109416471}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1dba0b27b0864740a8720e920aa88c0, type: 3}
m_Name:
m_EditorClassIdentifier:
timeout: 5
ignored: 0
succeedAfterAllAssertionsAreExecuted: 1
expectException: 0
expectedExceptionList:
succeedWhenExceptionIsThrown: 0
includedPlatforms: -1
platformsToIgnore: []
dynamic: 0
dynamicTypeName:
--- !u!4 &2109416473
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2109416471}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 154271129}
- {fileID: 2113119599}
- {fileID: 1280611023}
- {fileID: 353260578}
m_Father: {fileID: 0}
m_RootOrder: 3
--- !u!1 &2113119598
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 2113119599}
- 82: {fileID: 2113119600}
m_Layer: 0
m_Name: Audio Source 1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2113119599
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2113119598}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -.320000172, y: -13.6900005, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 2109416473}
m_RootOrder: 1
--- !u!82 &2113119600
AudioSource:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 2113119598}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 8300000, guid: 98d045067b3b7428c842dab1285b43a1, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2

5391
Assets/Tests/Narrative/NarrativeTests.unity

File diff suppressed because it is too large Load Diff

12
Assets/Tests/Narrative/SayTest.cs

@ -0,0 +1,12 @@
using UnityEngine;
using System.Collections;
public class SayTest : MonoBehaviour
{
public int passCount;
public void TestPassed()
{
passCount++;
}
}

12
Assets/Tests/Narrative/SayTest.cs.meta

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: abf8bf8daccdf46b4afc52dcfd59a479
timeCreated: 1440068772
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Tests/TestAssets/Audio/Beep1.wav

Binary file not shown.

22
Assets/Tests/TestAssets/Audio/Beep1.wav.meta

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 0cec78902391f4944881c028a5bd61e2
timeCreated: 1440502847
licenseType: Free
AudioImporter:
serializedVersion: 6
defaultSettings:
loadType: 1
sampleRateSetting: 0
sampleRateOverride: 0
compressionFormat: 0
quality: .5
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
3D: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Tests/TestAssets/Audio/Beep2.wav

Binary file not shown.

22
Assets/Tests/TestAssets/Audio/Beep2.wav.meta

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: e63f93fa5d357441485c639326e9e8f7
timeCreated: 1440502847
licenseType: Free
AudioImporter:
serializedVersion: 6
defaultSettings:
loadType: 1
sampleRateSetting: 0
sampleRateOverride: 0
compressionFormat: 0
quality: .5
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
3D: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Tests/TestAssets/Audio/Beep3.wav

Binary file not shown.

22
Assets/Tests/TestAssets/Audio/Beep3.wav.meta

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: c40373edf37cb4a3f8b7b1103d03b1bb
timeCreated: 1440502847
licenseType: Free
AudioImporter:
serializedVersion: 6
defaultSettings:
loadType: 1
sampleRateSetting: 0
sampleRateOverride: 0
compressionFormat: 0
quality: .5
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
3D: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Tests/TestAssets/Audio/VoiceOver3.wav

Binary file not shown.

22
Assets/Tests/TestAssets/Audio/VoiceOver3.wav.meta

@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 0cdfebb6349aa4b72a1d34c47935faf8
timeCreated: 1440492917
licenseType: Free
AudioImporter:
serializedVersion: 6
defaultSettings:
loadType: 1
sampleRateSetting: 0
sampleRateOverride: 0
compressionFormat: 0
quality: .5
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
3D: 0
userData:
assetBundleName:
assetBundleVariant:

2
Assets/Tests/UI/FakeWriterInput.cs

@ -16,7 +16,7 @@ namespace Fungus
void DoFakeInput()
{
Writer writer = GetComponent<Writer>();
writer.SetInputFlag();
writer.OnNextLineEvent();
}
}

657
Assets/Tests/UI/TextTests.unity

@ -232,7 +232,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_RootOrder: 4
--- !u!1 &95196512
GameObject:
m_ObjectHideFlags: 0
@ -397,6 +397,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -508,6 +509,228 @@ MonoBehaviour:
compareType: 0
comparisonType: 4
ignoreCase: 0
--- !u!1 &332004784
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 142980, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a, type: 2}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 332004785}
- 114: {fileID: 332004786}
- 114: {fileID: 332004788}
- 114: {fileID: 332004789}
- 114: {fileID: 332004787}
- 114: {fileID: 332004791}
- 114: {fileID: 332004790}
- 114: {fileID: 332004792}
m_Layer: 0
m_Name: Flowchart
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &332004785
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 467082, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a, type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 332004784}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 530636036}
m_RootOrder: 0
--- !u!114 &332004786
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 11430050, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 332004784}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7a334fe2ffb574b3583ff3b18b4792d3, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1.0
scrollPos: {x: 0, y: 0}
variablesScrollPos: {x: 0, y: 0}
variablesExpanded: 1
blockViewHeight: 400
zoom: 1
scrollViewRect:
serializedVersion: 2
x: -343
y: -340
width: 1114
height: 859
selectedBlock: {fileID: 332004788}
selectedCommands:
- {fileID: 332004787}
variables: []
description:
stepPause: 0
colorCommands: 1
hideComponents: 1
saveSelection: 1
localizationId:
--- !u!114 &332004787
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 332004784}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ad2261dbe44de43a980e6f7c77c88f7f, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 1
errorMessage:
indentLevel: 0
textObject: {fileID: 1490749230}
text:
stringRef: {fileID: 0}
stringVal: Write some text with beeps
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
setAlpha:
floatRef: {fileID: 0}
floatVal: 1
setColor:
colorRef: {fileID: 0}
colorVal: {r: 1, g: 1, b: 1, a: 1}
--- !u!114 &332004788
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 11433304, guid: 5e7fbc8d4eb714b279eeeef2262c1e1a,
type: 2}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 332004784}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3d3d73aef2cfc4f51abf34ac00241f60, type: 3}
m_Name:
m_EditorClassIdentifier:
nodeRect:
serializedVersion: 2
x: 68
y: 69
width: 120
height: 40
itemId: 0
blockName: Start
description:
eventHandler: {fileID: 332004789}
commandList:
- {fileID: 332004787}
- {fileID: 332004792}
- {fileID: 332004791}
- {fileID: 332004790}
--- !u!114 &332004789
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 332004784}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d2f6487d21a03404cb21b245f0242e79, type: 3}
m_Name:
m_EditorClassIdentifier:
parentBlock: {fileID: 332004788}
--- !u!114 &332004790
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 332004784}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ad2261dbe44de43a980e6f7c77c88f7f, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 3
errorMessage:
indentLevel: 0
textObject: {fileID: 1490749230}
text:
stringRef: {fileID: 0}
stringVal: Write some text with sound effects
description:
clearText: 1
waitUntilFinished: 1
textColor: 0
setAlpha:
floatRef: {fileID: 0}
floatVal: 1
setColor:
colorRef: {fileID: 0}
colorVal: {r: 1, g: 1, b: 1, a: 1}
--- !u!114 &332004791
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 332004784}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 688e35811870d403f9e2b1ab2a699d98, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 2
errorMessage:
indentLevel: 0
targetObject: {fileID: 1490749230}
targetComponentAssemblyName: Fungus.WriterAudio, Assembly-CSharp, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
targetComponentFullname: UnityEngine.Component[]
targetComponentText: WriterAudio
targetMethod: SetAudioMode
targetMethodText: 'SetAudioMode (AudioMode): Void'
methodParameters:
- objValue:
typeAssemblyname: Fungus.WriterAudio+AudioMode, Assembly-CSharp, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
typeFullname: Fungus.WriterAudio+AudioMode
intValue: 1
boolValue: 0
floatValue: 0
stringValue:
colorValue: {r: 0, g: 0, b: 0, a: 0}
gameObjectValue: {fileID: 0}
materialValue: {fileID: 0}
objectValue: {fileID: 0}
spriteValue: {fileID: 0}
textureValue: {fileID: 0}
vector2Value: {x: 0, y: 0}
vector3Value: {x: 0, y: 0, z: 0}
variableKey:
saveReturnValue: 0
returnValueVariableKey:
returnValueType: System.Void
showInherited: 0
callMode: 0
--- !u!114 &332004792
MonoBehaviour:
m_ObjectHideFlags: 2
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 332004784}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3315ad2ebb85443909a1203d56d9344e, type: 3}
m_Name:
m_EditorClassIdentifier:
itemId: 4
errorMessage:
indentLevel: 0
duration: 2
--- !u!114 &419867297
MonoBehaviour:
m_ObjectHideFlags: 0
@ -579,6 +802,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 10
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -701,6 +925,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -778,6 +1003,58 @@ MonoBehaviour:
compareType: 0
comparisonType: 4
ignoreCase: 0
--- !u!1 &530636034
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 530636036}
- 114: {fileID: 530636035}
m_Layer: 0
m_Name: WriterAudioTest
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &530636035
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 530636034}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1dba0b27b0864740a8720e920aa88c0, type: 3}
m_Name:
m_EditorClassIdentifier:
timeout: 5
ignored: 0
succeedAfterAllAssertionsAreExecuted: 1
expectException: 0
expectedExceptionList:
succeedWhenExceptionIsThrown: 0
includedPlatforms: -1
platformsToIgnore: []
dynamic: 0
dynamicTypeName:
--- !u!4 &530636036
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 530636034}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 332004785}
- {fileID: 1411617024}
- {fileID: 1200195692}
m_Father: {fileID: 0}
m_RootOrder: 3
--- !u!1 &640528464
GameObject:
m_ObjectHideFlags: 0
@ -932,6 +1209,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -1159,6 +1437,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -1234,6 +1513,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 60
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -1382,6 +1662,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: .500811279, g: .213235319, b: 1, a: 1}
@ -1586,6 +1867,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Auto add Writer component
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1655,6 +1937,7 @@ MonoBehaviour:
stringVal: Write {color=white}colored {i}italic{/i}{/color} and {b}bold{/b}. Mixed
{color=red} red {b} and bold {i} and italic {/i} not italic {/b} not bold {/color}
not colored.
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1700,6 +1983,7 @@ MonoBehaviour:
Wait {w=0.5}works
{wc}Wait for input and clear works'
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1727,6 +2011,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: 3D text mesh
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1829,6 +2114,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Do a vpunch{vpunch}{flash}, hpunch{hpunch} and a punch{punch}.
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1856,6 +2142,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Broadcast message.{m=TestMessage} Write this text{x}But not this text.
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1883,6 +2170,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Write {s=10}slow{/s}, normal, {s=1000} super fast{/s}
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1910,6 +2198,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Write out some text over time and then clear it{c}
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1937,6 +2226,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Test. punctuation? pause .?!,:;) works
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -1965,6 +2255,7 @@ MonoBehaviour:
stringRef: {fileID: 0}
stringVal: Play sound{audio=BeepSound}{w=1} Play loop{audioloop=BeepSound}{w=3}
Stop{audiostop=BeepSound}
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -2056,6 +2347,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Default color
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -2083,6 +2375,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Set Visible
description:
clearText: 1
waitUntilFinished: 0
textColor: 1
@ -2110,6 +2403,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Set Alpha
description:
clearText: 1
waitUntilFinished: 0
textColor: 2
@ -2137,6 +2431,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Set Color
description:
clearText: 1
waitUntilFinished: 0
textColor: 3
@ -2164,6 +2459,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Highlight text as it's written out one word at a time.
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -2191,6 +2487,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Wait until finished
description:
clearText: 1
waitUntilFinished: 1
textColor: 0
@ -2274,6 +2571,7 @@ MonoBehaviour:
text:
stringRef: {fileID: 0}
stringVal: Substitution:{$StringVar},{$BoolVar},{$IntVar},{$FloatVar}
description:
clearText: 1
waitUntilFinished: 0
textColor: 0
@ -2298,7 +2596,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!114 &1032150758
MonoBehaviour:
m_ObjectHideFlags: 0
@ -2551,6 +2849,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -2645,6 +2944,55 @@ MonoBehaviour:
other: {fileID: 0}
otherPropertyPath:
constantValueGeneric: 0
--- !u!1 &1200195691
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1200195692}
- 114: {fileID: 1200195694}
m_Layer: 0
m_Name: TestAssertions
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1200195692
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1200195691}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 530636036}
m_RootOrder: 2
--- !u!114 &1200195694
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1200195691}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8bafa54482a87ac4cbd7ff1bfd1ac93a, type: 3}
m_Name:
m_EditorClassIdentifier:
checkAfterTime: 2.25
repeatCheckTime: 0
repeatEveryTime: 1
checkAfterFrames: 1
repeatCheckFrame: 1
repeatEveryFrame: 1
hasFailed: 0
checkMethods: 1
m_ActionBase: {fileID: 1851602427}
checksPerformed: 0
--- !u!1 &1218238772
GameObject:
m_ObjectHideFlags: 0
@ -2735,6 +3083,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -2818,7 +3167,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 61dddfdc5e0e44ca298d8f46f7f5a915, type: 3}
m_Name:
m_EditorClassIdentifier:
selectedFlowchart: {fileID: 1845987941}
selectedFlowchart: {fileID: 332004786}
--- !u!4 &1308535842
Transform:
m_ObjectHideFlags: 1
@ -2919,6 +3268,96 @@ CanvasRenderer:
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1405192199}
--- !u!1 &1411617023
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 224: {fileID: 1411617024}
- 223: {fileID: 1411617027}
- 114: {fileID: 1411617026}
- 114: {fileID: 1411617025}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1411617024
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1411617023}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1490749231}
m_Father: {fileID: 530636036}
m_RootOrder: 1
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &1411617025
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1411617023}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &1411617026
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1411617023}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
--- !u!223 &1411617027
Canvas:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1411617023}
m_Enabled: 1
serializedVersion: 2
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!114 &1430574585
MonoBehaviour:
m_ObjectHideFlags: 0
@ -3168,6 +3607,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -3221,6 +3661,180 @@ RectTransform:
m_AnchoredPosition: {x: -333, y: -294}
m_SizeDelta: {x: -665, y: 30}
m_Pivot: {x: .5, y: .5}
--- !u!1 &1490749230
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 224: {fileID: 1490749231}
- 222: {fileID: 1490749233}
- 114: {fileID: 1490749232}
- 114: {fileID: 1490749234}
- 114: {fileID: 1490749235}
- 82: {fileID: 1490749236}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1490749231
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1490749230}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1411617024}
m_RootOrder: 0
m_AnchorMin: {x: 0, y: .5}
m_AnchorMax: {x: 1, y: .5}
m_AnchoredPosition: {x: 0, y: 54.25}
m_SizeDelta: {x: 1, y: 108.5}
m_Pivot: {x: .5, y: .5}
--- !u!114 &1490749232
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1490749230}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 30
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: New Text
--- !u!222 &1490749233
CanvasRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1490749230}
--- !u!114 &1490749234
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1490749230}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 60
punctuationPause: .25
hiddenTextColor: {r: .463235319, g: .463235319, b: .463235319, a: 1}
writeWholeWords: 0
--- !u!114 &1490749235
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1490749230}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c4782cf42f2644447b9631f6e522160b, type: 3}
m_Name:
m_EditorClassIdentifier:
volume: 1
loop: 1
targetAudioSource: {fileID: 0}
audioMode: 0
beepSounds:
- {fileID: 8300000, guid: 0cec78902391f4944881c028a5bd61e2, type: 3}
- {fileID: 8300000, guid: c40373edf37cb4a3f8b7b1103d03b1bb, type: 3}
soundEffect: {fileID: 8300000, guid: 98d045067b3b7428c842dab1285b43a1, type: 3}
inputSound: {fileID: 0}
--- !u!82 &1490749236
AudioSource:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1490749230}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
--- !u!1 &1518184822
GameObject:
m_ObjectHideFlags: 0
@ -3491,6 +4105,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -3606,6 +4221,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -3704,7 +4320,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4
m_RootOrder: 5
--- !u!1 &1719294948
GameObject:
m_ObjectHideFlags: 0
@ -3751,6 +4367,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: .500811279, g: .213235319, b: 1, a: 1}
@ -4001,6 +4618,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 60
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -4092,7 +4710,7 @@ MonoBehaviour:
y: -340
width: 1114
height: 859
selectedBlock: {fileID: 1845987940}
selectedBlock: {fileID: 0}
selectedCommands: []
variables:
- {fileID: 1845987944}
@ -4160,9 +4778,10 @@ MonoBehaviour:
errorMessage:
indentLevel: 0
targetTextObject: {fileID: 95196512}
stringData:
text:
stringRef: {fileID: 0}
stringVal: Output text 3
description:
_textObjectObsolete: {fileID: 0}
--- !u!114 &1845987949
MonoBehaviour:
@ -4179,9 +4798,10 @@ MonoBehaviour:
errorMessage:
indentLevel: 0
targetTextObject: {fileID: 1912867843}
stringData:
text:
stringRef: {fileID: 0}
stringVal: Output text 2
description:
_textObjectObsolete: {fileID: 0}
--- !u!114 &1845987950
MonoBehaviour:
@ -4198,10 +4818,28 @@ MonoBehaviour:
errorMessage:
indentLevel: 0
targetTextObject: {fileID: 1612264386}
stringData:
text:
stringRef: {fileID: 0}
stringVal: Output text 1
description:
_textObjectObsolete: {fileID: 0}
--- !u!114 &1851602427
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2586c8e41f35d2f4fadde53020bf4207, type: 3}
m_Name:
m_EditorClassIdentifier:
go: {fileID: 1490749230}
thisPropertyPath: AudioSource.isPlaying
compareToType: 1
other: {fileID: 0}
otherPropertyPath:
constantValueGeneric: 1
--- !u!114 &1866177340
MonoBehaviour:
m_ObjectHideFlags: 0
@ -4430,6 +5068,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -4549,6 +5188,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}
@ -4631,6 +5271,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a676940fce6344af1a70043b089a6c14, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTextObject: {fileID: 0}
writingSpeed: 30
punctuationPause: .25
hiddenTextColor: {r: 1, g: 1, b: 1, a: 0}

Loading…
Cancel
Save