用NGUI自做点击字(图片形式)输入到框中的效果——一个简单的填字游戏 ...

果图
具体细节,我会在后续补上我的工程文件,方便你的仔细研究,并且方便大家给我提提意见,本菜鸟当然是感激不尽! 
一、简单介绍一下我做的玩意的功能。
如上图,是一个操作的界面。首先,字当然不能一下就出来了,那样太生硬了点。我这边是让字一个接一个的出现的,类似一个字幕一样的!然后,随便点击上面的黑字,按下之后就会变成黄色的,之后就保持这个这个黄色的状态,并且,这个字就不能再按。按下一个字后,字就会自动从相应的字的位置,动画效果移动并且填充到下面的框里面。下面的框会随着点击的字自动依次填充,知道最后一个框被填充。这个时候会有一个判断,是否这四个框的字是我预先设下的。
二、内容
首先当然要有一个NGUI的插,我使用的是NGUI3.4.9版本的,然后就是简单的制作我们的逻辑界面,如图,创建一个UI-Root2D,在里面创建一个panelMyscreen面板容器,下面分别有四个分面板PanelColumn,PanelFailure,PanelPoem,PanelSucceed。其中,PanelFailure和PanelSucceed两个面板逻辑上
内容应该是一样的,都要有一个显示图片的作用,和现实界面出现之后点击确定消失。如图,给这两个面板分别添加一个UITexture脚本
接下来就是下面的四个框框,在PanelColumn面板里面添加四个Sprite,分别命名为如图
最后是PanelPoem,这个面板里面是一个20个字的一首诗。

三、脚本

这里主要用到的脚本出了NGUI自带的脚本之外,还额外使用了一个iTween的脚本,这个脚本主要是实现填充字会有一个从点击的字位置移动到框里面的动画效果。

自己写的脚本就两个,

[code]csharpcode:

01 using UnityEngine;
02 using System.Collections;
03  
04 public class Poem : MonoBehaviour {
05     public GameObject last;
06     bool isFirst;
07     Vector3 startSize=new Vector3();
08     float timeCount;
09     // Use this for initialization
10     void Awake()
11     {
12         startSize=this.gameObject.transform.localScale;
13     }
14     void Start () {
15         TweenAlpha.Begin (this.gameObject,0,0);
16         TweenScale.Begin (this.gameObject,0,new Vector3(0,0,0));
17         isFirst=true;
18     }
19      
20     // Update is called once per frame
21     void Update () {
22  
23         if(isFirst&&last.transform.localScale.x>0||this.gameObject.name.Equals ("imgBtn11"))
24         {
25             timeCount+=Time.deltaTime;
26             if(timeCount>0.3f)
27             {
28                 TweenAlpha.Begin (this.gameObject,0.2f,1);
29                 TweenScale.Begin (this.gameObject,0.2f,startSize);
30                 isFirst=false;
31             }
32         }
33     }
34 }

[code]csharpcode:

