Browse Source

Merge pull request #675 from snozbot/dialog-history

Dialog history
master
Chris Gregan 7 years ago committed by GitHub
parent
commit
4d3078d716
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1190
      Assets/Fungus/Resources/Prefabs/SaveMenu.prefab
  2. 8
      Assets/Fungus/Scripts/Components/FungusManager.cs
  3. 143
      Assets/Fungus/Scripts/Components/NarrativeLog.cs
  4. 12
      Assets/Fungus/Scripts/Components/NarrativeLog.cs.meta
  5. 190
      Assets/Fungus/Scripts/Components/NarrativeLogMenu.cs
  6. 12
      Assets/Fungus/Scripts/Components/NarrativeLogMenu.cs.meta
  7. 11
      Assets/Fungus/Scripts/Components/SaveData.cs
  8. 17
      Assets/Fungus/Scripts/Components/SaveMenu.cs
  9. 1
      Assets/Fungus/Scripts/Components/SayDialog.cs
  10. 9
      Assets/Fungus/Scripts/Signals/SaveManagerSignals.cs
  11. 2
      Assets/Fungus/Scripts/Signals/WriterSignals.cs
  12. 5
      Assets/Fungus/Scripts/Utils/ConversationManager.cs
  13. 2
      Assets/Fungus/Scripts/Utils/SaveHistory.cs
  14. BIN
      Assets/Fungus/Textures/HistoryIcon.png
  15. 68
      Assets/Fungus/Textures/HistoryIcon.png.meta
  16. BIN
      Assets/Fungus/Textures/menu.png
  17. 68
      Assets/Fungus/Textures/menu.png.meta
  18. 5096
      Assets/FungusExamples/Conversation/NarrativeLog.unity
  19. 8
      Assets/FungusExamples/Conversation/NarrativeLog.unity.meta

1190
Assets/Fungus/Resources/Prefabs/SaveMenu.prefab

File diff suppressed because it is too large Load Diff

8
Assets/Fungus/Scripts/Components/FungusManager.cs

@ -15,6 +15,7 @@ namespace Fungus
[RequireComponent(typeof(GlobalVariables))] [RequireComponent(typeof(GlobalVariables))]
#if UNITY_5_3_OR_NEWER #if UNITY_5_3_OR_NEWER
[RequireComponent(typeof(SaveManager))] [RequireComponent(typeof(SaveManager))]
[RequireComponent(typeof(NarrativeLog))]
#endif #endif
public sealed class FungusManager : MonoBehaviour public sealed class FungusManager : MonoBehaviour
{ {
@ -30,6 +31,7 @@ namespace Fungus
GlobalVariables = GetComponent<GlobalVariables>(); GlobalVariables = GetComponent<GlobalVariables>();
#if UNITY_5_3_OR_NEWER #if UNITY_5_3_OR_NEWER
SaveManager = GetComponent<SaveManager>(); SaveManager = GetComponent<SaveManager>();
NarrativeLog = GetComponent<NarrativeLog>();
#endif #endif
} }
@ -73,6 +75,12 @@ namespace Fungus
/// Gets the save manager singleton instance. /// Gets the save manager singleton instance.
/// </summary> /// </summary>
public SaveManager SaveManager { get; private set; } public SaveManager SaveManager { get; private set; }
/// <summary>
/// Gets the history manager singleton instance.
/// </summary>
public NarrativeLog NarrativeLog { get; private set; }
#endif #endif
/// <summary> /// <summary>

143
Assets/Fungus/Scripts/Components/NarrativeLog.cs

