NGUI翻牌

using UnityEngine;
using System.Collections;

public class TweenFlipCARDS : MonoBehaviour
{
    /// <summary> 牌正面 </summary>
    public GameObject positive;
    /// <summary> 牌背面 </summary>
    public GameObject reverse;
    /// <summary> 半圈时间 </summary>
    public float duration = 1;

    float mfTime = 1.0f;
    TweenRotation mPositiveTween;
    TweenRotation mReverseTween;

    void Start()
    {
        mPositiveTween = positive.GetComponent<TweenRotation>();
        if (mPositiveTween == null) mPositiveTween = positive.AddComponent<TweenRotation>();

        mReverseTween = reverse.GetComponent<TweenRotation>();
        if (mReverseTween == null) mReverseTween = reverse.AddComponent<TweenRotation>();
        mPositiveTween.enabled = false;
        mReverseTween.enabled = false;
        reverse.gameObject.transform.localEulerAngles = new Vector3(0, 90, 0);

        //mPositiveTween.onFinished.Add(new EventDelegate(PositiveEventDelegate));
        //mReverseTween.onFinished.Add(new EventDelegate(ReverseEventDelegate));
        //mPositiveTween.callWhenFinished = "PositiveEventDelegate";
        //mReverseTween.callWhenFinished = "ReverseEventDelegate";
        // a是正面,b是反面, 分为4个时间段 1.  a 从0转到90 ,b静止。2.a静止,b 从90-0. 3.a静止,b0-90. 4.a从90-0,b静止。
        StartCoroutine(waitShowReverseTime(mfTime));//显示一定的时间后再翻牌

    }
    IEnumerator waitShowReverseTime(float time)
    {
        yield return new WaitForSeconds(time);
        mPositiveTween.from = Vector3.zero;
        mPositiveTween.to = new Vector3(0, 90, 0);
        mPositiveTween.duration = duration;

        mReverseTween.from = new Vector3(0, 90, 0);
        mReverseTween.to = Vector3.zero;
        mReverseTween.duration = duration;

        UIEventListener listener = UIEventListener.Get(positive.gameObject);
        listener.onClick = ClickUIButton;
        listener = UIEventListener.Get(reverse.gameObject);
        listener.onClick = ClickUIButton;

//        mPositiveTween.onFinished.Add(PositiveEventDelegate);
//        mReverseTween.onFinished = ReverseEventDelegate;
        EventDelegate.Add (mPositiveTween.onFinished, PositiveEventDelegate);
        EventDelegate.Add (mReverseTween.onFinished, ReverseEventDelegate);

        ClickUIButton(positive);
    }
    GameObject mNowDown;
    void ClickUIButton(GameObject click)
    {
        mNowDown = click;
        if (click == positive)
        {
            PlayPositive();

        }
        else if (click == reverse)
        {
            PlayReverse();
        }
    }
    /// <summary>翻牌</summary>
    void PlayPositive()
    {
        mPositiveTween.Play(true);
    }
    /// <summary>复位 </summary>
    void PlayReverse()
    {
        mReverseTween.Play(false);
    }
    /// <summary> 翻牌回调</summary>
    void PositiveEventDelegate()
    {
        if (mNowDown == mPositiveTween.gameObject) mReverseTween.Play(true);
        Debug.Log ("翻牌回调");
    }
    /// <summary> 复位回调 </summary>
    void ReverseEventDelegate()
    {
        if (mNowDown == mReverseTween.gameObject) mPositiveTween.Play(false);
        Debug.Log ("复位回调");
    }
}
时间: 2024-10-12 18:30:43

NGUI翻牌的相关文章

Unity插件之NGUI学习(4)—— 创建UI2DSprite动画

