Ngui clip Animation

Source: Internet
Author: User
Environment:
Unity 4.5,NGUI3.5,iTween
Preparation:
Create a uipanel, create another uisprite under uipanel, select softclip for uipanel, and then bind panelcontroller. CS to the Panel, similar
  
Maskmanager

Bind panelcontroller. CS to uiroot and targets the four panels created above. Click play and press number keys 0, 1, 2, 3, and 4 to switch the effect.

Effect Preview Video: http://pan.baidu.com/s/1ntr3XSt

using UnityEngine;using System.Collections;using System.Collections.Generic;public class MaskManager : MonoBehaviour {    public GameObject[] Targets;    private List<PanelController> clipList;    private float sw = 1024f;    private float sh = 576f;    // Use this for initialization    void Start () {        clipList = new List<PanelController>();        foreach(var target in Targets) {            clipList.Add(target.AddComponent<PanelController>());        }        Init();    }        // Update is called once per frame    void Update () {        if(Input.GetKeyDown(KeyCode.Alpha1)) {            ShowFullImage(0);        } else if(Input.GetKeyDown(KeyCode.Alpha2)) {            ShowFullImage(1);        } else if(Input.GetKeyDown(KeyCode.Alpha3)) {            ShowFullImage(2);        } else if(Input.GetKeyDown(KeyCode.Alpha4)) {            ShowFullImage(3);        } else if(Input.GetKeyDown(KeyCode.Alpha0)) {            Init();        }    }    void Init() {        for(int i=0; i<clipList.Count; i++) {            var size = new Vector2((sw / clipList.Count), sh);            var offset = new Vector2(-sw * 0.5f + (i + 0.5f) * (sw / clipList.Count), 0f);            clipList[i].UpdateOffset(offset);            clipList[i].UpdateSize(size);        }    }    void ShowFullImage(int id) {        for(int i =0; i<clipList.Count; i++) {            if(i != id) {                clipList[i].SetDepth(i);            } else {                clipList[i].SetDepth(clipList.Count);            }        }        clipList[id].UpdateOffset(new Vector2(0f, 0f));        clipList[id].UpdateSize(new Vector2(sw, sh));    }}
using UnityEngine;using System.Collections;public class PanelController : MonoBehaviour {    private UIPanel panel;    static private float animTime = 0.6f;    void Awake() {        panel = GetComponent<UIPanel>();    }    // Use this for initialization    void Start () {    }    // Update is called once per frame    void Update () {        }    public void SetDepth(int depth) {        panel.depth = depth;    }    public void UpdateSize(Vector2 size) {        var current = new Vector2(panel.baseClipRegion.z, panel.baseClipRegion.w);        iTween.ValueTo(gameObject, iTween.Hash("from", current, "to", size, "time", animTime, "onupdate", "OnUpdateSize"));    }    public void UpdateOffset(Vector2 offset) {        iTween.ValueTo(gameObject, iTween.Hash("from", panel.clipOffset, "to", offset, "time", animTime, "onupdate", "OnUpdateOffset"));    }        private void OnUpdateSize(Vector2 size) {        panel.baseClipRegion = new Vector4(0f, 0f, size.x, size.y);    }    private void OnUpdateOffset(Vector2 offset) {        panel.clipOffset = offset;    }}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.