@ -0,0 +1,143 @@
// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Fungus
{
/// <summary>
/// A single line of dialog
/// </summary>
[Serializable]
public class Line
{
[SerializeField] public string name;
[SerializeField] public string text;
}
/// <summary>
/// Serializable object to store Narrative Lines
/// </summary>
[Serializable]
public class NarrativeData
{
[SerializeField] public List<Line> lines;
public NarrativeData() {
lines = new List<Line>();
}
}
/// <summary>
/// Controls dialog history
/// </summary>
public class NarrativeLog : MonoBehaviour
{
/// <summary>
/// NarrativeAdded signal. Sent when a line is added.
/// </summary>
public static event NarrativeAddedHandler OnNarrativeAdded;
public delegate void NarrativeAddedHandler();
public static void DoNarrativeAdded() { if (OnNarrativeAdded != null) OnNarrativeAdded(); }
NarrativeData history;
protected virtual void Awake()
{
history = new NarrativeData();
}
protected virtual void OnEnable()
{
WriterSignals.OnWriterState += OnWriterState;
}
protected virtual void OnDisable()
{
WriterSignals.OnWriterState -= OnWriterState;
}
protected virtual void OnWriterState(Writer writer, WriterState writerState)
{
if (writerState == WriterState.End)
{
AddLine(SayDialog.GetSayDialog().NameText.text,
SayDialog.GetSayDialog().StoryText.text);
}
}
#region Public Methods
/// <summary>
/// Add a line of dialog to the Narrative Log
/// </summary>
/// <param name="name">Character Name</param>
/// <param name="text">Narrative Text</param>
public void AddLine(string name, string text)
{
Line line = new Line();
line.name = name;
line.text = text;
history.lines.Add(line);
DoNarrativeAdded();
}
/// <summary>
/// Clear all lines of the narrative log
/// Usually used on restart
/// </summary>
public void Clear()
{
history.lines.Clear();
}
/// <summary>
/// Convert history into Json for saving in SaveData
/// </summary>
/// <returns></returns>
public string GetJsonHistory()
{
string jsonText = JsonUtility.ToJson(history, true);
return jsonText;
}
/// <summary>
/// Show previous lines for display purposes
/// </summary>
/// <returns></returns>
public string GetPrettyHistory(bool previousOnly = false)
{
string output = "\n ";
int count;
count = previousOnly ? history.lines.Count - 1: history.lines.Count;
for (int i = 0; i < count; i++)
{
output += "<b>" + history.lines[i].name + "</b>\n";
output += history.lines[i].text + "\n\n";
}
return output;
}
/// <summary>
/// Load History from Json
/// </summary>
/// <param name="narrativeData"></param>
public void LoadHistory(string narrativeData)
{
if (narrativeData == null)
{
Debug.LogError("Failed to decode History save data item");
return;
}
history = JsonUtility.FromJson<NarrativeData>(narrativeData);
}
#endregion
}
}

12
Assets/Fungus/Scripts/Components/NarrativeLog.cs.meta

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

190
Assets/Fungus/Scripts/Components/NarrativeLogMenu.cs