创建一个新的Scene,并按 Unity插件之NGUI学习(2)创建UI Root,并在UI Root的Camera下创建一个Panel. 然后在选中Panel,在菜单中选择NGUI->Create->Unity 2D Sprite 查看Inspector窗口 接着是在Unity中制作Sprite: 在Project窗口创建Textures文件夹,并从外部拖入一些图片素材,然后选中需要转成Sprite的图片,然后在Inspector窗口进行转变Sprite的操作,如图. 选择Sprite(2D

最近一个项目中关于NGUI部分的总结

最近一个项目中关于NGUI部分的总结           在自己最近的一个项目中,软件的界面部分使用了NGUI来进行制作.在制作过程中,遇到了一些问题,也获取了一些经验,总结下来,作为日后的积累. 1.NGUI图集的使用. 此次是第一个自己正儿八经的制作完整图集的项目,感受颇深.在使用NGUI制作界面时,图集的选用是一个关键,因为它直接关系到了drawcall的数量.最好就是自始至终都只使用同一个图集中的元素,这样的话,在界面制作上drawcall的消耗就只会受到Panel的划分以及字体与图集的

NGUI之UIRoot屏幕分辨率自适应

来自:http://blog.csdn.net/oneRain88/article/details/11713299 NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以一个UIRoot为UI游戏对象树的根的,那么这个UIRoot是起什么作用的呢? 先简单看一下UIRoot中的基本属性 UIRoot游戏对象的属性只有4个,分别是缩放规则,手动高度,最小高度和最大高度 而正是这4个属性,将影响整个UI场景中整体的缩放比例,当设置好这4个属性之后,UIRoot游戏对象的相

Unity3D NGUI UIInput制作输入框屏蔽特殊字符(只允许输入正整数)

1.首先看看使用NGUI插件创建一个简单输入文本框效果:. 2.这个简单的输入文本框需要一个label标签作为显示,一个背景图片以及输入UIInput脚本.我们看看unity的输入文本框的节点图 我们需要如下操作创建上图的节点, 接着创建量空的Gameobject节点如图所示并且重新命名为Input和Label名字. 3.绑定对应的脚本,在Input节点上我们添加部件选择UIInput.cs脚本和UISprite.cs脚本以及添加一个矩形碰撞器如图所示: 接下来我们进行UISprite脚本的设置

Unity NGUI实现移动端输入法取认事件响应

NGUI已经实现了事件的监听功能,看下图:On Return Key(选择Snbmit) ,可以直接注册监听事件. 实现如下: 1.搭建一个简单场景 2.新建一个脚本InputTest.cs 挂载在Input物体下,并拖拽赋值Txt_content, input using UnityEngine; //笔者通过集成InputField,在update中监听软件盘的状态捕获到回车事件 public class InputTest : MonoBehaviour {     public UILa

Unity 3D 中NGUI插件设置中文label

1.找到电脑windows文件夹下的fonts文件夹,将选中的字体拖入unity工程. 2.选择NGUI>OPEN>FONTS MAKER 3.选择字体(TYpe根据需要选择静态还是动态.用到的字比较少的话一般使用静态字体,而不是动态字体--静态字体一般非常有限,只有极少数的字,动态字体几乎包含所有字) 4.点击create the font 就会保存一个预设体 5.接下去就可以直接应用了 此时字体就变成了想要的字体

NGUI与EasyTouch结合使用

用了EasyTouch插件一段时间了,小问题还是有一些,总体来说用起来还行.这篇文章我就来说说EasyTouch和NGUI的结合. 总体来说触摸屏幕也就三种情况. 1.触摸事件只响应NGUI部分,不响应3D部分. 2.触摸事件只响应3D部分,不响应NGUI部分. 3.触摸事件同时响应. 举个例子,在战斗场景我们希望通过手指滑动来控制摄像机的旋转.但是这时屏幕上可能还有一些UI的按钮,但是我们不希望用户点击UI按钮也影响到了摄像机的旋转.所以此时我们只希望触摸事件在3D部分响应. 1. 如下图所示

关于Unity中的NGUI和UGUI

用Unity开发2D游戏,有三套关系 1.GUI:Unity本身的对象 2.NGUI:以前在Unity中广泛来做2D的,是第三方的包,需要安装 3.UGUI:Unity5.X后,Unity找到NGUI的作者,开发了UGUI,变成内置于Unity中的包,官方主推 所有的元素都在Unity的UI工具栏 3D做2D游戏的方法: 1: 使用正交摄像机;2: 使用透视摄像机,将2D元素移动到合适的距离. 例如设计分辨率为 960x640, 得到在3D世界里面一个图片的大小w*h米,将这个图片移动到一定的距

Unity中关于NGUI的知识点

UICamera用于处理NGUI中的手势识别(单击.双击.拖拽) **Sprite(精灵)的创建方式:create->Sprite 创建完精灵之后,指定图集(Atlas),然后为Sprite指定图片.Sprite是图集中的一张小图. 特别提醒:千万不要试图通过缩放控件来调整控件的大小,要尽量保证控件的缩放值为Vector.one.通过调整控件的Size值改变大小. **Label 文字标签,用于显示文字.创建方式Creat->Label 需指定NGUI  Font字体 参数说明: Modifi