public void ApplyScript() { var isScriptValid = false; try { var table = script.script.Globals; var dynValue = new List <DynValue> (); foreach (var key in table.Keys) { var value = table.Get(key); var dataType = value.Type; if (dataType == DataType.String || dataType == DataType.Boolean || dataType == DataType.Number) { dynValue.Add(key); } } foreach (var thing in dynValue) { table.Remove(thing); } script.script.DoString(input.text); errorMessage.SetActive(false); isScriptValid = true; } catch { Debug.LogWarning("Error on script! Will not apply"); errorMessage.SetActive(true); errorMessage.GetComponent <Animator> ().Play("Error Msg Shake"); isScriptValid = false; } if (isScriptValid) { var candidate = script.CreateCopy(); candidate.code = input.text; candidate.properties = ScriptUtility.ExtractProperties(script.script); entity.Script = candidate; eventTable.Invoke <IEntityContainer> ("OnScriptApply", entity); } }