@ -0,0 +1,190 @@
// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
#if UNITY_5_3_OR_NEWER
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
namespace Fungus
{
/// <summary>
/// A singleton game object which displays a simple UI for the Narrative Log.
/// </summary>
public class NarrativeLogMenu : MonoBehaviour
{
[Tooltip("Show the Narrative Log Menu")]
[SerializeField] protected bool showLog = true;
[Tooltip("Show previous lines instead of previous and current")]
[SerializeField] protected bool previousLines = true;
[Tooltip("A scrollable text field used for displaying conversation history.")]
[SerializeField] protected ScrollRect narrativeLogView;
[Tooltip("The CanvasGroup containing the save menu buttons")]
[SerializeField] protected CanvasGroup narrativeLogMenuGroup;
protected static bool narrativeLogActive = false;
protected AudioSource clickAudioSource;
protected LTDescr fadeTween;
protected static NarrativeLogMenu instance;
protected virtual void Awake()
{
if (showLog)
{
// Only one instance of NarrativeLogMenu may exist
if (instance != null)
{
Destroy(gameObject);
return;
}
instance = this;
GameObject.DontDestroyOnLoad(this);
clickAudioSource = GetComponent<AudioSource>();
}
else
{
GameObject logView = GameObject.Find("NarrativeLogView");
logView.SetActive(false);
this.enabled = false;
}
}
protected virtual void Start()
{
if (!narrativeLogActive)
{
narrativeLogMenuGroup.alpha = 0f;
}
//Clear up the lorem ipsum
UpdateNarrativeLogText();
}
protected virtual void OnEnable()
{
WriterSignals.OnWriterState += OnWriterState;
SaveManagerSignals.OnSavePointLoaded += OnSavePointLoaded;
SaveManagerSignals.OnSaveReset += OnSaveReset;
BlockSignals.OnBlockEnd += OnBlockEnd;
NarrativeLog.OnNarrativeAdded += OnNarrativeAdded;
}
protected virtual void OnDisable()
{
WriterSignals.OnWriterState -= OnWriterState;
SaveManagerSignals.OnSavePointLoaded -= OnSavePointLoaded;
SaveManagerSignals.OnSaveReset -= OnSaveReset;
BlockSignals.OnBlockEnd -= OnBlockEnd;
NarrativeLog.OnNarrativeAdded -= OnNarrativeAdded;
}
protected virtual void OnNarrativeAdded()
{
UpdateNarrativeLogText();
}
protected virtual void OnWriterState(Writer writer, WriterState writerState)
{
if (writerState == WriterState.Start)
{
UpdateNarrativeLogText();
}
}
protected virtual void OnSavePointLoaded(string savePointKey)
{
UpdateNarrativeLogText();
}
protected virtual void OnSaveReset()
{
FungusManager.Instance.NarrativeLog.Clear();
UpdateNarrativeLogText();
}
protected virtual void OnBlockEnd (Block block)
{
// At block end update to get the last line of the block
bool defaultPreviousLines = previousLines;
previousLines = false;
UpdateNarrativeLogText();
previousLines = defaultPreviousLines;
}
protected void UpdateNarrativeLogText()
{
if (narrativeLogView.enabled)
{
var historyText = narrativeLogView.GetComponentInChildren<Text>();
if (historyText != null)
{
historyText.text = FungusManager.Instance.NarrativeLog.GetPrettyHistory();
}
Canvas.ForceUpdateCanvases();
narrativeLogView.verticalNormalizedPosition = 0f;
Canvas.ForceUpdateCanvases();
}
}
protected void PlayClickSound()
{
if (clickAudioSource != null)
{
clickAudioSource.Play();
}
}
#region Public methods
public virtual void ToggleNarrativeLogView()
{
if (fadeTween != null)
{
LeanTween.cancel(fadeTween.id, true);
fadeTween = null;
}
if (narrativeLogActive)
{
// Switch menu off
LeanTween.value(narrativeLogMenuGroup.gameObject, narrativeLogMenuGroup.alpha, 0f, .2f)
.setEase(LeanTweenType.easeOutQuint)
.setOnUpdate((t) => {
narrativeLogMenuGroup.alpha = t;
}).setOnComplete(() => {
narrativeLogMenuGroup.alpha = 0f;
});
}
else
{
// Switch menu on
LeanTween.value(narrativeLogMenuGroup.gameObject, narrativeLogMenuGroup.alpha, 1f, .2f)
.setEase(LeanTweenType.easeOutQuint)
.setOnUpdate((t) => {
narrativeLogMenuGroup.alpha = t;
}).setOnComplete(() => {
narrativeLogMenuGroup.alpha = 1f;
});
}
narrativeLogActive = !narrativeLogActive;
}
#endregion
}
}
#endif

12
Assets/Fungus/Scripts/Components/NarrativeLogMenu.cs.meta

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 76befdada4ed8754db75aeb0b0d42976
timeCreated: 1487446345
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

11
Assets/Fungus/Scripts/Components/SaveData.cs

@ -17,6 +17,8 @@ namespace Fungus
{ {
protected const string FlowchartDataKey = "FlowchartData"; protected const string FlowchartDataKey = "FlowchartData";
protected const string NarrativeLogKey = "NarrativeLogData";
[Tooltip("A list of Flowchart objects whose variables will be encoded in the save data. Boolean, Integer, Float and String variables are supported.")] [Tooltip("A list of Flowchart objects whose variables will be encoded in the save data. Boolean, Integer, Float and String variables are supported.")]
[SerializeField] protected List<Flowchart> flowcharts = new List<Flowchart>(); [SerializeField] protected List<Flowchart> flowcharts = new List<Flowchart>();
@ -33,8 +35,10 @@ namespace Fungus
var flowchartData = FlowchartData.Encode(flowchart); var flowchartData = FlowchartData.Encode(flowchart);
var saveDataItem = SaveDataItem.Create(FlowchartDataKey, JsonUtility.ToJson(flowchartData)); var saveDataItem = SaveDataItem.Create(FlowchartDataKey, JsonUtility.ToJson(flowchartData));
saveDataItems.Add(saveDataItem); saveDataItems.Add(saveDataItem);
var narrativeLogItem = SaveDataItem.Create(NarrativeLogKey, FungusManager.Instance.NarrativeLog.GetJsonHistory());
saveDataItems.Add(narrativeLogItem);
} }
} }
@ -62,6 +66,11 @@ namespace Fungus
FlowchartData.Decode(flowchartData); FlowchartData.Decode(flowchartData);
} }
if (saveDataItem.DataType == NarrativeLogKey)
{
FungusManager.Instance.NarrativeLog.LoadHistory(saveDataItem.Data);
}
} }
} }

