Created
December 11, 2015 18:43
-
-
Save twobob/f951b99470a9bdeabe17 to your computer and use it in GitHub Desktop.
This allow us the position text elements over world objects, With screen overlay, on prefabbed things. Tags are required on the elements to find at runtime.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using System.Collections; | |
using UnityEngine.UI; | |
public class GenerateTextObjectAndPositionDuringRuntime_FOR_PREFABS : MonoBehaviour | |
{ | |
public string CanvasToPopulatesTag; | |
public string TextPrefabTag; | |
private GameObject instantiatedPrefab; | |
private Text textObject; | |
private RectTransform rectReference; | |
public int FontSize; | |
public float LabelVerticalOffset = 0f; | |
public string textToDisplay; | |
bool draw = false; | |
void Awake() | |
{ | |
if (OverlayReferenceHolders.OverlayCanvas == null) | |
{ | |
OverlayReferenceHolders.OverlayCanvas = GameObject.FindGameObjectWithTag(CanvasToPopulatesTag); | |
} | |
// populate from the scene since we are struggling... | |
if (OverlayReferenceHolders.TextPrefab == null) | |
{ | |
OverlayReferenceHolders.TextPrefab = GameObject.FindGameObjectWithTag(TextPrefabTag); | |
} | |
} | |
void Start() | |
{ | |
if (OverlayReferenceHolders.OverlayCanvas == null) | |
{ | |
OverlayReferenceHolders.OverlayCanvas = GameObject.FindGameObjectWithTag(CanvasToPopulatesTag); | |
} | |
// populate from the scene since we are struggling... | |
if (OverlayReferenceHolders.TextPrefab == null) | |
{ | |
OverlayReferenceHolders.TextPrefab = GameObject.FindGameObjectWithTag(TextPrefabTag); | |
} | |
instantiatedPrefab = Instantiate(OverlayReferenceHolders.TextPrefab); | |
textObject = instantiatedPrefab.GetComponent<Text>(); | |
rectReference = OverlayReferenceHolders.OverlayCanvas.GetComponent<RectTransform>(); | |
instantiatedPrefab.transform.SetParent(OverlayReferenceHolders.OverlayCanvas.transform, false); | |
textObject.text = textToDisplay; | |
if (FontSize > 0) | |
{ | |
textObject.fontSize = FontSize; | |
} | |
textObject.enabled = false; | |
draw = false; | |
} | |
void OnBecameInvisible() | |
{ | |
textObject.enabled = false; | |
draw = false; | |
} | |
void OnBecameVisible() | |
{ | |
draw = true; | |
} | |
// Keep it centralised. | |
void Update() | |
{ | |
MoveObject(); | |
} | |
private void MoveObject() | |
{ | |
if (!draw) | |
return; | |
Vector2 pos = WorldToCanvasPosition.ConvertWorldToCanvasPosition(rectReference, Camera.main, transform.position); | |
textObject.rectTransform.position = new Vector3(pos.x, pos.y + LabelVerticalOffset); | |
textObject.enabled = true; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment