private var areaRect:Rect = Rect(0,0,128,256); private var rectList:Hashtable = new Hashtable(); private var contentStartWidth:float; function Start() { contentStartWidth = areaRect.width; } function Update() { areaRect.width -= Time.deltaTime *16.0; if (areaRect.width < 12) { areaRect.width = contentStartWidth; } } function OnGUI() { var rect:Rect; var contentsID:int; var contents:GUIContent; GUILayout.BeginArea(areaRect); GUILayout.BeginVertical(); contentsID = 0; contents = GUIContent("abcdefg"); labelOutline(contentsID, contents); GUILayout.Label(contents); stockLastRect(contentsID); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); contentsID++; contents = GUIContent("hi"); labelOutline(contentsID, contents); GUILayout.Label(contents); stockLastRect(contentsID); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); contentsID++; contents = GUIContent("jklmnopqrstuvwxyz"); labelOutline(contentsID, contents); GUILayout.Label(contents); stockLastRect(contentsID); GUILayout.EndVertical(); GUILayout.EndArea(); } function stockLastRect(id_:int) { if (Event.current.type == EventType.Repaint) { rectList[id_] = GUILayoutUtility.GetLastRect(); } } function labelOutline(rectID_:int, contents_:GUIContent):void { if (!rectList.ContainsKey(rectID_)) {return;} var rect:Rect = rectList[rectID_]; if (rect.width < 0) {return;} var currentColor:Color = GUI.color; GUI.color = Color.red; rect.x--; drawLayoutText(rect, contents_); rect.x += 2; drawLayoutText(rect, contents_); rect.x--; rect.y--; drawLayoutText(rect, contents_); rect.y += 2; drawLayoutText(rect, contents_); GUI.color = currentColor; } private function drawLayoutText(rect_:Rect, contents_:GUIContent) { GUILayout.BeginArea(rect_); GUILayout.Label(contents_); GUILayout.EndArea(); }