17
Assets/Fungus/Scripts/Components/SaveMenu.cs

@ -43,7 +43,7 @@ namespace Fungus
[Tooltip("The button which fast forwards the save history to the next save point.")] [Tooltip("The button which fast forwards the save history to the next save point.")]
[SerializeField] protected Button forwardButton; [SerializeField] protected Button forwardButton;
[Tooltip("The button which restarts the game.")] [Tooltip("The button which restarts the game.")]
[SerializeField] protected Button restartButton; [SerializeField] protected Button restartButton;
@ -157,6 +157,7 @@ namespace Fungus
debugText.text = saveManager.GetDebugInfo(); debugText.text = saveManager.GetDebugInfo();
} }
} }
} }
protected virtual void OnEnable() protected virtual void OnEnable()
@ -210,7 +211,9 @@ namespace Fungus
if (saveMenuActive) if (saveMenuActive)
{ {
// Switch menu off // Switch menu off
LeanTween.value(saveMenuGroup.gameObject, saveMenuGroup.alpha, 0f, 0.5f).setOnUpdate( (t) => { LeanTween.value(saveMenuGroup.gameObject, saveMenuGroup.alpha, 0f, 0.2f)
.setEase(LeanTweenType.easeOutQuint)
.setOnUpdate( (t) => {
saveMenuGroup.alpha = t; saveMenuGroup.alpha = t;
}).setOnComplete( () => { }).setOnComplete( () => {
saveMenuGroup.alpha = 0f; saveMenuGroup.alpha = 0f;
@ -219,7 +222,9 @@ namespace Fungus
else else
{ {
// Switch menu on // Switch menu on
LeanTween.value(saveMenuGroup.gameObject, saveMenuGroup.alpha, 1f, 0.5f).setOnUpdate( (t) => { LeanTween.value(saveMenuGroup.gameObject, saveMenuGroup.alpha, 1f, 0.2f)
.setEase(LeanTweenType.easeOutQuint)
.setOnUpdate( (t) => {
saveMenuGroup.alpha = t; saveMenuGroup.alpha = t;
}).setOnComplete( () => { }).setOnComplete( () => {
saveMenuGroup.alpha = 1f; saveMenuGroup.alpha = 1f;
@ -255,6 +260,7 @@ namespace Fungus
PlayClickSound(); PlayClickSound();
saveManager.Load(saveDataKey); saveManager.Load(saveDataKey);
} }
} }
/// <summary> /// <summary>
@ -269,6 +275,7 @@ namespace Fungus
{ {
saveManager.Rewind(); saveManager.Rewind();
} }
} }
/// <summary> /// <summary>
@ -291,7 +298,6 @@ namespace Fungus
public virtual void Restart() public virtual void Restart()
{ {
var saveManager = FungusManager.Instance.SaveManager; var saveManager = FungusManager.Instance.SaveManager;
if (string.IsNullOrEmpty(saveManager.StartScene)) if (string.IsNullOrEmpty(saveManager.StartScene))
{ {
Debug.LogError("No start scene specified"); Debug.LogError("No start scene specified");
@ -302,11 +308,12 @@ namespace Fungus
// Reset the Save History for a new game // Reset the Save History for a new game
saveManager.ClearHistory(); saveManager.ClearHistory();
if (restartDeletesSave) if (restartDeletesSave)
{ {
saveManager.Delete(saveDataKey); saveManager.Delete(saveDataKey);
} }
SaveManagerSignals.DoSaveReset();
SceneManager.LoadScene(saveManager.StartScene); SceneManager.LoadScene(saveManager.StartScene);
} }

1
Assets/Fungus/Scripts/Components/SayDialog.cs

@ -25,6 +25,7 @@ namespace Fungus
[Tooltip("The name text UI object")] [Tooltip("The name text UI object")]
[SerializeField] protected Text nameText; [SerializeField] protected Text nameText;
public virtual Text NameText { get { return nameText; } }
[Tooltip("The story text UI object")] [Tooltip("The story text UI object")]
[SerializeField] protected Text storyText; [SerializeField] protected Text storyText;

9
Assets/Fungus/Scripts/Signals/SaveManagerSignals.cs

@ -4,7 +4,7 @@
namespace Fungus namespace Fungus
{ {
/// <summary> /// <summary>
/// Save manager signalling system. /// Save manager signaling system.
/// You can use this to be notified about various events in the save game system. /// You can use this to be notified about various events in the save game system.
/// </summary> /// </summary>
public static class SaveManagerSignals public static class SaveManagerSignals
@ -25,6 +25,13 @@ namespace Fungus
public delegate void SavePointAddedHandler(string savePointKey, string savePointDescription); public delegate void SavePointAddedHandler(string savePointKey, string savePointDescription);
public static void DoSavePointAdded(string savePointKey, string savePointDescription) { if (OnSavePointAdded != null) OnSavePointAdded(savePointKey, savePointDescription); } public static void DoSavePointAdded(string savePointKey, string savePointDescription) { if (OnSavePointAdded != null) OnSavePointAdded(savePointKey, savePointDescription); }
/// <summary>
/// SaveReset signal. Sent when the save history is reset.
/// </summary>
public static event SaveResetHandler OnSaveReset;
public delegate void SaveResetHandler();
public static void DoSaveReset() { if (OnSaveReset != null) OnSaveReset(); }
#endregion #endregion
} }
} }

2
Assets/Fungus/Scripts/Signals/WriterSignals.cs

@ -4,7 +4,7 @@
namespace Fungus namespace Fungus
{ {
/// <summary> /// <summary>
/// Writer event signalling system. /// Writer event signaling system.
/// You can use this to be notified about various events in the writing process. /// You can use this to be notified about various events in the writing process.
/// </summary> /// </summary>
public static class WriterSignals public static class WriterSignals

5
Assets/Fungus/Scripts/Utils/ConversationManager.cs

@ -92,6 +92,9 @@ namespace Fungus
sayDialog = SayDialog.GetSayDialog(); sayDialog = SayDialog.GetSayDialog();
} }
sayDialog.SetActive(true);
SayDialog.ActiveSayDialog = sayDialog;
return sayDialog; return sayDialog;
} }
@ -319,8 +322,6 @@ namespace Fungus
yield break; yield break;
} }
sayDialog.SetActive(true);
if (currentCharacter != null && if (currentCharacter != null &&
currentCharacter != previousCharacter) currentCharacter != previousCharacter)
{ {

2
Assets/Fungus/Scripts/Utils/SaveHistory.cs

@ -53,7 +53,7 @@ namespace Fungus
/// <summary> /// <summary>
/// Rewinds to the previous Save Point in the Save History. /// Rewinds to the previous Save Point in the Save History.
/// The latest Save Point is moved to a seperate list of rewound save points. /// The latest Save Point is moved to a separate list of rewound save points.
/// </summary> /// </summary>
public void Rewind() public void Rewind()
{ {

BIN
Assets/Fungus/Textures/HistoryIcon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

68
Assets/Fungus/Textures/HistoryIcon.png.meta

@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: 94b4465d12d983b45a5c1af59318e72e
timeCreated: 1486825113
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/Fungus/Textures/menu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

68
Assets/Fungus/Textures/menu.png.meta

@ -0,0 +1,68 @@
fileFormatVersion: 2
guid: 240416d45df4c6c4daec987220246861
timeCreated: 1489595536
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

5096
Assets/FungusExamples/Conversation/NarrativeLog.unity

File diff suppressed because it is too large Load Diff

8
Assets/FungusExamples/Conversation/NarrativeLog.unity.meta

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ed628f8c83f9cc04d98117ef6521362e
timeCreated: 1487954686
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save