- Home /
Making a Gui Texture Continue To Rotate While Loading a Level
I have a rotating gui texture and it works completely, except for whenever the level is loadings (which is when I need it). How can I get a gui texture continue to rotate while the level is loading (I already tried: Application.isLoadingLevel). Here's my code for your convenience (I found this somewhere else [I didn't write it] and slightly modified it to my needs).
EDIT: I have an object that doesn't get deleted when going to another scene, but when I go back to that seen there is a duplicate. I know why this happens but how can I fix it? (It has the same name and everything, so it's pretty confusing).
using UnityEngine;
[ExecuteInEditMode()]
public class RotatableGuiItem : MonoBehaviour
{
public Texture2D texture = null;
public float angle = 0;
public bool spin = true;
public Vector2 size = new Vector2(128, 128);
//this will overwrite the items position
public AlignmentScreenpoint ScreenpointToAlign = AlignmentScreenpoint.TopLeft;
public Vector2 relativePosition = new Vector2(0, 0);
Vector2 pos = new Vector2(0, 0);
Rect rect;
Vector2 pivot;
void Update()
{
if(spin)
{
angle++;
}
}
void Start()
{
UpdateSettings();
}
void UpdateSettings()
{
Vector2 cornerPos = new Vector2(0, 0);
//overwrite the items position
switch (ScreenpointToAlign)
{
case AlignmentScreenpoint.TopLeft:
cornerPos =new Vector2(0, 0);
break;
case AlignmentScreenpoint.TopMiddle:
cornerPos =new Vector2(Screen.width/2, 0);
break;
case AlignmentScreenpoint.TopRight:
cornerPos = new Vector2(Screen.width, 0);
break;
case AlignmentScreenpoint.LeftMiddle:
cornerPos = new Vector2(0, Screen.height / 2);
break;
case AlignmentScreenpoint.RightMiddle:
cornerPos = new Vector2(Screen.width, Screen.height / 2);
break;
case AlignmentScreenpoint.BottomLeft:
cornerPos = new Vector2(0, Screen.height);
break;
case AlignmentScreenpoint.BottomMiddle:
cornerPos = new Vector2(Screen.width/2, Screen.height);
break;
case AlignmentScreenpoint.BottomRight:
cornerPos = new Vector2(Screen.width, Screen.height);
break;
default:
break;
}
pos = cornerPos + relativePosition;
rect = new Rect(pos.x - size.x * 0.5f, pos.y - size.y * 0.5f, size.x, size.y);
pivot = new Vector2(rect.xMin + rect.width * 0.5f, rect.yMin + rect.height * 0.5f);
}
void OnGUI()
{
if (Application.isEditor)
{
UpdateSettings();
spin = true;
}
Matrix4x4 matrixBackup = GUI.matrix;
GUIUtility.RotateAroundPivot(angle, pivot);
GUI.DrawTexture(rect, texture);
GUI.matrix = matrixBackup;
}
public enum AlignmentScreenpoint
{
TopLeft, TopMiddle, TopRight,
LeftMiddle, RightMiddle,
BottomLeft, BottomMiddle, BottomRight
}
}
http://answers.unity3d.com/questions/9516/how-to-speed-up-and-smooth-over-any-load-times-on.html? Script updates apparently die when you call LoadLevel()
, which I assume is when you want this to run.
Answer by Chimera3D · Jun 17, 2012 at 12:19 AM
Okay I made it load another scene so it can load in the background, thanks!
Originally Submitted By Mizuho:
http://answers.unity3d.com/questions/9516/how-to-speed-up-and-smooth-over-any-load-times-on.html? Script updates apparently die when you call LoadLevel(), which I assume is when you want this to run.
Your answer
Follow this Question
Related Questions
disable code when level is rendered 1 Answer
Howt to Replace uGUI with asset bundles 0 Answers
Loading Screen? 6 Answers
PlayerPrefs for saving strings 1 Answer
loading problem 1 Answer