// ***********************************************************************
// Assembly : Unity
// Author : Kimch
// Created :
//
// Last Modified By : Kimch
// Last Modified On :
// ***********************************************************************
//
//
// ***********************************************************************
using UnityEngine;
using UnityEngine.UI;
[AddComponentMenu("UGUICustom/KUIImage")]
[RequireComponent(typeof(Image))]
public class KUIImage : MonoBehaviour
{
#region Field
public int framesPerSecond;
public bool loop;
public Sprite[] sprites;
public bool usePolygon;
private int _loopIndex;
private float _loopTime;
private Image _image;
#endregion
#region Property
public Sprite sprite
{
get { return _image.overrideSprite ?? _image.sprite; }
set { _image.overrideSprite = value; }
}
#endregion
#region Method
public void SetDefaultSprite(int index)
{
if (!_image)
{
_image = GetComponent();
}
if (sprites != null && index >= 0 && index < sprites.Length)
{
_image.sprite = sprites[index];
}
}
public void ShowSprite(int index)
{
if (!_image)
{
_image = GetComponent();
}
if (sprites != null && index >= 0 && index < sprites.Length)
{
_image.overrideSprite = sprites[index];
}
else
{
_image.overrideSprite = null;
}
}
public void ShowSprite(string name)
{
if (!_image)
{
_image = GetComponent();
}
if (sprites != null)
{
foreach (var sprite in sprites)
{
if (sprite && name == sprite.name)
_image.overrideSprite = sprite;
}
}
else
{
_image.overrideSprite = null;
}
}
public void ShowRandom()
{
if (sprites != null)
{
_image.overrideSprite = sprites[Random.Range(0, sprites.Length)];
}
}
public void ShowGray(bool gray)
{
if (!_image)
{
_image = GetComponent();
}
_image.material = gray ? Resources.Load("Materials/UIGray") : null;
}
///
/// 剪影
///
///
public void ShowSketch(bool sketch)
{
if (!_image)
{
_image = GetComponent();
}
_image.material = sketch ? Resources.Load("Materials/UISketch") : null;
}
private void Awake()
{
_image = GetComponent();
}
private void Update()
{
if (sprites != null && framesPerSecond > 0)
{
var per = 1f / framesPerSecond;
_loopTime += Time.deltaTime;
if (_loopTime > per)
{
_loopTime -= per;
_loopIndex++;
if (loop || _loopIndex < sprites.Length)
{
_loopIndex %= sprites.Length;
_image.overrideSprite = sprites[_loopIndex];
}
}
}
}
#endregion
}