/// <summary> /// Take two game objects and figure out the relative scene navigation path between them. /// </summary> /// <returns>The name.</returns> /// <param name="to"> To.</param> /// <param name="from">From.</param> public static string RelativeName(this GameObject to, GameObject from) { var fromName = from.FullName(); var toName = to.FullName(); var fromParts = fromName .NormalizePath() .Split(Path.DirectorySeparatorChar) .ToList(); var toParts = toName .NormalizePath() .Split(Path.DirectorySeparatorChar) .ToList(); while (fromParts.Count > 0 && toParts.Count > 0 && fromParts[0] == toParts[0]) { fromParts.RemoveAt(0); toParts.RemoveAt(0); } var parts = new List <string>(5); foreach (var part in fromParts) { parts.Add(".."); } foreach (var part in toParts) { parts.Add(part); } return(parts.ToArray().Join()); }