private void SharedVariableGUI() { var binding = (SingleTargetedBinding)target; List <string> keys; if (acceptedTypes.Length > 0) { keys = SharedVariableKeys.GetKeys(acceptedTypes); } else { keys = SharedVariableKeys.GetAllKeys(); } var idx = keys.IndexOf(binding.targetVariableName); if (idx == -1) { idx = 0; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("TargetVariable"); var newIdx = EditorGUILayout.Popup(idx, keys.ToArray()); EditorGUILayout.EndHorizontal(); binding.targetVariableName = keys[newIdx]; }
private void OnSharedVariable() { scroll = EditorGUILayout.BeginScrollView(scroll); foreach (var key in SharedVariableKeys.GetAllKeys()) { var prev = selectedVariableNames.Contains(key); var toggle = EditorGUILayout.ToggleLeft(key, prev); if (toggle && prev == false) { selectedVariableNames.Add(key); } else if (toggle == false && prev == true) { selectedVariableNames.Remove(key); } } EditorGUILayout.EndScrollView(); var allObjects = GameObject.FindObjectsOfTypeAll(typeof(GameObject)); var selectedObjects = new List <UnityEngine.Object>(); foreach (GameObject obj in allObjects) { var bindings = obj.GetComponents <SingleTargetedBinding>(); if (bindings.Length == 0) { continue; } foreach (var binding in bindings) { if (binding.subscriptionType == SubscriptionType.SharedVariable && selectedVariableNames.Any(x => x == binding.targetVariableName)) { selectedObjects.Add(obj); break; } } } Selection.objects = selectedObjects.ToArray(); }