패키지 업그레이드

This commit is contained in:
NTG_Lenovo 2025-01-13 16:46:04 +09:00
parent 4a65eabca7
commit 95a5922df4
3615 changed files with 70131 additions and 12079 deletions

File diff suppressed because it is too large Load Diff

View File

@ -88,7 +88,7 @@ namespace BlueWater
{
SwitchCurrentActionMap(InputActionMaps.TycoonUi);
}
else if (currentSceneName == SceneName.Tycoon)
else if (currentSceneName == SceneName.Tycoon || currentSceneName == SceneName.TycoonTest)
{
SwitchCurrentActionMap(InputActionMaps.Tycoon);
}

View File

@ -13,6 +13,7 @@ namespace BlueWater
public static string TycoonTile = "00.TycoonTitle";
public static string Tycoon = "01.Tycoon";
public static string Combat = "02.Combat";
public static string TycoonTest = "04.TycoonTest";
}
public class SceneController : Singleton<SceneController>

View File

@ -90,6 +90,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Editor Default Resources/Dialogue System/Conditions.png
uploadId: 667566
uploadId: 710675

View File

@ -47,7 +47,7 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Editor Default Resources/Dialogue System/DialogueManager Inspector
Dark.png
uploadId: 667566
uploadId: 710675

View File

@ -47,7 +47,7 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Editor Default Resources/Dialogue System/DialogueManager Inspector
Light.png
uploadId: 667566
uploadId: 710675

View File

@ -60,6 +60,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Editor Default Resources/Dialogue System/EditorNode.png
uploadId: 667566
uploadId: 710675

View File

@ -90,6 +90,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Editor Default Resources/Dialogue System/Event.png
uploadId: 667566
uploadId: 710675

View File

@ -90,6 +90,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Editor Default Resources/Dialogue System/Resize.png
uploadId: 667566
uploadId: 710675

View File

@ -90,6 +90,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Editor Default Resources/Dialogue System/Script.png
uploadId: 667566
uploadId: 710675

View File

@ -90,6 +90,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Editor Default Resources/Dialogue System/Sequence.png
uploadId: 667566
uploadId: 710675

View File

@ -47,6 +47,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Gizmos/DialogueDatabase Icon.png
uploadId: 667566
uploadId: 710675

View File

@ -49,6 +49,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Gizmos/StringAsset Icon.png
uploadId: 667566
uploadId: 710675

View File

@ -49,6 +49,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Gizmos/TextTable Icon.png
uploadId: 667566
uploadId: 710675

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eddf9e762d3f77340b96ee9bbaaa8f46
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: af2461860408d964bbbce14dcd69394c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 837186c5c1ecb814196fadc0a82adb2f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: dfb9a113097a6654182aaeac30900e39
folderAsset: yes
DefaultImporter:
userData:

View File

@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 78aea659239908d4f9c8609ce8b27a7a
folderAsset: yes
DefaultImporter:
userData:

View File

