123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System;
- using UnityEngine;
- [RequireComponent(typeof(UISprite))]
- [AddComponentMenu("NGUI/Examples/UI Cursor")]
- public class UICursor : MonoBehaviour
- {
- private void Awake()
- {
- UICursor.instance = this;
- }
- private void OnDestroy()
- {
- UICursor.instance = null;
- }
- private void Start()
- {
- this.mTrans = base.transform;
- this.mSprite = base.GetComponentInChildren<UISprite>();
- if (this.uiCamera == null)
- {
- this.uiCamera = NGUITools.FindCameraForLayer(base.gameObject.layer);
- }
- if (this.mSprite != null)
- {
- this.mAtlas = this.mSprite.atlas;
- this.mSpriteName = this.mSprite.spriteName;
- if (this.mSprite.depth < 100)
- {
- this.mSprite.depth = 100;
- }
- }
- }
- private void Update()
- {
- Vector3 mousePosition = Input.mousePosition;
- if (this.uiCamera != null)
- {
- mousePosition.x = Mathf.Clamp01(mousePosition.x / (float)Screen.width);
- mousePosition.y = Mathf.Clamp01(mousePosition.y / (float)Screen.height);
- this.mTrans.position = this.uiCamera.ViewportToWorldPoint(mousePosition);
- if (this.uiCamera.orthographic)
- {
- Vector3 localPosition = this.mTrans.localPosition;
- localPosition.x = Mathf.Round(localPosition.x);
- localPosition.y = Mathf.Round(localPosition.y);
- this.mTrans.localPosition = localPosition;
- }
- }
- else
- {
- mousePosition.x -= (float)Screen.width * 0.5f;
- mousePosition.y -= (float)Screen.height * 0.5f;
- mousePosition.x = Mathf.Round(mousePosition.x);
- mousePosition.y = Mathf.Round(mousePosition.y);
- this.mTrans.localPosition = mousePosition;
- }
- }
- public static void Clear()
- {
- if (UICursor.instance != null && UICursor.instance.mSprite != null)
- {
- UICursor.Set(UICursor.instance.mAtlas, UICursor.instance.mSpriteName);
- }
- }
- public static void Set(UIAtlas atlas, string sprite)
- {
- if (UICursor.instance != null && UICursor.instance.mSprite)
- {
- UICursor.instance.mSprite.atlas = atlas;
- UICursor.instance.mSprite.spriteName = sprite;
- UICursor.instance.mSprite.MakePixelPerfect();
- UICursor.instance.Update();
- }
- }
- public static UICursor instance;
- public Camera uiCamera;
- private Transform mTrans;
- private UISprite mSprite;
- private UIAtlas mAtlas;
- private string mSpriteName;
- }
|