- Home /
Best way to change alpha on per object basis. (c#)
I'm creating a GUI pop-up system and each pop-up "flashes" by changing the alpha from 1.0 - 0 - 1.0 over 2 seconds using GUI.color.a, But when 5 of these pop-ups are created it starts to lag the game, Comment out the alpha bit and it doesn't lag the game. I'm doing it like so:
Popup class:
void Update(){
if(fadeIn){
if(alpha < 1.0f) { alpha += Time.deltaTime*2; }
if(alpha > 1f) { fadeIn = false; }
} else {
if(alpha > 0.0f){ alpha -= Time.deltaTime*2; }
if(alpha < 0f){ fadeIn = true; }
}
}
public float GetAlpha(){
return Mathf.Clamp01(alpha);
}
On the popup Overseer:
void OnGUI(){
if(popups.Count > 0){
foreach(GameObject obj in popups){
ScreenPopup popup = obj.GetComponent<ScreenPopup>();
Vector3 screenPoint;
// --- other code in here
Color GUIcol = GUI.color;
GUIcol.a = popup.GetAlpha();
GUI.color = GUIcol;
GUI.DrawTexture(new Rect(screenPoint.x, ( Screen.height - screenPoint.y),30,30), popup.GetTexture());
}
}
}
Anyone know of a better system for this?
If the purpose is just blinking, you can do the same with GUITexture.enabled = false;
, guitexture being whatever you want blinking. GUI.enabled = false;
can do it too, but it will turn off that whole GUI. The blinking effect can be made via using yield.WaitForSeconds(1);
which can call the enabled = false function after 1 sec, consequtively , giving a blinking effect.
Your answer
![](https://koobas.hobune.stream/wayback/20220613121504im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Toggle GuiTexture 1 Answer
Gui Texture Differences 1 Answer
ASPECT RATIO FILTER IN OnGUI? 3 Answers
show guitexture on button click 1 Answer
What am I doing wrong? C# 1 Answer