@ -0,0 +1,70 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7d44a0b778e51584a8b00171e38b0bce, type: 3}
m_Name: BehaviorDesignLuaFunctionInfo
m_EditorClassIdentifier:
conditionFunctions:
- functionName: BD/bdGetBool
parameters: 0200000002000000
returnValue: 1
- functionName: BD/bdGetFloat
parameters: 0200000002000000
returnValue: 2
- functionName: BD/bdGetInt
parameters: 0200000002000000
returnValue: 2
- functionName: BD/bdGetString
parameters: 0200000002000000
returnValue: 3
- functionName: BD/Group/bdGetBoolGroup
parameters: 020000000100000002000000
returnValue: 1
- functionName: BD/Group/bdGetFloatGroup
parameters: 020000000100000002000000
returnValue: 2
- functionName: BD/Group/bdGetIntGroup
parameters: 020000000100000002000000
returnValue: 2
- functionName: BD/Group/bdGetStringGroup
parameters: 020000000100000002000000
returnValue: 3
scriptFunctions:
- functionName: BD/bdSyncToLua
parameters: 02000000
returnValue: 0
- functionName: BD/bdSyncFromLua
parameters: 02000000
returnValue: 0
- functionName: BD/bdSetBool
parameters: 020000000200000000000000
returnValue: 0
- functionName: BD/bdSetFloat
parameters: 020000000200000001000000
returnValue: 0
- functionName: BD/bdSetInt
parameters: 020000000200000001000000
returnValue: 0
- functionName: BD/bdSetString
parameters: 020000000200000002000000
returnValue: 0
- functionName: BD/Group/bdSetBoolGroup
parameters: 02000000010000000200000000000000
returnValue: 0
- functionName: BD/Group/bdSetFloatGroup
parameters: 02000000010000000200000001000000
returnValue: 0
- functionName: BD/Group/bdSetIntGroup
parameters: 02000000010000000200000001000000
returnValue: 0
- functionName: BD/Group/bdSetStringGroup
parameters: 02000000010000000200000002000000
returnValue: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3890b0e0a1424b7468da16f8e3cca4c6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,314 @@
using BehaviorDesigner.Runtime;
using UnityEngine;
namespace PixelCrushers.DialogueSystem.BehaviorDesignerSupport
{
/// <summary>
/// This script synchronizes a behavior tree's shared variables with the
/// Dialogue System's Lua environment. Attach it to the GameObject that
/// contains the behavior tree. Synchronization occurs automatically at
/// the beginning and end of conversations. You can also synchronize manually
/// by calling SyncToLua() or SyncFromLua().
///
/// The Lua variables will have the name <em>gameObjectName_variableName</em>.
/// All blank spaces and hyphens will be converted to underscores.
/// For example, say an NPC named Private Hart has a behavior tree with a shared
/// variable named Angry. The Lua variable will be <c>Variable["Private_Hart_Angry"]</c>.
///
/// Only bools, floats, ints, and strings are synchronized.
///
/// This script also adds some Lua functions:
/// - bdSyncToLua(gameObject)
/// - bdSyncFromLua(gameObject)
/// where gameObject is the name of a GameObject with a behavior tree.
/// </summary>
[AddComponentMenu("Pixel Crushers/Dialogue System/Third Party/Behavior Designer/Behavior Tree Lua Bridge")]
public class BehaviorTreeLuaBridge : MonoBehaviour
{
// The behavior tree on this GameObject:
private Behavior behavior = null;
private static bool hasRegisteredLuaFunctions = false;
void Awake()
{
behavior = GetComponentInChildren<Behavior>();
RegisterLuaFunctions();
}
/// <summary>
/// When a conversation starts, sync to Lua. This makes the behavior
/// tree data available to conversations in Conditions and User Scripts.
/// </summary>
/// <param name="actor">The other actor.</param>
public void OnConversationStart(Transform actor)
{
SyncToLua();
}
/// <summary>
/// When a conversation ends, sync from Lua back into the behavior
/// tree. If the conversation has changed any values, the changes
/// will be reflected in the behavior tree.
/// </summary>
/// <param name="actor">The other actor.</param>
public void OnConversationEnd(Transform actor)
{
SyncFromLua();
}
/// <summary>
/// Syncs the behavior tree's shared variables to the Dialogue System's
/// Lua environment.
/// </summary>
public void SyncToLua()
{
if (behavior == null) return;
foreach (SharedVariable variable in behavior.GetBehaviorSource().Variables)
{
if (IsSyncableType(variable))
{
DialogueLua.SetVariable(GetLuaVariableName(variable.Name), variable.GetValue());
}
}
}
/// <summary>
/// Syncs the Dialogue System's Lua environment back into the behavior tree's
/// shared variables.
/// </summary>
public void SyncFromLua()
{
if (behavior == null) return;
foreach (SharedVariable variable in behavior.GetBehaviorSource().Variables)
{
if (IsSyncableType(variable))
{
Lua.Result result = DialogueLua.GetVariable(GetLuaVariableName(variable.Name));
if (result.HasReturnValue)
{
variable.SetValue(CastLuaResult(variable, result));
}
}
}
}
private bool IsSyncableType(SharedVariable variable)
{
return (variable is SharedBool) ||
(variable is SharedFloat) ||
(variable is SharedInt) ||
(variable is SharedString);
}
private string GetLuaVariableName(string variableName)
{
return string.Format("{0}_{1}", name, variableName);
}
private object CastLuaResult(SharedVariable variable, Lua.Result result)
{
if (variable is SharedBool) return result.AsBool;
if (variable is SharedFloat) return result.AsFloat;
if (variable is SharedInt) return result.AsInt;
if (variable is SharedString) return result.AsString;
return null;
}
public static void RegisterLuaFunctions()
{
if (hasRegisteredLuaFunctions) return;
hasRegisteredLuaFunctions = true;
Lua.RegisterFunction("bdSyncToLua", null, SymbolExtensions.GetMethodInfo(() => bdSyncToLua(string.Empty)));
Lua.RegisterFunction("bdSyncToFrom", null, SymbolExtensions.GetMethodInfo(() => bdSyncFromLua(string.Empty)));
Lua.RegisterFunction("bdGetBool", null, SymbolExtensions.GetMethodInfo(() => bdGetBool(string.Empty, string.Empty)));
Lua.RegisterFunction("bdGetFloat", null, SymbolExtensions.GetMethodInfo(() => bdGetFloat(string.Empty, string.Empty)));
Lua.RegisterFunction("bdGetInt", null, SymbolExtensions.GetMethodInfo(() => bdGetInt(string.Empty, string.Empty)));
Lua.RegisterFunction("bdGetString", null, SymbolExtensions.GetMethodInfo(() => bdGetString(string.Empty, string.Empty)));
Lua.RegisterFunction("bdSetBool", null, SymbolExtensions.GetMethodInfo(() => bdSetBool(string.Empty, string.Empty, false)));
Lua.RegisterFunction("bdSetFloat", null, SymbolExtensions.GetMethodInfo(() => bdSetFloat(string.Empty, string.Empty, (double)0)));
Lua.RegisterFunction("bdSetInt", null, SymbolExtensions.GetMethodInfo(() => bdSetInt(string.Empty, string.Empty, (double)0)));
Lua.RegisterFunction("bdSetString", null, SymbolExtensions.GetMethodInfo(() => bdSetString(string.Empty, string.Empty, string.Empty)));
Lua.RegisterFunction("bdGetBoolGroup", null, SymbolExtensions.GetMethodInfo(() => bdGetBoolGroup(string.Empty, (double)0, string.Empty)));
Lua.RegisterFunction("bdGetFloatGroup", null, SymbolExtensions.GetMethodInfo(() => bdGetFloatGroup(string.Empty, (double)0, string.Empty)));
Lua.RegisterFunction("bdGetIntGroup", null, SymbolExtensions.GetMethodInfo(() => bdGetIntGroup(string.Empty, (double)0, string.Empty)));
Lua.RegisterFunction("bdGetStringGroup", null, SymbolExtensions.GetMethodInfo(() => bdGetStringGroup(string.Empty, (double)0, string.Empty)));
Lua.RegisterFunction("bdSetBoolGroup", null, SymbolExtensions.GetMethodInfo(() => bdSetBoolGroup(string.Empty, (double)0, string.Empty, false)));
Lua.RegisterFunction("bdSetFloatGroup", null, SymbolExtensions.GetMethodInfo(() => bdSetFloatGroup(string.Empty, (double)0, string.Empty, (double)0)));
Lua.RegisterFunction("bdSetIntGroup", null, SymbolExtensions.GetMethodInfo(() => bdSetIntGroup(string.Empty, (double)0, string.Empty, (double)0)));
Lua.RegisterFunction("bdSetStringGroup", null, SymbolExtensions.GetMethodInfo(() => bdSetStringGroup(string.Empty, (double)0, string.Empty, string.Empty)));
}
public static void bdSyncToLua(string gameObjectName)
{
var bridge = FindBridge(gameObjectName);
if (bridge != null) bridge.SyncToLua();
}
public static void bdSyncFromLua(string gameObjectName)
{
var bridge = FindBridge(gameObjectName);
if (bridge != null) bridge.SyncFromLua();
}
public static T bdGetVariableValue<T>(string gameObjectName, string variableName, int group = -1)
{
var behavior = FindBehavior(gameObjectName, group);
if (behavior != null)
{
foreach (SharedVariable variable in behavior.GetBehaviorSource().Variables)
{
if (variable.Name == variableName)
{
var value = variable.GetValue();
if (value.GetType() == typeof(T)) return (T)value;
}
}
}
return default(T);
}
public static void bdSetVariableValue<T>(string gameObjectName, string variableName, T variableValue, int group = -1)
{
var behavior = FindBehavior(gameObjectName, group);
if (behavior != null)
{
foreach (SharedVariable variable in behavior.GetBehaviorSource().Variables)
{
if (variable.Name == variableName)
{
variable.SetValue(variableValue);
return;
}
}
}
}
public static bool bdGetBool(string gameObjectName, string variableName)
{
return bdGetVariableValue<bool>(gameObjectName, variableName);
}
public static double bdGetFloat(string gameObjectName, string variableName)
{
return (double)bdGetVariableValue<float>(gameObjectName, variableName);
}
public static double bdGetInt(string gameObjectName, string variableName)
{
return (double)bdGetVariableValue<int>(gameObjectName, variableName);
}
public static string bdGetString(string gameObjectName, string variableName)
{
return bdGetVariableValue<string>(gameObjectName, variableName);
}
public static void bdSetBool(string gameObjectName, string variableName, bool variableValue)
{
bdSetVariableValue<bool>(gameObjectName, variableName, variableValue);
}
public static void bdSetFloat(string gameObjectName, string variableName, double variableValue)
{
bdSetVariableValue<float>(gameObjectName, variableName, (float)variableValue);
}
public static void bdSetInt(string gameObjectName, string variableName, double variableValue)
{
bdSetVariableValue<int>(gameObjectName, variableName, (int)variableValue);
}
public static void bdSetString(string gameObjectName, string variableName, string variableValue)
{
bdSetVariableValue<string>(gameObjectName, variableName, variableValue);
}
public static bool bdGetBoolGroup(string gameObjectName, double group, string variableName)
{
return bdGetVariableValue<bool>(gameObjectName, variableName, (int)group);
}
public static double bdGetFloatGroup(string gameObjectName, double group, string variableName)
{
return (double)bdGetVariableValue<float>(gameObjectName, variableName, (int)group);
}
public static double bdGetIntGroup(string gameObjectName, double group, string variableName)
{
return (double)bdGetVariableValue<int>(gameObjectName, variableName, (int)group);
}
public static string bdGetStringGroup(string gameObjectName, double group, string variableName)
{
return bdGetVariableValue<string>(gameObjectName, variableName, (int)group);
}
public static void bdSetBoolGroup(string gameObjectName, double group, string variableName, bool variableValue)
{
bdSetVariableValue<bool>(gameObjectName, variableName, variableValue, (int)group);
}
public static void bdSetFloatGroup(string gameObjectName, double group, string variableName, double variableValue)
{
bdSetVariableValue<float>(gameObjectName, variableName, (float)variableValue, (int)group);
}
public static void bdSetIntGroup(string gameObjectName, double group, string variableName, double variableValue)
{
bdSetVariableValue<int>(gameObjectName, variableName, (int)variableValue, (int)group);
}
public static void bdSetStringGroup(string gameObjectName, double group, string variableName, string variableValue)
{
bdSetVariableValue<string>(gameObjectName, variableName, variableValue, (int)group);
}
public static BehaviorTreeLuaBridge FindBridge(string gameObjectName)
{
var go = GameObject.Find(gameObjectName);
if (go == null)
{
if (DialogueDebug.logWarnings) Debug.LogWarning("Dialogue System: BehaviorTreeLuaBridge can't find GameObject named " + gameObjectName);
return null;
}
var bridge = go.GetComponent<BehaviorTreeLuaBridge>();
if (bridge == null)
{
var behavior = go.GetComponentInChildren<Behavior>();
if (behavior == null)
{
if (DialogueDebug.logWarnings) Debug.LogWarning("Dialogue System: GameObject " + go.name + " doesn't have a Behavior tree in its hierarchy.", go);
return null;
}
bridge = go.AddComponent<BehaviorTreeLuaBridge>();
bridge.behavior = behavior;
}
return bridge;
}
public static Behavior FindBehavior(string gameObjectName, int group = -1)
{
var go = GameObject.Find(gameObjectName);
if (go == null)
{
if (DialogueDebug.logWarnings) Debug.LogWarning("Dialogue System: BehaviorTreeLuaBridge can't find GameObject named " + gameObjectName);
return null;
}
foreach (var behavior in go.GetComponentsInChildren<Behavior>())
{
if (group == -1 || behavior.Group == group)
{
return behavior;
}
}
return null;
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c4a8a1d80c1da4c4083f535796da4df9
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -0,0 +1,104 @@
using UnityEngine;
using System.Collections;
using PixelCrushers.DialogueSystem;
using PixelCrushers.DialogueSystem.BehaviorDesignerSupport;
using BehaviorDesigner.Runtime;
namespace PixelCrushers.DialogueSystem.SequencerCommands
{
/// <summary>
/// Implements the Behavior Designer sequencer command Behavior(subject, start|stop|pause|resume, [group]).
/// - <em>subject</em>: The name of a GameObject containing a behavior tree, or <c>speaker<c> or <c>listener</c>.
/// The behavior tree can be located on a child object.
/// - <c>start|stop|pause|resume</c>: Control action for the behavior tree.
/// - <c>start</c>: Starts or restarts the behavior tree.
/// - <c>stop</c>: Stops the behavior tree.
/// - <c>pause</c>: Pauses the behavior tree.
/// - <c>resume</c>: Resumes the behavior tree if paused.
/// - group: (Optional) Apply to behavior trees with a specific group ID. If omitted,
/// apply to all behavior trees on subject.
/// </summary>
public class SequencerCommandBehavior : SequencerCommand
{
// Translate the control string into an enum to make it easier to work with in code:
private enum ControlCommand { Start, Stop, Pause, Resume, Undefined }
private ControlCommand GetControlCommand(string s)
{
if (string.Equals("start", s, System.StringComparison.OrdinalIgnoreCase))
{
return ControlCommand.Start;
}
else if (string.Equals("stop", s, System.StringComparison.OrdinalIgnoreCase))
{
return ControlCommand.Stop;
}
else if (string.Equals("pause", s, System.StringComparison.OrdinalIgnoreCase))
{
return ControlCommand.Pause;
}
else if (string.Equals("resume", s, System.StringComparison.OrdinalIgnoreCase))
{
return ControlCommand.Resume;
}
else
{
return ControlCommand.Undefined;
}
}
public void Start()
{
Transform subject = GetSubject(0);
ControlCommand command = GetControlCommand(GetParameter(1));
int group = GetParameterAsInt(2, -1);
if (subject == null)
{
if (DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: Behavior({1}, {2}) subject is null", DialogueDebug.Prefix, GetParameter(0), GetParameter(1)));
}
else if (command == ControlCommand.Undefined)
{
if (DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: Behavior({1}, {2}) command must be 'start', 'stop', or 'resume'", DialogueDebug.Prefix, GetParameter(0), GetParameter(1)));
}
else
{
var foundOne = false;
foreach (var behavior in subject.GetComponentsInChildren<Behavior>())
{
if (group == -1 || behavior.Group == group)
{
foundOne = true;
switch (command)
{
case ControlCommand.Start:
case ControlCommand.Resume:
behavior.EnableBehavior();
break;
case ControlCommand.Stop:
behavior.DisableBehavior(false);
break;
case ControlCommand.Pause:
behavior.DisableBehavior(true);
break;
}
}
if (foundOne)
{
if (DialogueDebug.LogInfo) Debug.Log(string.Format("{0}: Sequencer: Behavior({1}, {2})", DialogueDebug.Prefix, GetParameter(0), GetParameter(1)));
}
else if (group == -1)
{
if (DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: Behavior({1}, {2}): {1} does not have a Behavior[Tree] component", DialogueDebug.Prefix, GetParameter(0), GetParameter(1)));
}
else
{
if (DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: Behavior({1}, {2}, {3}): {1} does not have a Behavior[Tree] component with matching group ID", DialogueDebug.Prefix, GetParameter(0), GetParameter(1), group));
}
}
Stop();
}
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 10831438027c88d42a409c165435bc9e
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -0,0 +1,71 @@
using UnityEngine;
using System.Collections;
using PixelCrushers.DialogueSystem;
using PixelCrushers.DialogueSystem.BehaviorDesignerSupport;
using BehaviorDesigner.Runtime;
namespace PixelCrushers.DialogueSystem.SequencerCommands {
/// <summary>
/// Implements the Behavior Designer sequencer command BehaviorVariable(subject, variableName, value).
/// - <em>subject</em>: The name of a GameObject containing a behavior tree, or <c>speaker<c> or <c>listener</c>.
/// The behavior tree can be located on a child object.
/// - <em>variableName</em>: The name of a shared variable on the behavior tree. These
/// variable types are supported: Bool, Float, Int, String, GameObject, Object, Transform, Vector3.
/// - <em>value</em>: The new value of the variable.
/// </summary>
public class SequencerCommandBehaviorVariable : SequencerCommand {
public void Start() {
Transform subject = GetSubject(0);
string variableName = GetParameter(1);
string value = GetParameter(2);
if (subject == null) {
if (DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: BehaviorVariable({1}, {2}, {3}) subject is null", DialogueDebug.Prefix, GetParameter(0), variableName, value));
} else {
Behavior behavior = subject.GetComponentInChildren<Behavior>();
if (behavior == null) {
if (DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: BehaviorVariable({1}, {2}, {3}): {1} does not have a Behavior[Tree] component", DialogueDebug.Prefix, GetParameter(0), variableName, value));
} else {
if (DialogueDebug.LogInfo) Debug.Log(string.Format("{0}: Sequencer: BehaviorVariable({1}, {2}, {3})", DialogueDebug.Prefix, GetParameter(0), variableName, value));
var variable = behavior.GetVariable(variableName);
if (variable == null) {
if (DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: BehaviorVariable({1}, {2}, {3}): variable '{2}' not found on {1}", DialogueDebug.Prefix, GetParameter(0), variableName, value));
} else if (variable is SharedBool) {
(variable as SharedBool).Value = string.Equals(value, "true", System.StringComparison.OrdinalIgnoreCase);
} else if (variable is SharedFloat) {
(variable as SharedFloat).Value = Tools.StringToFloat(value);
} else if (variable is SharedInt) {
(variable as SharedInt).Value = Tools.StringToInt(value);
} else if (variable is SharedString) {
(variable as SharedString).Value = value;
} else if (variable is SharedGameObject) {
Transform t = GetNamedTransform(value);
if (t != null) (variable as SharedGameObject).Value = t.gameObject;
} else if (variable is SharedObject) {
Transform t = GetNamedTransform(value);
if (t != null) (variable as SharedObject).Value = t.gameObject;
} else if (variable is SharedTransform) {
Transform t = GetNamedTransform(value);
if (t != null) (variable as SharedTransform).Value = t;
} else if (variable is SharedVector3) {
Transform t = GetNamedTransform(value);
if (t != null) (variable as SharedVector3).Value = t.position;
} else {
if (DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: BehaviorVariable({1}, {2}, {3}): does not support variables of type '{4}'",
DialogueDebug.Prefix, GetParameter(0), variableName, value, variable.GetType().Name));
}
}
}
Stop();
}
private Transform GetNamedTransform(string value) {
Transform t = SequencerTools.GetSubject(value, Sequencer.Speaker, Sequencer.Listener);
if (t == null && DialogueDebug.LogWarnings) Debug.LogWarning(string.Format("{0}: Sequencer: BehaviorVariable({1}, {2}, {3}): couldn't find '{3}'", DialogueDebug.Prefix, GetParameter(0), GetParameter(1), GetParameter(2)));
return t;
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b4343363be491e24cb793541b61d461d
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -0,0 +1,6 @@
/*
This folder contains support files for Opsive's Behavior Designer.
Behavior Designer also contains a corresponding package for Dialogue System support.
Example scenes are provided in Behavior Designer's package.
*/

View File

@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: 716b36c95d0403a41a497e9db48ed0a3
TextScriptImporter:
userData:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 6ba3b0f1934a43d499dac6d450d8a8d5
folderAsset: yes
timeCreated: 1502067828
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 93a456cbe2f47004598d3510ce181dab
folderAsset: yes
timeCreated: 1501895283
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,6 @@
fileFormatVersion: 2
guid: c25d739b39a2ca54fb7497cfa0188517
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5165d831b0ddd8a44b8d52946a45c2f2
timeCreated: 1501716212
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 78702eaca14a0fd4b88c9e07b5073619
folderAsset: yes
timeCreated: 1501963995
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 0b54fc641455e9840889dec44a78bf78
timeCreated: 1501896087
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,115 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Point light Animator Controller
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 1107522003540175802}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &1101832021406137228
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102269211715083310}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &1102175248821579826
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Pulse Light
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 1101832021406137228}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_Motion: {fileID: 7400000, guid: 01182b9aa71d8444ba1aea9d35cc0d71, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
--- !u!1102 &1102269211715083310
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Idle
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_Motion: {fileID: 0}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
--- !u!1107 &1107522003540175802
AnimatorStateMachine:
serializedVersion: 5
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 1102175248821579826}
m_Position: {x: 204, y: 288, z: 0}
- serializedVersion: 1
m_State: {fileID: 1102269211715083310}
m_Position: {x: 194, y: 206, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 1102269211715083310}

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 9d5f2b313d6fd5d4aa17d17a1abb7a24
timeCreated: 1501896204
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,116 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Pulse Light Animation
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 1.14
inSlope: 0
outSlope: 0
tangentMode: 136
- serializedVersion: 2
time: 0.5
value: 4
inSlope: 0
outSlope: 0
tangentMode: 136
- serializedVersion: 2
time: 1
value: 1.14
inSlope: 0
outSlope: 0
tangentMode: 136
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Range
path:
classID: 108
script: {fileID: 0}
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 514968105
script: {fileID: 0}
typeID: 108
customType: 25
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 1.14
inSlope: 0
outSlope: 0
tangentMode: 136
- serializedVersion: 2
time: 0.5
value: 4
inSlope: 0
outSlope: 0
tangentMode: 136
- serializedVersion: 2
time: 1
value: 1.14
inSlope: 0
outSlope: 0
tangentMode: 136
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_Range
path:
classID: 108
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_GenerateMotionCurves: 0
m_Events: []

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 01182b9aa71d8444ba1aea9d35cc0d71
timeCreated: 1501896204
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,10 @@
To play this example scene, you must:
1. Enable the Cinemachine and Timeline packages in Package Manager.
In earlier versions of Unity, you may need to import Cinemachine from
the Asset Store, and Timeline may be built in.
2. Select Tools > Pixel Crushers > Dialogue System > Welcome Window.
Tick the checkboxes to enable Timeline and Cinemachine support.
Note: This scene was built using Cinemachine 2.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 357fa9dd41ebf5c4dafada64e72aa751
timeCreated: 1563737623
licenseType: Pro
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 88f966fbfcddb1d48ac126e5f270e553
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c3bb36d7482cfe4429ac27a68a0b088f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: af20f15422f561640806d01875cad9db
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5ddcacd8980146143be110681672268d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,59 @@
using UnityEngine;
namespace PixelCrushers.EasySaveSupport
{
/// <summary>
/// This is an example SavedGameDataStorer for Moodkie's Easy Save 3.
/// Add it to your Save System in place of any existing storers such as
/// PlayerPrefsSavedGameDataStorer or DiskSavedGameDataStorer.
/// </summary>
public class ESSavedGameDataStorer : SavedGameDataStorer
{
[Tooltip("Tell Easy Save to use a separate file for each saved game.")]
public bool useSeparateFiles = false;
[Tooltip("Filename to contain save data, including path. If Use Separate Files is ticked, appends slot number each file.")]
public string filename = "save";
public virtual string GetFilename(int slotNumber)
{
return useSeparateFiles ? (filename + "_" + slotNumber) : filename;
}
public virtual string GetKey(int slotNumber)
{
return useSeparateFiles ? "pixelCrushers" : ("pixelCrushers_" + slotNumber);
}
public override bool HasDataInSlot(int slotNumber)
{
return ES3.KeyExists(GetKey(slotNumber), GetFilename(slotNumber));
}
public override SavedGameData RetrieveSavedGameData(int slotNumber)
{
if (!HasDataInSlot(slotNumber)) return null;
var s = ES3.Load<string>(GetKey(slotNumber), GetFilename(slotNumber));
return SaveSystem.Deserialize<SavedGameData>(s);
}
public override void StoreSavedGameData(int slotNumber, SavedGameData savedGameData)
{
var s = SaveSystem.Serialize(savedGameData);
ES3.Save<string>(GetKey(slotNumber), s, GetFilename(slotNumber));
}
public override void DeleteSavedGameData(int slotNumber)
{
if (useSeparateFiles)
{
ES3.DeleteFile(GetFilename(slotNumber));
}
else
{
ES3.DeleteKey(GetKey(slotNumber), GetFilename(slotNumber));
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ed6be5401816b0f46ba4641c1e124ca0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7e66743bf0166fb4ca2161c6a92c451a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b4183ec7452291a42a0956d57695b6e2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 32de2c52f80ef1849b6810581d83d27c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,250 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ExampleLeftSpineAnimatorController
serializedVersion: 5
m_AnimatorParameters:
- m_Name: Show
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Hide
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Focus
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Unfocus
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 110700000}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &110100272
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 110281693}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.5
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &110147280
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 110287092}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.5
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &110176745
AnimatorStateTransition:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Hide
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 110281693}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.2748797
m_TransitionOffset: 0.2681489
m_ExitTime: 0.9
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 1
m_OrderedInterruption: 1
m_CanTransitionToSelf: 0
--- !u!1101 &110180422
AnimatorStateTransition:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Show
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 110200000}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.1
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 1
m_OrderedInterruption: 1
m_CanTransitionToSelf: 0
--- !u!1102 &110200000
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Show
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 120, y: -192, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 8121f594245f67449b0ab1614f2d4bef, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &110213112
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Start
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 126, y: -252, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 0ba32211bb8ed944392b21a33b101791, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &110281693
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Hide
m_Speed: -1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 120, y: -132, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 8121f594245f67449b0ab1614f2d4bef, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &110700000
AnimatorStateMachine:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 110200000}
m_Position: {x: 120, y: -192, z: 0}
- serializedVersion: 1
m_State: {fileID: 110281693}
m_Position: {x: 120, y: -132, z: 0}
- serializedVersion: 1
m_State: {fileID: 110213112}
m_Position: {x: 126, y: -252, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: 110176745}
- {fileID: 110180422}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: -96, y: -156, z: 0}
m_EntryPosition: {x: -84, y: -252, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 110213112}

View File

@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: 7e8f65b50894c61408e02a5b06b17fdf
NativeFormatImporter:
userData:

View File

@ -0,0 +1,250 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ExampleRightSpineAnimatorController
serializedVersion: 5
m_AnimatorParameters:
- m_Name: Show
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Hide
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Focus
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Unfocus
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 110700000}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &110100272
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 110281693}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.5
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &110147280
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 0}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.5
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &110176745
AnimatorStateTransition:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Hide
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 110281693}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.2748797
m_TransitionOffset: 0.2681489
m_ExitTime: 0.9
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 1
m_OrderedInterruption: 1
m_CanTransitionToSelf: 0
--- !u!1101 &110180422
AnimatorStateTransition:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Show
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 110200000}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.1
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 0
m_HasFixedDuration: 0
m_InterruptionSource: 1
m_OrderedInterruption: 1
m_CanTransitionToSelf: 0
--- !u!1102 &110200000
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Show
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 120, y: -192, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: c49c08cc7ba87924591a35e39b2c567a, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &110213112
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Start
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 126, y: -252, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 0ba32211bb8ed944392b21a33b101791, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &110281693
AnimatorState:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Hide
m_Speed: -1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 120, y: -132, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: c49c08cc7ba87924591a35e39b2c567a, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1107 &110700000
AnimatorStateMachine:
serializedVersion: 5
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 110200000}
m_Position: {x: 120, y: -192, z: 0}
- serializedVersion: 1
m_State: {fileID: 110281693}
m_Position: {x: 120, y: -132, z: 0}
- serializedVersion: 1
m_State: {fileID: 110213112}
m_Position: {x: 126, y: -252, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: 110176745}
- {fileID: 110180422}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: -96, y: -156, z: 0}
m_EntryPosition: {x: -84, y: -252, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 110213112}

View File

@ -0,0 +1,4 @@
fileFormatVersion: 2
guid: 6376e569ebe96f54a9032c77c8b8ad9d
NativeFormatImporter:
userData:

View File

@ -0,0 +1,169 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ShowFromLeft
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: -16, y: -2.13, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0, y: 0, z: 0}
outWeight: {x: 0, y: 0, z: 0}
- serializedVersion: 3
time: 0.5
value: {x: -6, y: -2.13, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: SpineGameObject
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 1879259996
attribute: 1
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.5
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -16
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.5
value: -6
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path: SpineGameObject
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -2.13
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.5
value: -2.13
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.y
path: SpineGameObject
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path: SpineGameObject
classID: 4
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8121f594245f67449b0ab1614f2d4bef
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,169 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ShowFromRight
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 16, y: -1.33, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0, y: 0, z: 0}
outWeight: {x: 0, y: 0, z: 0}
- serializedVersion: 3
time: 0.5
value: {x: 6, y: -1.33, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path: SpineGameObject
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves: []
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 1879259996
attribute: 1
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.5
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 16
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.5
value: 6
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path: SpineGameObject
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -1.33
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.5
value: -1.33
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.y
path: SpineGameObject
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.5
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path: SpineGameObject
classID: 4
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c49c08cc7ba87924591a35e39b2c567a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1 @@
This example requires the example characters in Esoteric Software's Spine Examples.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: eb7010933037240499c2d98311832dd9
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,523 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 935899b62f48ae5498594680ed17d133, type: 3}
m_Name: Spine Example Database
m_EditorClassIdentifier:
version:
author:
description:
globalUserScript:
emphasisSettings:
- color: {r: 1, g: 1, b: 1, a: 1}
bold: 0
italic: 0
underline: 0
- color: {r: 1, g: 0, b: 0, a: 1}
bold: 0
italic: 0
underline: 0
- color: {r: 0, g: 1, b: 0, a: 1}
bold: 0
italic: 0
underline: 0
- color: {r: 0, g: 0, b: 1, a: 1}
bold: 0
italic: 0
underline: 0
actors:
- id: 1
fields:
- title: Name
value: Player
type: 0
typeString:
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString:
- title: IsPlayer
value: True
type: 2
typeString: CustomFieldType_Boolean
portrait: {fileID: 0}
spritePortrait: {fileID: 0}
alternatePortraits: []
spritePortraits: []
- id: 2
fields:
- title: Name
value: NPC1
type: 0
typeString:
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString:
- title: IsPlayer
value: False
type: 2
typeString: CustomFieldType_Boolean
portrait: {fileID: 0}
spritePortrait: {fileID: 0}
alternatePortraits: []
spritePortraits: []
- id: 3
fields:
- title: Name
value: NPC2
type: 0
typeString:
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString:
- title: IsPlayer
value: False
type: 2
typeString: CustomFieldType_Boolean
portrait: {fileID: 0}
spritePortrait: {fileID: 0}
alternatePortraits: []
spritePortraits: []
items: []
locations: []
variables:
- id: 1
fields:
- title: Name
value: Alert
type: 0
typeString: CustomFieldType_Text
- title: Initial Value
value:
type: 0
typeString: CustomFieldType_Text
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
conversations:
- id: 1
fields:
- title: Title
value: Example Conversation
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
overrideSettings:
useOverrides: 0
overrideSubtitleSettings: 0
showNPCSubtitlesDuringLine: 1
showNPCSubtitlesWithResponses: 1
showPCSubtitlesDuringLine: 0
skipPCSubtitleAfterResponseMenu: 0
subtitleCharsPerSecond: 30
minSubtitleSeconds: 2
continueButton: 0
overrideSequenceSettings: 0
defaultSequence:
defaultPlayerSequence:
defaultResponseMenuSequence:
overrideInputSettings: 0
alwaysForceResponseMenu: 1
includeInvalidEntries: 0
responseTimeout: 0
nodeColor:
dialogueEntries:
- id: 0
fields:
- title: Title
value: START
type: 0
typeString:
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString:
- title: Dialogue Text
value:
type: 0
typeString:
- title: Sequence
value: None()
type: 0
typeString:
- title: Choice
value: False
type: 2
typeString: CustomFieldType_Boolean
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction:
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 0
destinationConversationID: 1
destinationDialogueID: 1
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 30
width: 160
height: 30
- id: 1
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: I'm NPC1.
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
- title: Choice
value: False
type: 2
typeString: CustomFieldType_Boolean
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 1
destinationConversationID: 1
destinationDialogueID: 2
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 80
width: 160
height: 30
- id: 2
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: This is another line spoken by NPC1.
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
- title: Choice
value: False
type: 2
typeString: CustomFieldType_Boolean
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 2
destinationConversationID: 1
destinationDialogueID: 3
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 130
width: 160
height: 30
- id: 3
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: I'm the player.
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
- title: Choice
value: False
type: 2
typeString: CustomFieldType_Boolean
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 3
destinationConversationID: 1
destinationDialogueID: 4
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 180
width: 160
height: 30
- id: 4
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: Hi, player. (Spoken by NPC1)
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
- title: Choice
value: False
type: 2
typeString: CustomFieldType_Boolean
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 4
destinationConversationID: 1
destinationDialogueID: 5
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 230
width: 160
height: 30
- id: 5
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 3
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: Freeze! I'm NPC 2!!!
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value: '{{default}};
SpineAnimation(frozen, listener, 0, false)@1.5'
type: 0
typeString: CustomFieldType_Text
- title: Choice
value: False
type: 2
typeString: CustomFieldType_Boolean
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks: []
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 280
width: 160
height: 30
canvasScrollPosition: {x: 0, y: 0}
canvasZoom: 1
syncInfo:
syncActors: 0
syncItems: 0
syncLocations: 0
syncVariables: 0
syncActorsDatabase: {fileID: 0}
syncItemsDatabase: {fileID: 0}
syncLocationsDatabase: {fileID: 0}
syncVariablesDatabase: {fileID: 0}
templateJson: '{"treatItemsAsQuests":true,"actorFields":[{"title":"Name","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"IsPlayer","value":"False","type":2,"typeString":"CustomFieldType_Boolean"}],"itemFields":[{"title":"Name","value":"","type":0,"typeString":""},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":""},{"title":"Is
Item","value":"True","type":2,"typeString":"CustomFieldType_Boolean"}],"questFields":[{"title":"Name","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Success
Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Failure
Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"State","value":"unassigned","type":0,"typeString":"CustomFieldType_QuestState"},{"title":"Is
Item","value":"False","type":2,"typeString":"CustomFieldType_Boolean"}],"locationFields":[{"title":"Name","value":"","type":0,"typeString":""},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":""}],"variableFields":[{"title":"Name","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Initial
Value","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Description","value":"","type":0,"typeString":"CustomFieldType_Text"}],"conversationFields":[{"title":"Title","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Actor","value":"0","type":5,"typeString":"CustomFieldType_Actor"},{"title":"Conversant","value":"0","type":5,"typeString":"CustomFieldType_Actor"},{"title":"Lua_Weight","value":"return
1","type":0,"typeString":"CustomFieldType_Text"},{"title":"Lua_Repeat_Weight","value":"return
1","type":0,"typeString":"CustomFieldType_Text"}],"dialogueEntryFields":[{"title":"Title","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Actor","value":"","type":5,"typeString":"CustomFieldType_Actor"},{"title":"Conversant","value":"","type":5,"typeString":"CustomFieldType_Actor"},{"title":"Menu
Text","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Dialogue
Text","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Parenthetical","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Audio
Files","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Video
File","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Sequence","value":"","type":0,"typeString":"CustomFieldType_Text"}],"actorPrimaryFieldTitles":[],"itemPrimaryFieldTitles":[],"questPrimaryFieldTitles":[],"locationPrimaryFieldTitles":[],"variablePrimaryFieldTitles":[],"conversationPrimaryFieldTitles":[],"dialogueEntryPrimaryFieldTitles":[],"npcLineColor":{"r":1.0,"g":0.0,"b":0.0,"a":1.0},"pcLineColor":{"r":0.0,"g":0.0,"b":1.0,"a":1.0},"repeatLineColor":{"r":0.5,"g":0.5,"b":0.5,"a":1.0}}'

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dfc4ddc2a504dae49ac827023f4e62ea
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b07529b26c02a6944912337c7b290fc2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0cd5ee337633bdf4cb947177eaa97dfc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@
The default Spine integration uses SkeletonAnimations, which exist in world space.
This example shows how to use Spine SkeletonGraphics in Unity UI.
It uses two custom scripts:
SpineDialogueUI: A subclass of StandardDialogueUI that observes these custom conversation fields:
- "Panel # Actor" specifies the actor in panel #.
- "Panel # Start Visible" specifies whether panel # should start visible.
(Make sure the dialogue UI uses SpineDialogueUI and SpineSubtitlePanel.)
SpineDialogueActorUI: A subclass of SpineDialogueActor that handles SkeletonGraphics.
In the Dialogue Editor, give each actor a portrait image, even though it won't be used.
This is how the Dialogue System knows to show portrait info for the actor.
Add a SpineDialogueActor to each actor, and assign its SkeletonGraphic. During conversations,
the SkeletonGraphic will be moved to the appropriate subtitle panel.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a6ec6ad5d3db70c4eac562ab5a505c1f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1c499023f79dcd34d86e6ecc34b9687e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,40 @@
using Spine.Unity;
using UnityEngine;
using System.Collections;
namespace PixelCrushers.DialogueSystem.SpineSupport
{
/// <summary>
/// This addon for the DialogueActor component is a subclass of SpineDialogueActor
/// for Spine SkeletonGraphics (UI elements). It puts the Spine character inside
/// the subtitle panel's portrait image.
/// </summary>
[RequireComponent(typeof(DialogueActor))]
public class SpineDialogueActorUI : SpineDialogueActor
{
public override void Show(StandardUISubtitlePanel subtitlePanel)
{
if (spineGameObject == null || subtitlePanel == null || subtitlePanel.portraitImage == null) return;
wasInactive = !spineGameObject.activeSelf;
// Deactivate any old SkeletonGraphics that were in this panel's portrait image area:
foreach (Transform child in subtitlePanel.transform)
{
var otherSkeletonGraphic = child.GetComponent<SkeletonGraphic>();
if (otherSkeletonGraphic != null) otherSkeletonGraphic.gameObject.SetActive(false);
}
// Put my SkeletonGraphic in the portrait image area:
spineGameObject.SetActive(true);
spineGameObject.transform.SetParent(subtitlePanel.transform, false);
if (subtitlePanel.portraitName != null)
{ // Place behind portrait name:
spineGameObject.transform.SetSiblingIndex(subtitlePanel.portraitName.gameObject.transform.GetSiblingIndex());
}
spineGameObject.GetComponent<RectTransform>().anchoredPosition = subtitlePanel.portraitImage.GetComponent<RectTransform>().anchoredPosition;
subtitlePanel.GetComponent<Animator>().Rebind();
subtitlePanel.GetComponent<Animator>().SetTrigger(subtitlePanel.showAnimationTrigger);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3d71d6a983531b447bb0fbbf881756e4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,39 @@
using UnityEngine;
namespace PixelCrushers.DialogueSystem.SpineSupport
{
/// <summary>
/// Overrides the StandardDialogueUI Open() method to read the conversation's custom fields.
/// - "Panel # Actor" specifies the actor in panel #.
/// - "Panel # Start Visible" specifies whether panel # should start visible.
/// </summary>
public class SpineDialogueUI : StandardDialogueUI
{
public override void Open()
{
var conversation = DialogueManager.masterDatabase.GetConversation(DialogueManager.lastConversationID);
for (int i = 0; i < conversationUIElements.subtitlePanels.Length; i++)
{
// Set panel visibility according to "Panel # Start Visible":
var startVisible = conversation.LookupBool("Panel " + i + " Start Visible");
var panel = conversationUIElements.subtitlePanels[i];
panel.visibility = startVisible ? UIVisibility.AlwaysFromStart : UIVisibility.AlwaysOnceShown;
// Setup the Spine dialogue actor that should appear in this panel:
if (!(panel is SpineSubtitlePanel)) continue;
var actorID = conversation.LookupInt("Panel " + i + " Actor");
var actor = DialogueManager.masterDatabase.GetActor(actorID);
if (actor == null) continue;
var actorTransform = CharacterInfo.GetRegisteredActorTransform(actor.Name);
if (actorTransform == null) continue;
var dialogueActor = actorTransform.GetComponent<DialogueActor>();
if (dialogueActor == null) continue;
dialogueActor.SetSubtitlePanelNumber(PanelNumberUtility.IntToSubtitlePanelNumber(i));
(panel as SpineSubtitlePanel).ShowSpineDialogueActor(actorTransform);
}
base.Open();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a7b1ae8dcb120ee41902b27a13c3e884
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,678 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 935899b62f48ae5498594680ed17d133, type: 3}
m_Name: Spine Subtitle Panels Example Database
m_EditorClassIdentifier:
version:
author:
description:
globalUserScript:
emphasisSettings:
- color: {r: 1, g: 1, b: 1, a: 1}
bold: 0
italic: 0
underline: 0
- color: {r: 1, g: 0, b: 0, a: 1}
bold: 0
italic: 0
underline: 0
- color: {r: 0, g: 1, b: 0, a: 1}
bold: 0
italic: 0
underline: 0
- color: {r: 0, g: 0, b: 1, a: 1}
bold: 0
italic: 0
underline: 0
actors:
- id: 1
fields:
- title: Name
value: Player
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: IsPlayer
value: True
type: 2
typeString: CustomFieldType_Boolean
portrait: {fileID: 0}
spritePortrait: {fileID: 21300000, guid: 8fbfa1bc77a0388499f83f32b410eea3, type: 3}
alternatePortraits: []
spritePortraits: []
- id: 2
fields:
- title: Name
value: NPC1
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: IsPlayer
value: False
type: 2
typeString: CustomFieldType_Boolean
portrait: {fileID: 0}
spritePortrait: {fileID: 21300000, guid: 8fbfa1bc77a0388499f83f32b410eea3, type: 3}
alternatePortraits: []
spritePortraits: []
- id: 3
fields:
- title: Name
value: NPC2
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: IsPlayer
value: False
type: 2
typeString: CustomFieldType_Boolean
portrait: {fileID: 0}
spritePortrait: {fileID: 21300000, guid: 8fbfa1bc77a0388499f83f32b410eea3, type: 3}
alternatePortraits: []
spritePortraits: []
- id: 4
fields:
- title: Name
value: NPC3
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: IsPlayer
value: False
type: 2
typeString: CustomFieldType_Boolean
portrait: {fileID: 0}
spritePortrait: {fileID: 21300000, guid: 8fbfa1bc77a0388499f83f32b410eea3, type: 3}
alternatePortraits: []
spritePortraits: []
items: []
locations: []
variables:
- id: 1
fields:
- title: Name
value: Alert
type: 0
typeString: CustomFieldType_Text
- title: Initial Value
value:
type: 0
typeString: CustomFieldType_Text
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
conversations:
- id: 1
fields:
- title: Title
value: Example Conversation
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value: This conversation has custom fields that specify which actor is in each
subtitle panel at start.
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Panel 0 Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Panel 1 Actor
value: 3
type: 5
typeString: CustomFieldType_Actor
- title: Panel 2 Actor
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Panel 3 Actor
value: 4
type: 5
typeString: CustomFieldType_Actor
- title: Panel 0 Start Visible
value: True
type: 2
typeString: CustomFieldType_Boolean
- title: Panel 1 Start Visible
value: True
type: 2
typeString: CustomFieldType_Boolean
- title: Panel 2 Start Visible
value: True
type: 2
typeString: CustomFieldType_Boolean
- title: Panel 3 Start Visible
value: False
type: 2
typeString: CustomFieldType_Boolean
overrideSettings:
useOverrides: 0
overrideSubtitleSettings: 0
showNPCSubtitlesDuringLine: 1
showNPCSubtitlesWithResponses: 1
showPCSubtitlesDuringLine: 0
skipPCSubtitleAfterResponseMenu: 0
subtitleCharsPerSecond: 30
minSubtitleSeconds: 2
continueButton: 0
overrideSequenceSettings: 0
defaultSequence:
defaultPlayerSequence:
defaultResponseMenuSequence:
overrideInputSettings: 0
alwaysForceResponseMenu: 1
includeInvalidEntries: 0
responseTimeout: 0
cancelSubtitle:
key: 27
buttonName:
cancelConversation:
key: 27
buttonName:
nodeColor:
dialogueEntries:
- id: 0
fields:
- title: Title
value: START
type: 0
typeString:
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString:
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString:
- title: Dialogue Text
value:
type: 0
typeString:
- title: Parenthetical
value:
type: 0
typeString:
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString:
- title: Sequence
value: None()
type: 0
typeString:
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction:
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 0
destinationConversationID: 1
destinationDialogueID: 1
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 30
width: 160
height: 30
- id: 1
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: I'm NPC1 (girl). NPC1, Player (space boy), and NPC2 (doll boy) should
be visible.
type: 0
typeString: CustomFieldType_Text
- title: Parenthetical
value:
type: 0
typeString: CustomFieldType_Text
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 1
destinationConversationID: 1
destinationDialogueID: 2
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 80
width: 160
height: 30
- id: 2
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: I'm the player.
type: 0
typeString: CustomFieldType_Text
- title: Parenthetical
value:
type: 0
typeString: CustomFieldType_Text
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 2
destinationConversationID: 1
destinationDialogueID: 3
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 130
width: 160
height: 30
- id: 3
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 3
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: I'm NPC2 (doll boy).
type: 0
typeString: CustomFieldType_Text
- title: Parenthetical
value:
type: 0
typeString: CustomFieldType_Text
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 3
destinationConversationID: 1
destinationDialogueID: 4
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 180
width: 160
height: 30
- id: 4
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 4
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: I'm NPC3 (sneaky rubber man).
type: 0
typeString: CustomFieldType_Text
- title: Parenthetical
value:
type: 0
typeString: CustomFieldType_Text
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 1
originDialogueID: 4
destinationConversationID: 1
destinationDialogueID: 5
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 230
width: 160
height: 30
- id: 5
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 4
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: '[panel=0]Still sneaky rubber man. Now I snuck over to subtitle panel
0. Bye!'
type: 0
typeString: CustomFieldType_Text
- title: Parenthetical
value:
type: 0
typeString: CustomFieldType_Text
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
conversationID: 1
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks: []
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
canvasRect:
serializedVersion: 2
x: 20
y: 280
width: 160
height: 30
entryGroups: []
canvasScrollPosition: {x: 0, y: 0}
canvasZoom: 1
syncInfo:
syncActors: 0
syncItems: 0
syncLocations: 0
syncVariables: 0
syncActorsDatabase: {fileID: 0}
syncItemsDatabase: {fileID: 0}
syncLocationsDatabase: {fileID: 0}
syncVariablesDatabase: {fileID: 0}
templateJson: '{"treatItemsAsQuests":true,"actorFields":[{"title":"Name","value":"","type":0,"typeString":""},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":""},{"title":"IsPlayer","value":"False","type":2,"typeString":"CustomFieldType_Boolean"}],"itemFields":[{"title":"Name","value":"","type":0,"typeString":""},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":""},{"title":"Is
Item","value":"True","type":2,"typeString":"CustomFieldType_Boolean"}],"questFields":[{"title":"Name","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Success
Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"Failure
Description","value":"","type":0,"typeString":"CustomFieldType_Text"},{"title":"State","value":"unassigned","type":0,"typeString":"CustomFieldType_QuestState"},{"title":"Is
Item","value":"False","type":2,"typeString":"CustomFieldType_Boolean"}],"locationFields":[{"title":"Name","value":"","type":0,"typeString":""},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":""}],"variableFields":[{"title":"Name","value":"","type":0,"typeString":""},{"title":"Initial
Value","value":"","type":0,"typeString":""},{"title":"Description","value":"","type":0,"typeString":""}],"conversationFields":[{"title":"Title","value":"","type":0,"typeString":""},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":""},{"title":"Actor","value":"0","type":5,"typeString":"CustomFieldType_Actor"},{"title":"Conversant","value":"0","type":5,"typeString":"CustomFieldType_Actor"}],"dialogueEntryFields":[{"title":"Title","value":"","type":0,"typeString":""},{"title":"Pictures","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Description","value":"","type":0,"typeString":""},{"title":"Actor","value":"","type":5,"typeString":"CustomFieldType_Actor"},{"title":"Conversant","value":"","type":5,"typeString":"CustomFieldType_Actor"},{"title":"Menu
Text","value":"","type":0,"typeString":""},{"title":"Dialogue Text","value":"","type":0,"typeString":""},{"title":"Parenthetical","value":"","type":0,"typeString":""},{"title":"Audio
Files","value":"[]","type":3,"typeString":"CustomFieldType_Files"},{"title":"Video
File","value":"","type":0,"typeString":""},{"title":"Sequence","value":"","type":0,"typeString":""}],"actorPrimaryFieldTitles":[],"itemPrimaryFieldTitles":[],"questPrimaryFieldTitles":[],"locationPrimaryFieldTitles":[],"variablePrimaryFieldTitles":[],"conversationPrimaryFieldTitles":[],"dialogueEntryPrimaryFieldTitles":[],"npcLineColor":{"r":1.0,"g":0.0,"b":0.0,"a":1.0},"pcLineColor":{"r":0.0,"g":0.0,"b":1.0,"a":1.0},"repeatLineColor":{"r":0.5,"g":0.5,"b":0.5,"a":1.0}}'

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 07b9a1b967868724fb152ed840aa499a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ac6b6cf016a509849b2d93b744a19105
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bebb71e69b1efca44b31e4f1ca0b43ef
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,38 @@
using UnityEngine;
using PixelCrushers.DialogueSystem.SpineSupport;
namespace PixelCrushers.DialogueSystem.SequencerCommands
{
/// <summary>
/// Syntax: SpineActor(actor, panel#|hide)
/// </summary>
public class SequencerCommandSpineActor : SequencerCommand
{
private void Awake()
{
var actorName = GetParameter(0);
var hide = string.Equals("hide", GetParameter(1), System.StringComparison.OrdinalIgnoreCase);
int panelIndex = hide ? -1 : GetParameterAsInt(1);
var spineDialogueActor = CharacterInfo.GetRegisteredActorTransform(actorName).GetComponent<SpineDialogueActor>();
if (spineDialogueActor == null)
{
if (DialogueDebug.logWarnings) Debug.LogWarning("Dialogue System: SpineActor(" + GetParameters() + "): Can't find SpineDialogueActor.");
}
else
{
if (DialogueDebug.logInfo) Debug.Log("Dialogue System: Sequencer: SpineActor(" + spineDialogueActor + ", " + (hide ? "hide" : panelIndex.ToString()) + ")", spineDialogueActor);
if (hide)
{
SpinePortraitManager.instance.HideSpineActor(spineDialogueActor);
}
else
{
SpinePortraitManager.instance.ShowSpineActor(spineDialogueActor, panelIndex);
}
}
Stop();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 86208a6fc8bb57a44a88488e33ca678d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,64 @@
using UnityEngine;
using PixelCrushers.DialogueSystem.SpineSupport;
namespace PixelCrushers.DialogueSystem.SequencerCommands
{
/// <summary>
/// Sequencer command: SpineAnimation(animationName, [subject], [trackIndex], [loop])
///
/// Parameters:
/// - animationName: Name of an animation asset in the subject's SpineSequencerReferences component.
/// - subject: (Optional) Spine GameObject with a SpineSequencerReferences component. Default: speaker.
/// - trackIndex: (Optional) Track index to use. Default: 0.
/// - loop: (Optional) Loop or not. Default: true.
/// </summary>
public class SequencerCommandSpineAnimation : SequencerCommand
{
public void Start()
{
var animationName = GetParameter(0);
var subject = GetSubject(1, speaker);
var trackIndex = GetParameterAsInt(2);
var loop = GetParameterAsBool(3, true);
var references = (subject != null) ? subject.GetComponentInChildren<SpineSequencerReferences>() : null;
var animation = (references != null) ? references.animationReferenceAssets.Find(x => x.name == animationName) : null;
Spine.AnimationState state = null;
if (references != null)
{
if (references.skeletonAnimation != null)
{
state = references.skeletonAnimation.AnimationState;
}
else if (references.skeletonGraphic != null)
{
state = references.skeletonGraphic.AnimationState;
}
}
if (subject == null)
{
if (DialogueDebug.logWarnings) Debug.LogWarning("Dialogue System: Sequencer: SpineAnimation(" + GetParameters() + ") can't find the subject.");
}
else if (references == null)
{
if (DialogueDebug.logWarnings) Debug.LogWarning("Dialogue System: Sequencer: SpineAnimation(" + GetParameters() + ") subject " + subject + " needs a SpineSequencerReferences component.", subject);
}
else if (animation == null)
{
if (DialogueDebug.logWarnings) Debug.LogWarning("Dialogue System: Sequencer: SpineAnimation(" + GetParameters() + ") SpineSequencerReferences on " + subject + " doesn't have an AnimationReferenceAsset named '" + animationName + "'.", subject);
}
else if (state == null)
{
if (DialogueDebug.logWarnings) Debug.LogWarning("Dialogue System: Sequencer: SpineAnimation(" + GetParameters() + ") SkeletonAnimation referenced by SpineSequencerReferences on " + subject + " doesn't have an AnimationState.", subject);
}
else
{
if (DialogueDebug.logInfo) Debug.Log("Dialogue System: Sequencer: SpineAnimation(" + GetParameters() + ")", subject);
state.SetAnimation(trackIndex, animation, loop);
}
Stop();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 186611a9a5a163f4995941d68900fb0d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,54 @@
using UnityEngine;
namespace PixelCrushers.DialogueSystem.SpineSupport
{
/// <summary>
/// This addon for the DialogueActor component handles a Spine character avatar.
/// If a SpineSubtitlePanel finds a SpineDialogueActor, it uses its Show and Hide methods.
/// </summary>
[RequireComponent(typeof(DialogueActor))]
public class SpineDialogueActor : MonoBehaviour
{
public GameObject spineGameObject;
public string showTrigger = "Show";
public string hideTrigger = "Hide";
public string focusTrigger = "Focus";
public string unfocusTrigger = "Unfocus";
protected bool wasInactive = false;
private UIAnimatorMonitor m_animatorMonitor = null;
public UIAnimatorMonitor animatorMonitor
{
get
{
if (m_animatorMonitor == null && spineGameObject != null)
{
m_animatorMonitor = new UIAnimatorMonitor(gameObject);
}
return m_animatorMonitor;
}
}
public virtual void Show(StandardUISubtitlePanel subtitlePanel)
{
if (spineGameObject == null) return;
wasInactive = !spineGameObject.activeSelf;
spineGameObject.SetActive(true);
animatorMonitor.SetTrigger(showTrigger, null, false);
}
public virtual void Hide(StandardUISubtitlePanel subtitlePanel)
{
if (spineGameObject == null) return;
animatorMonitor.SetTrigger(hideTrigger, OnHidden, true);
}
protected void OnHidden()
{
if (wasInactive) spineGameObject.SetActive(false);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 71421582644b3684494794e00460b94a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,138 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace PixelCrushers.DialogueSystem.SpineSupport
{
/// <summary>
/// Add to the Dialogue Manager to be able to use SpineActor() sequencer commands.
/// </summary>
public class SpinePortraitManager : MonoBehaviour
{
private static SpinePortraitManager m_instance = null;
public static SpinePortraitManager instance
{
get
{
if (m_instance == null)
{
m_instance = FindObjectOfType<SpinePortraitManager>() ?? DialogueManager.instance.gameObject.AddComponent<SpinePortraitManager>();
}
return m_instance;
}
}
private Dictionary<SpineDialogueActor, int> actors = new Dictionary<SpineDialogueActor, int>();
private SpineDialogueActor focusedActor = null;
private void OnEnable()
{
DialogueManager.instance.conversationEnded += OnConversationEnded;
}
private void OnDisable()
{
DialogueManager.instance.conversationEnded -= OnConversationEnded;
}
public void ShowSpineActor(SpineDialogueActor spineDialogueActor, int panelIndex)
{
if (spineDialogueActor == null) return;
if (actors.ContainsKey(spineDialogueActor))
{
if (actors[spineDialogueActor] != panelIndex)
{
MoveSpineActorToPanel(spineDialogueActor, panelIndex);
}
}
else
{
actors.Add(spineDialogueActor, panelIndex);
MoveSpineActorToPanel(spineDialogueActor, panelIndex);
SetTrigger(spineDialogueActor, spineDialogueActor.showTrigger);
}
}
public void HideSpineActor(SpineDialogueActor spineDialogueActor)
{
if (spineDialogueActor == null) return;
if (spineDialogueActor == focusedActor) focusedActor = null;
SetTrigger(spineDialogueActor, spineDialogueActor.hideTrigger, false);
}
private void OnConversationLine(Subtitle subtitle)
{
if (string.IsNullOrEmpty(subtitle.formattedText.text)) return;
StartCoroutine(CheckActorAtEndOfFrame(subtitle));
}
private IEnumerator CheckActorAtEndOfFrame(Subtitle subtitle)
{
yield return new WaitForEndOfFrame();
var spineDialogueActor = subtitle.speakerInfo.transform.GetComponent<SpineDialogueActor>();
if (focusedActor == null || focusedActor != spineDialogueActor)
{
if (focusedActor != null)
{
SetTrigger(focusedActor, focusedActor.unfocusTrigger);
}
focusedActor = spineDialogueActor;
if (spineDialogueActor != null)
{
SetTrigger(spineDialogueActor, spineDialogueActor.focusTrigger);
}
}
}
private void OnConversationEnded(Transform conversationActor)
{
foreach (var spineDialogueActor in actors.Keys)
{
SetTrigger(spineDialogueActor, spineDialogueActor.hideTrigger, false);
}
actors.Clear();
focusedActor = null;
}
private void MoveSpineActorToPanel(SpineDialogueActor spineDialogueActor, int panelIndex)
{
if (spineDialogueActor == null) return;
if (spineDialogueActor.spineGameObject == null) return;
var rt = spineDialogueActor.spineGameObject.GetComponent<RectTransform>();
if (rt == null) return;
var panel = GetPanel(panelIndex);
if (panel == null) return;
if (panel.panelState == UIPanel.PanelState.Closed) panel.Open();
var panelRT = panel.GetComponent<RectTransform>();
rt.pivot = panelRT.pivot;
rt.anchoredPosition = panelRT.anchoredPosition;
rt.anchorMax = panelRT.anchorMax;
rt.anchorMin = panelRT.anchorMin;
rt.sizeDelta = panelRT.sizeDelta;
actors[spineDialogueActor] = panelIndex;
}
private StandardUISubtitlePanel GetPanel(int panelIndex)
{
var ui = DialogueManager.dialogueUI as StandardDialogueUI;
if (ui == null) return null;
var numPanels = ui.conversationUIElements.subtitlePanels.Length;
if (!(0 <= panelIndex && panelIndex < numPanels)) return null;
return ui.conversationUIElements.subtitlePanels[panelIndex];
}
private void SetTrigger(SpineDialogueActor spineDialogueActor, string triggerName, bool canvasState = true)
{
if (spineDialogueActor == null) return;
if (spineDialogueActor.spineGameObject == null) return;
var canvas = spineDialogueActor.spineGameObject.GetComponentInParent<Canvas>();
if (canvas == null) return;
canvas.enabled = canvasState;
var animator = canvas.GetComponent<Animator>();
if (animator == null) return;
animator.SetTrigger(triggerName);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 36e955f85cf96b348aa79c520ac5e1cb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@
using UnityEngine;
using System.Collections.Generic;
namespace PixelCrushers.DialogueSystem.SpineSupport
{
/// <summary>
/// This component holds references to Spine AnimationReferenceAssets
/// so the SpineAnimation() sequencer command can access them.
/// </summary>
public class SpineSequencerReferences : MonoBehaviour
{
[HelpBox("Assign a SkeletonAnimation or SkeletonGraphic. Then assign animations that the SpineAnimation() sequencer command can use.", HelpBoxMessageType.None)]
public Spine.Unity.SkeletonAnimation skeletonAnimation;
public Spine.Unity.SkeletonGraphic skeletonGraphic;
public List<Spine.Unity.AnimationReferenceAsset> animationReferenceAssets = new List<Spine.Unity.AnimationReferenceAsset>();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b7e654c011848bd448ffa6958faf0600
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,45 @@
using UnityEngine;
namespace PixelCrushers.DialogueSystem.SpineSupport
{
/// <summary>
/// This subclass of StandardUISubtitlePanel is aware of characters that
/// have SpineDialogueActor components.
/// </summary>
public class SpineSubtitlePanel : StandardUISubtitlePanel
{
private SpineDialogueActor visibleSpineDialogueActor = null;
public override void OpenOnStartConversation(Sprite portraitSprite, string portraitName, DialogueActor dialogueActor)
{
base.OpenOnStartConversation(portraitSprite, portraitName, dialogueActor);
if (dialogueActor != null) ShowSpineDialogueActor(dialogueActor.transform);
}
public override void ShowSubtitle(Subtitle subtitle)
{
base.ShowSubtitle(subtitle);
ShowSpineDialogueActor(subtitle.speakerInfo.transform);
}
public virtual void ShowSpineDialogueActor(Transform actorTransform)
{
if (actorTransform == null) return;
var spineDialogueActor = actorTransform.GetComponent<SpineDialogueActor>();
if (spineDialogueActor != visibleSpineDialogueActor)
{
if (visibleSpineDialogueActor != null) visibleSpineDialogueActor.Hide(this);
if (spineDialogueActor != null) spineDialogueActor.Show(this);
visibleSpineDialogueActor = spineDialogueActor;
}
}
public override void Close()
{
if (visibleSpineDialogueActor != null) visibleSpineDialogueActor.Hide(this);
visibleSpineDialogueActor = null;
base.Close();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a2fec5f72cfd95448ad00d0cc112dffc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -11,6 +11,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Plugins/Pixel Crushers/Common/Documentation/Input_Device_Manager_Manual.pdf
uploadId: 667566
uploadId: 710675

View File

@ -6,6 +6,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Plugins/Pixel Crushers/Common/Documentation/Save_System_Manual.pdf
uploadId: 667566
uploadId: 710675

View File

@ -10,6 +10,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Plugins/Pixel Crushers/Common/Documentation/Text_Table_Manual.pdf
uploadId: 667566
uploadId: 710675

View File

@ -7,6 +7,7 @@ namespace PixelCrushers
{
[CustomEditor(typeof(MessageEvents), true)]
[CanEditMultipleObjects]
public class MessageEventsEditor : Editor
{

View File

@ -10,6 +10,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Plugins/Pixel Crushers/Common/Scripts/Editor/Message System/MessageEventsEditor.cs
uploadId: 667566
uploadId: 710675

View File

@ -10,6 +10,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Plugins/Pixel Crushers/Common/Scripts/Editor/Misc/AssetUtility.cs
uploadId: 667566
uploadId: 710675

View File

@ -10,6 +10,6 @@ AssetOrigin:
serializedVersion: 1
productId: 11672
packageName: Dialogue System for Unity
packageVersion: 2.2.46.1
packageVersion: 2.2.50.1
assetPath: Assets/Plugins/Pixel Crushers/Common/Scripts/Editor/Misc/EditorGUIZoomArea.cs
uploadId: 667566
uploadId: 710675

Some files were not shown because too many files have changed in this diff Show More