Tab商城实例

UIToggle 和 UIToggledObjects+ Box Collider(实现商城功能必备)

1.创建两个个UI Sprite,Sprite1和Sprite2

2.给Sprite1和Sprite2都添加UI Toggle组件和UI Toggled Objects组件,设置UI Toggle组件中的Group值一样,归为同一组,这样只能有一个被选择,就像男女只能选一个,再勾选Sprite1的Toggle组件的Starting State,设置为默认的Tab

3.再给Sprite1和Sprite2创建一个Label子节点,使用Unity字体,mysh字模。上面写菜单的名字

4.再给Sprite1和Sprite2添加碰撞器组件NGUI---->Attach---->Collider和按钮效果组件Button offset和Button scale

5.当鼠标经过这两个菜单时,会变大(Button scale),按下去的时候会偏移一小段距离(Button offset)

6.创建两个空节点Content1和Content2下面各带一个UI Label,写上道具Tab和坐骑Tab,再在Content1和Content2下面各带一个UI Sprite当作背景,调节Label的Z序Depth---->Forward,显示在背景前面

7.设置Sprite1的UI Toggled Objects组件里面的Activate属性,Size为1,然后把Content1拖到Element0中,Content2同理关联到Sprite2的UI Toggled Objects组件里面的Activate属性。

8.然后运行就可以看见,当鼠标点击道具时显示道具Tab面板,当鼠标点击坐骑时显示坐骑Tab面板

  

9.给Tab切换增加音效,给Sprite1和Sprite2添加音效组件Play Sound,关联好音效资源到Audio Clip

10.其实它控制的只是Content是否激活,点击其中一个就激活它并隐藏其他的Content

ScrollView滚动视图实例

ScrollView滚动视图,基于UIPanel实现 (实现商城功能必备)

1.创建一个Widget(所有NGUI控件的父类),NGUI---->Create---->Widget,把Sprite1和Sprite2、Content1和Content2一起放在Widget类型的Container节点下

2.再创建一个Widget,下面创建一个Scroll View控件子节点NGUI---->Create---->Scroll View,在Scroll View子节点下面再创建一个Grid控件子节点NGUI---->Create---->Grid,给Scroll View设置一个锚点可以让它和UI Root比例一样大

3.UI Grid是一个自动布局的工具,在Grid节点下再创建几个Sprite子节点,调整Grid的Cell Width和Cell Height可以改变每个Sprite子节点之间的间距

4.给Grid添加一个UI Center On Child组件,让它的孩子节点必须居中显示,有一些商城无论怎么滚动都是居中显示,就是用了这个组件,不会出现下面的拖动到一半道具图片停下来被分成两半的现象

5.给每一个Sprite子节点都加上Box Collider组件NGUI---->Attach---->Collider和Drag Scroll View组件,并且把父节点的父节点Scroll View拖进每个Sprite的Drag Scroll View组件的Scroll View属性中,变得可以拖动

6.再给每一个Sprite子节点都加上UI Center On Click组件,当点击两侧的时候也会跳转到前面一个或者后面一个的Sprite

7.选择Grid节点的UI Grid组件右上角设置的Excute执行脚本,让它帮我们自动排版Sprite

8.可以设置Scroll View节点的大小,来调节显示窗口,Scroll View越大,显示的道具图片越多

Tab商城和ScrollView滚动视图的组合

1.把整个Scroll View节点拖到Tab商城的Content1和Content2下作为子节点,再调整好位置,就可以实现组合效果

2.效果

3.后面可以把一个一个的Sprite做成Button,触发购买,跳出购买弹窗的事件

UI Center On Click组件代码

public class UICenterOnClick : MonoBehaviour
{
void OnClick ()
{
UICenterOnChild center = NGUITools.FindInParents<UICenterOnChild>(gameObject);//从所有父节点中找到UI CenterOnChild组件
UIPanel panel = NGUITools.FindInParents<UIPanel>(gameObject);//从所有父节点中找到UI Panel组件 if (center != null)
{
if (center.enabled)
center.CenterOn(transform);
}
else if (panel != null && panel.clipping != UIDrawCall.Clipping.None)
{
UIScrollView sv = panel.GetComponent<UIScrollView>();
Vector3 offset = -panel.cachedTransform.InverseTransformPoint(transform.position);
if (!sv.canMoveHorizontally) offset.x = panel.cachedTransform.localPosition.x;//在X方向上做一些偏移
if (!sv.canMoveVertically) offset.y = panel.cachedTransform.localPosition.y;//在Y方向上做一些偏移
SpringPanel.Begin(panel.cachedGameObject, offset, 6f);//开始偏移
}
}
}

打字机效果实例

