Unity GUI Rotation

来源:互联网 发布:php use as 编辑:程序博客网 时间:2024/06/02 00:28
From : http://unity3d.qatohost.com/questions/267289/making-a-gui-texture-continue-to-rotate-while-load.html本为c#版可以发为js版,请自力更生 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 positionpublic 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}}

原创粉丝点击