public void Setup()
        {
            m_Formatter             = Smart.CreateDefaultSmartFormat();
            m_GlobalVariablesSource = new GlobalVariablesSource(m_Formatter);
            m_Formatter.AddExtensions(m_GlobalVariablesSource);

            m_NestedGroup1 = ScriptableObject.CreateInstance <GlobalVariablesGroup>();
            m_NestedGroup2 = ScriptableObject.CreateInstance <GlobalVariablesGroup>();

            m_Group1 = ScriptableObject.CreateInstance <GlobalVariablesGroup>();
            m_GlobalVariablesSource.Add("global", m_Group1);
            m_Group1.Add("myInt", new IntGlobalVariable {
                Value = 123
            });
            m_Group1.Add("my-Int-var", new IntGlobalVariable());
            m_Group1.Add("apple-count", new IntGlobalVariable {
                Value = 10
            });
            m_Group1.Add("myFloat", new FloatGlobalVariable {
                Value = 1.23f
            });
            m_Group1.Add("some-float-value", new FloatGlobalVariable());
            m_Group1.Add("time", new FloatGlobalVariable {
                Value = 1.234f
            });
            m_Group1.Add("door-state", new BoolGlobalVariable {
                Value = true
            });
            m_Group1.Add("max", new CharacterDetailsNoReflection());

            m_Group2 = ScriptableObject.CreateInstance <GlobalVariablesGroup>();
            m_GlobalVariablesSource.Add("npc", m_Group2);
            m_Group2.Add("emily", new CharacterDetails {
                FirstName = "Emily", Surname = "Kaldwin", Age = 20, Alive = true
            });
            m_Group2.Add("guy", new CharacterDetails {
                FirstName = "Guy", Surname = "Threepwood", Alive = false
            });

            // Nested groups
            m_Group1.Add("nested", new NestedGlobalVariablesGroup {
                Value = m_NestedGroup1
            });
            m_NestedGroup1.Add("further-nested", new NestedGlobalVariablesGroup {
                Value = m_NestedGroup2
            });
            m_NestedGroup1.Add("nested-float", new FloatGlobalVariable {
                Value = 0.12345f
            });
            m_NestedGroup2.Add("my-nested-int", new IntGlobalVariable {
                Value = 1111
            });
            m_NestedGroup2.Add("my-nested-string", new StringGlobalVariable {
                Value = "I am nested deep"
            });
        }
示例#2
0
    public void RandomStats()
    {
        var source      = LocalizationSettings.StringDatabase.SmartFormatter.GetSourceExtension <GlobalVariablesSource>();
        var nestedGroup = source["global-sample"]["player"] as NestedGlobalVariablesGroup;

        // An UpdateScope or using BeginUpdating and EndUpdating can be used to combine multiple changes into a single Update.
        // This prevents unnecessary string refreshes when updating multiple Global Variables.
        using (GlobalVariablesSource.UpdateScope())
        {
            foreach (var name in stats)
            {
                var variable = nestedGroup.Value[name] as IntGlobalVariable;
                variable.Value = Random.Range(0, 10);
            }
        }
    }
        public void Reset_Should_Create_A_New_Instance()
        {
            var globalGrp = new VariablesGroup
            {
                { "theVariable", new StringVariable("val-from-global-source") }
            };

            GlobalVariablesSource.Instance.Add("global", globalGrp);

            var ref1 = GlobalVariablesSource.Instance;

            GlobalVariablesSource.Reset();
            var ref2 = GlobalVariablesSource.Instance;

            Assert.That(!ReferenceEquals(ref1, ref2), "Different references after ResetInstance()");
            Assert.That(ref2.Count, Is.EqualTo(0));
        }
        void Awake()
        {
            // You would normally set this up through the Localization Settings Editor, however
            // we do it here for the sample so that it can work without any changes to the project.

            // Do we have a GlobalVariablesSource in our settings?
            var source = LocalizationSettings.StringDatabase.SmartFormatter.GetSourceExtension <GlobalVariablesSource>();

            if (source == null)
            {
                source = new GlobalVariablesSource(LocalizationSettings.StringDatabase.SmartFormatter);
                LocalizationSettings.StringDatabase.SmartFormatter.AddExtensions(source);
            }

            // Do we have a group called global-sample?
            if (!source.ContainsKey("global-sample"))
            {
                source.Add("global-sample", group);
            }
        }