UILabel 和 TypewriterEffect(游戏中的新手引导或人物的对话功能中)

1.创建一个UI Label,NGUI---->Create---->Label

2.添加Typewriter Effect组件,Char Per Second是打字机打字速度,Delay On Period每个周期之间延迟多少,Delay On NewLine每一行字之间延迟多少,Keep Full Dimension保持行的位置不会因为换行而移动。

关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现的更多相关文章

  1. 关于Unity中NGUI的背包实现之Scrollview(基于Camera)

    基于UIPanel的scrollview实现方式在移动设备上的性能不如基于camera的方式.因为UIPanel的scrollview实现方式要渲染很多的道具图,性能自然就降低了.如果是用第二个摄像机 ...

  2. 关于Unity中NGUI图片精灵响应鼠标的方法

    我在Unity里做NGUI的时候发现一个问题. 在Unity2D场景当中,一个精灵图片只要加上了Box Collider或者Box Collider2D,就可以相应OnMouseEnter和OnMou ...

  3. 关于Unity中NGUI的3D角色血条的实现

    首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...

  4. 关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式

    Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节 ...

  5. 关于Unity中NGUI的Pivot和锚点

    Pivot 1.创建一个Sprite类型的Sprite1节点,关联一个图集和一张贴图,用图中的六个按钮调整这个贴图的Pivot点,一共有八个点可以选择 2.再创建一个Sprite类型的Sprite2节 ...

  6. 关于Unity中NGUI的帧动画和Tween动画

    帧动画 1.把三张帧动画的贴图png制作成图集,NGUI---->Open---->Atlas Maker,生成一个预制体,一个材质球,一个大图 2.创建一个Sprite类型的Sprite ...

  7. 通过改变unity中物体的alpha值实现若隐若现的效果

    RawImage logo = mainLogo.transform.FindChild("back/headBack/Logo").GetComponent<RawImag ...

  8. unity3d ppsspp模拟器中的post processing shader在unity中使用

    这个位置可以看到ppsspp的特殊处理文件位置来看看这些特效 用来测试的未加特效图片 ppsspp: 传说系列一生爱---英杰传说 最后的战士 aacolor 是关于饱和度,亮度,对比度,色调的调节, ...

  9. NGUI研究院之在Unity中使用贝塞尔曲线(六)[转]

    鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么MOMO迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是 ...

随机推荐

  1. loj#2076. 「JSOI2016」炸弹攻击 模拟退火

    目录 题目链接 题解 代码 题目链接 loj#2076. 「JSOI2016」炸弹攻击 题解 模拟退火 退火时,由于答案比较小,但是温度比较高 所以在算exp时最好把相差的点数乘以一个常数让选取更差的 ...

  2. Python3练习题系列(10)——项目骨架构建

    目标: 如何创建<项目“骨架”目录> 包含:项目文件布局.自动化测试代码,模组,以及安装脚本. 由于编写一个Python文件可以作为一个模块,一个带__init__.py的目录算一个包. ...

  3. linux VIM 下的语法高亮及自动缩进

    显示行号 set number 自动缩进有两个选项 set autoindent set cindent autoindent 就是自动缩进的意思,当你在输入状态用回车键插入一个新行,或者在 norm ...

  4. Putty的用法

    大致内容罗列如下: ·        最简单的使用,登录 SSH主机 ·        中文乱码的处理 ·        PuTTY常用配置的说明 ·        复制.粘贴 ·        保存 ...

  5. Eclipse中修改包名,提交SVN时报 is out of date,怎么办?

    问题:Eclipse中修改包名,提交SVN时报 is out of date,怎么办?描述: Hi,大家好! 我的问题如题,在不考虑用TortoiseSVN客户端直接删除目录这个方法的情况下,有什么方 ...

  6. React系列文章:无状态组件生成真实DOM结点

    在上一篇文章中,我们总结并模拟了JSX生成真实DOM结点的过程,今天接着来介绍一下无状态组件的生成过程. 先以下面一段简单的代码举例: const Greeting = function ({name ...

  7. linux sar详解

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...

  8. oracle中类似indexof用法_instr函数

    oracle中类似indexof用法_instr函数 [sql] 在oracle中没有indexof()函数 但是提供了一个 instr() 方法 具体用法: select instr('保定市南市区 ...

  9. iptables设置端口转发

    转自:https://blog.csdn.net/sigangjun/article/details/17412821 一 从一台机到另一台机端口转发 启用网卡转发功能 #echo 1 > /p ...

  10. [Android Pro] 关于Android 7.0无法进行https抓包的问题

    cp from  : https://www.cnblogs.com/wytings/p/6954293.html 在App进行数据请求的时候,如果每次都打印log去判断是一件很不“人性化”的操作行为 ...