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}}