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" }); }
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); } }