CangJie/Assets/Plugins/Fungus/Scripts/Utils/GlobalVariables.cs
Roman 787b285227 任务:新建项目 导入必要的插件
1.导入URP
2.配置了URP
3.导入Dotween
4.导入Odin
5.导入了InputSystem
6.设置项目为新旧输入系统并用
7.导入了FunGus
8.创建了一些空文件夹

我是每日提醒上班小助手,今天你上班了吗?😺
2022-03-10 22:49:14 +08:00

65 lines
1.9 KiB
C#

// This code is part of the Fungus library (https://github.com/snozbot/fungus)
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine;
using System.Collections.Generic;
using System;
namespace Fungus
{
/// <summary>
/// Storage for a collection of fungus variables that can then be accessed globally.
/// </summary>
public class GlobalVariables : MonoBehaviour
{
private Flowchart holder;
Dictionary<string, Variable> variables = new Dictionary<string, Variable>();
void Awake()
{
holder = new GameObject("GlobalVariables").AddComponent<Flowchart>();
holder.transform.parent = transform;
}
public Variable GetVariable(string variableKey)
{
Variable v = null;
variables.TryGetValue(variableKey, out v);
return v;
}
public VariableBase<T> GetOrAddVariable<T>(string variableKey, T defaultvalue, Type type)
{
Variable v = null;
VariableBase<T> vAsT = null;
var res = variables.TryGetValue(variableKey, out v);
if(res && v != null)
{
vAsT = v as VariableBase<T>;
if (vAsT != null)
{
return vAsT;
}
else
{
Debug.LogError("A fungus variable of name " + variableKey + " already exists, but of a different type");
}
}
else
{
//create the variable
vAsT = holder.gameObject.AddComponent(type) as VariableBase<T>;
vAsT.Value = defaultvalue;
vAsT.Key = variableKey;
vAsT.Scope = VariableScope.Public;
variables[variableKey] = vAsT;
holder.Variables.Add(vAsT);
}
return vAsT;
}
}
}