欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Unity实现跑马灯抽奖效果

程序员文章站 2023-12-11 08:04:40
unity 跑马灯抽奖效果实现代码,供大家参考,具体内容如下 这边用到插件是ngui+dotween,思路简单说下:先排版,通过移动图片蒙版来实现效果。 下面是排版和文...

unity 跑马灯抽奖效果实现代码,供大家参考,具体内容如下

这边用到插件是ngui+dotween,思路简单说下:先排版,通过移动图片蒙版来实现效果。
下面是排版和文件目录。

Unity实现跑马灯抽奖效果

代码部分是通过余数去确认停的位置,boxlist通过unity拖拉加入数据,chooseboxlist直接通过余数判断添加。
代码量很少,稍微看下就明白了。

直接上代码了:

using system;
using system.collections;
using system.collections.generic;
using dg.tweening;
using unityengine;

public class goluckydraw : monobehaviour
{
  private int index = 23;
  //index%12 来判断停在哪个位置
 // use this for initialization
  private uisprite prize1,prize2,prize3,prize4,prize5,prize6,prize7,prize8,prize9,prize10,prize11,prize12, prize13, prize14;
  private uisprite transparentbox;
  public list<transform> boxlist = new list<transform>();
  public list<transform> chooseboxlist = new list<transform>();
  void start () {
    prize1 = gameobject.find("lucky/bg/prize1").getcomponent<uisprite>();
    prize2 = gameobject.find("lucky/bg/prize2").getcomponent<uisprite>();
    prize3 = gameobject.find("lucky/bg/prize3").getcomponent<uisprite>();
    prize4 = gameobject.find("lucky/bg/prize4").getcomponent<uisprite>();
    prize5 = gameobject.find("lucky/bg/prize5").getcomponent<uisprite>();
    prize6 = gameobject.find("lucky/bg/prize6").getcomponent<uisprite>();
    prize7 = gameobject.find("lucky/bg/prize7").getcomponent<uisprite>();
    prize8 = gameobject.find("lucky/bg/prize8").getcomponent<uisprite>();
    prize9 = gameobject.find("lucky/bg/prize9").getcomponent<uisprite>();
    prize10 = gameobject.find("lucky/bg/prize10").getcomponent<uisprite>();
    prize11 = gameobject.find("lucky/bg/prize11").getcomponent<uisprite>();
    prize12 = gameobject.find("lucky/bg/prize12").getcomponent<uisprite>();
    prize13 = gameobject.find("lucky/bg/prize13").getcomponent<uisprite>();
    prize14 = gameobject.find("lucky/bg/prize14").getcomponent<uisprite>();
    transparentbox = gameobject.find("bg/transparentbox").getcomponent<uisprite>();
    transparentbox.gameobject.setactive(false);
    //获取需要监听的按钮对象
    gameobject button = gameobject.find("lucky/bg/start");
    //设置这个按钮的监听,指向本类的buttonclick方法中。
    uieventlistener.get(button).onclick = startluckydraw;

    chooseindex(index);

    // startluckydraw();
   
  }

  ienumerator move( )
  {
    float time;
    
    for (int i = 0; i < boxlist.count; i++)
    {
      time = mathf.lerp(0.04f, 0.05f, 0.05f*i);
      debug.log("---time----="+time);
      transparentbox.transform.dolocalmove(boxlist[i].localposition, time);
      yield return new waitforseconds(0.05f);
    }
    for (int i = 0; i < boxlist.count; i++)
    {
      time = mathf.lerp(0.05f, 0.065f, 0.05f * i);
      debug.log("---time3----=" + time);
      transparentbox.transform.dolocalmove(boxlist[i].localposition, time);
      yield return new waitforseconds(0.05f);
    }
    for (int i = 0; i < boxlist.count; i++)
    {
      time = mathf.lerp(0.065f, 0.08f, 0.05f * i);
      debug.log("---time2----=" + time);
      transparentbox.transform.dolocalmove(boxlist[i].localposition, time);
      yield return new waitforseconds(0.05f);
    }
    for (int i = 0; i < chooseboxlist.count; i++)
    {
      transparentbox.transform.dolocalmove(chooseboxlist[i].localposition,0.1f);
      yield return new waitforseconds(0.1f);
    }
    yield return new waitforseconds(2f);
    transparentbox.gameobject.setactive(false);
  }

  private void chooseindex(int index)
  {
    chooseboxlist.clear();
    for (int i = 0; i < index % 12; i++)
    {
      chooseboxlist.add(boxlist[i]);
    }
  }

  private void startluckydraw(gameobject go)
  {
    transparentbox.gameobject.setactive(true);
    startcoroutine(move());
  }

  void update () {
 
 }
}

代码很糙,大家自己完善吧!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。