How does one reference a UI instance from a prefab?
Believe me when I say I looked into this extensively last night-
I'm quite new to Unity, and I'm currently just going through the process of making a project with what I know and help from the wiki. I use two prefabs in my game, and enemy prefab and a bullet prefab. Basically, when you do hit an enemy I wanted the Score to raise by one. 'Simple enough," I thought.
I went through the spiel of finding out you can't reference an object in the hierarchy to an object not in the hierarchy, to trying to figure out how to reference manually (A lot of searching), to trying to figure out how to use BroadCast message and finding out it's not what I need, and so on.
Believe me when I say, I did spend a bit of time looking into this. Can anyone maybe turn me in the right direction? I got quite frustrated trying to figure this out last night. It should be noted I'm using C# (In case anyone has an example.)
Thanks for any information you can give!
Answer by IgorAherne · Jan 27, 2017 at 11:10 AM
All of the objects you've mentioned would be in the hierarchy by default, so in theory you could use
using UnityEngine.UI;
using System.Linq;
string wantedGameObjectName = "myScoreCounterGameObject";
//find all components which are Text components. This returns an array of components:
Component[] allComponentsOfTypeText = Component.FindObjectsOfType<Text>();
//Select those components where their gameObject's name is "myScoreCounterGameObject"
Text textComponentOfNeededGameObject = allComponentsOfTypeText.Where(compnent=>compnent.gameObject == wantedGameObjectName).FirstOrDefault() as Text; //then select the first from such entities and treat it as Text (since it is text anyway)
myScoreText.text = "blablabla";
just make sure to cache my myScoreText, to only do the above operation if it's null.
You might also want to look into Monobehavior Singleton, which could acquire references of the score counter, etc, so that other objects won't have to do it for themselves. They could just ask the singleton.
Your answer
Follow this Question
Related Questions
UI text script working on an object but not working on copied object 0 Answers
score not increasing and staying at 1 1 Answer
Scoring Points with UI Problem! 0 Answers
multiple score counts UI 0 Answers