public static void Display(string vName, Vector3 vector, Vector3 anchorPos, Color color, float vectorSizeMultiplier) { if (!instance) { Debug.LogError("No VectorDisplayService in the scene!"); return; } if (dicoVectorDisplay == null) { dicoVectorDisplay = new Dictionary <string, LogicalVectorDisplay>(); } LogicalVectorDisplay logVectorDisplay; if (!dicoVectorDisplay.TryGetValue(vName, out logVectorDisplay)) { VectorDisplay vectorDisplay = Instantiate(instance.m_VectorDisplayPrefab); vectorDisplay.name = vName + "_VECTOR_DISPLAY"; vectorDisplay.transform.SetParent(instance ? instance.transform : null); logVectorDisplay = new LogicalVectorDisplay(vName, vectorDisplay); dicoVectorDisplay.Add(vName, logVectorDisplay); } logVectorDisplay.Display(vector, anchorPos, color, vectorSizeMultiplier); }
void Update() { if (dicoVectorDisplay != null && dicoVectorDisplay.Count > 0) { List <LogicalVectorDisplay> toBeRemoved = new List <LogicalVectorDisplay>(); foreach (var item in dicoVectorDisplay.Values) { if (Time.frameCount - item.latestDisplayFrame > 1) { toBeRemoved.Add(item); } } for (int i = 0; i < toBeRemoved.Count; i++) { LogicalVectorDisplay vDisplay = toBeRemoved[i]; Destroy(vDisplay.gameObject); dicoVectorDisplay.Remove(vDisplay.name); } } }