001 using UnityEngine;
002 using System.Collections;
003  
004 public class Level02_2NGUIControl : MonoBehaviour {
005     public UIAtlas poem;
006     public UISprite SpriteFour;
007     public UISprite SpriteOne;
008     public UISprite SpriteThree;
009     public UISprite SpriteTwo;
010     public GameObject PanelFailure;
011     public GameObject PanelSucceed;
012     public AudioSource failureSound;
013     public AudioSource succeedSound;
014     Vector3 panelFailureScale=new Vector3();
015     Vector3 paneSucceedScale=new Vector3();
016     void Start()
017     {
018         panelFailureScale=PanelFailure.gameObject.transform.localScale;
019         PanelFailure.gameObject.transform.localScale=new Vector3(0,0,0);
020         paneSucceedScale=PanelSucceed.gameObject.transform.localScale;
021         PanelSucceed.gameObject.transform.localScale=new Vector3(0,0,0);
022     }
023     void Update()
024     {
025  
026     }
027     void SetPanelColumnSprite(string spriteName,Vector3 pos)
028     {
029         if(SpriteOne.atlas==null)
030         {
031             SpriteOne.atlas=poem;
032             SpriteOne.spriteName=spriteName;
033             iTween.MoveFrom (SpriteOne.gameObject,pos,0.3f);
034             //iTween.MoveFrom (SpriteOne.gameObject,iTween.Hash ("x",pos.x,"time",0.3f,"delay",0));
035             return;
036         }
037         else if(SpriteTwo.atlas==null)
038         {
039             SpriteTwo.atlas=poem;
040             SpriteTwo.spriteName=spriteName;
041             iTween.MoveFrom (SpriteTwo.gameObject,pos,0.3f);
042             return;
043         }
044         else if(SpriteThree.atlas==null)
045         {
046             SpriteThree.atlas=poem;
047             SpriteThree.spriteName=spriteName;
048             iTween.MoveFrom (SpriteThree.gameObject,pos,0.3f);
049             return;
050         }
051         else if(SpriteFour.atlas==null)
052         {
053             SpriteFour.atlas=poem;
054             SpriteFour.spriteName=spriteName;
055             iTween.MoveFrom (SpriteFour.gameObject,pos,0.3f);
056             if(SpriteOne.spriteName.Equals ("c1_000001")&&SpriteTwo.spriteName.Equals ("c2_000101")
057                &&SpriteThree.spriteName.Equals ("c3_000201")&&SpriteFour.spriteName.Equals ("c4_000301"))
058             {
059                 TweenScale.Begin (PanelSucceed,0.3f,paneSucceedScale);
060                 succeedSound.Play ();
061             }
062             else
063             {
064                 TweenScale.Begin (PanelFailure,0.3f,panelFailureScale);
065                 failureSound.Play ();
066             }
067         }
068  
069     }
070     void Clear()
071     {
072         SpriteOne.atlas=null;
073         SpriteOne.spriteName=null;
074         SpriteTwo.atlas=null;
075         SpriteTwo.spriteName=null;
076         SpriteThree.atlas=null;
077         SpriteThree.spriteName=null;
078         SpriteFour.atlas=null;
079         SpriteFour.spriteName=null;
080         for(int i=0;i<imgBtn.Length;i++)
081         {
082             if(imgBtn[i]!=null)
083             imgBtn[i].spriteName=imgBtnSpriteName[i];
084             if(imgBtnBoxCollider[i]!=null)
085             imgBtnBoxCollider[i].enabled=true;
086         }
087     }
088     string[] imgBtnSpriteName=new string[20];
089     UISprite[] imgBtn=new UISprite[20];
090     BoxCollider[] imgBtnBoxCollider=new BoxCollider[20];
091     void btnEventLister(int index,string btnName)
092     {
093         Vector3 pos=new Vector3();
094         pos=GameObject.Find (btnName).transform.position;
095         /*动态加载脚本到对象中*/
096         /*TweenAlpha s=GameObject.Find (btnName).AddComponent<TweenAlpha>();
097         s.from=0.7f;
098         s.to=1.0f;
099         s.style=TweenAlpha.Style.PingPong;*/
100         if(imgBtn[index]==null)
101         {
102             imgBtn[index]=GameObject.Find (btnName).GetComponentInChildren<UISprite>();
103             imgBtnSpriteName[index]=imgBtn[index].spriteName.Remove (imgBtn[index].spriteName.Length-1);
104         }
105         string temp=imgBtnSpriteName[index]+"1";
106         SetPanelColumnSprite (temp,pos);
107         if(imgBtnBoxCollider[index]==null)
108         {
109             imgBtnBoxCollider[index]=GameObject.Find (btnName).GetComponent<BoxCollider>();
110         }
111         imgBtnBoxCollider[index].enabled=false;
112     }
113     void imgBtn11nOnClik()
114     {
115         btnEventLister (0,"imgBtn11");
116      
117     }
118     void imgBtn12Onclik()
119     {
120         btnEventLister (1,"imgBtn12");
121     }
122     void imgBtn13Onclik()
123     {
124         btnEventLister (2,"imgBtn13");
125     }
126     void imgBtn14Onclik()
127     {
128         btnEventLister (3,"imgBtn14");
129     }
130     void imgBtn15Onclik()
131     {
132         btnEventLister (4,"imgBtn15");
133     }
134     void imgBtn21Onclik()
135     {
136         btnEventLister (5,"imgBtn21");
137     }
138     void imgBtn22Onclik()
139     {
140         btnEventLister (6,"imgBtn22");
141     }
142     void imgBtn23Onclik()
143     {
144         btnEventLister (7,"imgBtn23");
145     }
146     void imgBtn24Onclik()
147     {
148         btnEventLister (8,"imgBtn24");
149     }
150     void imgBtn25Onclik()
151     {
152         btnEventLister (9,"imgBtn25");
153     }
154     void imgBtn31Onclik()
155     {
156         btnEventLister (10,"imgBtn31");
157     }
158     void imgBtn32Onclik()
159     {
160         btnEventLister (11,"imgBtn32");
161     }
162     void imgBtn33Onclik()
163     {
164         btnEventLister (12,"imgBtn33");
165     }
166     void imgBtn34Onclik()
167     {
168         btnEventLister (13,"imgBtn34");
169     }
170     void imgBtn35Onclik()
171     {
172         btnEventLister (14,"imgBtn35");
173     }
174     void imgBtn41Onclik()
175     {
176         btnEventLister (15,"imgBtn41");
177     }
178     void imgBtn42Onclik()
179     {
180         btnEventLister (16,"imgBtn42");
181     }
182     void imgBtn44Onclik()
183     {
184         btnEventLister (17,"imgBtn44");
185     }
186     void imgBtn43Onclik()
187     {
188         btnEventLister (18,"imgBtn43");
189     }
190     void imgBtn45Onclik()
191     {
192         btnEventLister (19,"imgBtn45");
193     }
194     void imgBtnFailureOnclik()
195     {
196         Clear ();
197         TweenScale.Begin(PanelFailure,0.3f,new Vector3(0,0,0));
198     }
199     void imgBtnSucceedOnclik()
200     {
201  
202     }
203     void  returnMainScreen()
204     {
205  
206  
207     }
208  
209 }
脚本就不讲解了,欢迎大家留言,我尽量让希望从中获取自己想要的效果的同学理解以及大牛们指出的不足之处我都会尽量回复。

工程下载网址 http://pan.baidu.com/s/1hqHt6ks

时间有限,先写到这把,最后给这个网站一个建议,博客没有看到有保持到草稿这个功能,不知是我没有看到还是本来就没有,觉得非常蛋疼就是写到一半,然后不小心关掉了网页,就可能要重新写。


转载自 http://www.unitymanual.com/blog-3579-586.html 博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值