1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- UniGif
- Copyright (c) 2015 WestHillApps (Hironari Nishioka)
- This software is released under the MIT License.
- http://opensource.org/licenses/mit-license.php
- */
- using UnityEngine;
- [ExecuteInEditMode]
- public class UniGifImageAspectController : MonoBehaviour
- {
- public int m_originalWidth;
- public int m_originalHeight;
- public bool m_fixOnUpdate;
- private Vector2 m_lastSize = Vector2.zero;
- private Vector2 m_newSize = Vector2.zero;
- private RectTransform m_rectTransform;
- public RectTransform rectTransform
- {
- get
- {
- return m_rectTransform != null ? m_rectTransform : (m_rectTransform = GetComponent<RectTransform>());
- }
- }
- private void Update()
- {
- #if UNITY_EDITOR
- if (Application.isPlaying == false)
- {
- FixAspectRatio();
- return;
- }
- #endif
- if (m_fixOnUpdate)
- {
- FixAspectRatio();
- }
- }
- public void FixAspectRatio(int originalWidth = -1, int originalHeight = -1)
- {
- bool forceUpdate = false;
- if (originalWidth > 0 && originalHeight > 0)
- {
- m_originalWidth = originalWidth;
- m_originalHeight = originalHeight;
- forceUpdate = true;
- }
- if (m_originalWidth <= 0 || m_originalHeight <= 0)
- {
- return;
- }
- bool changeX;
- if (forceUpdate || m_lastSize.x != rectTransform.sizeDelta.x)
- {
- changeX = true;
- }
- else if (m_lastSize.y != rectTransform.sizeDelta.y)
- {
- changeX = false;
- }
- else
- {
- return;
- }
- if (changeX)
- {
- float ratio = rectTransform.sizeDelta.x / m_originalWidth;
- m_newSize.Set(rectTransform.sizeDelta.x, m_originalHeight * ratio);
- }
- else
- {
- float ratio = rectTransform.sizeDelta.y / m_originalHeight;
- m_newSize.Set(m_originalWidth * ratio, rectTransform.sizeDelta.y);
- }
- rectTransform.sizeDelta = m_newSize;
- m_lastSize = rectTransform.sizeDelta;
- }
- }
|