现在我们的游戏已到了开发后期,这个时候需要做新手引导这一块(恶心的新手引导,真想说游戏行业究竟哪个2B最先想出来要引导的???代码搞的到处都是,改了一次又改!)

  吐槽过后进入正题:主要还是UI相关的操作,3D场景操作引导的东西比较少。这一块我们使用的是unilua来做这件事,因为我们还没考虑用完善的热更新方案(比如ulua)来做新手引导,所以使用unilua也能暂时满足需求。

  具体的做法是:新手引导这一块属于一个单独的界面,其中的Panel层次是比较高的(高于被引导的所有其他界面),其中主要的包括两种基本元素:对话窗口与指引点,对话窗口是只要玩家一点击就进入下一步,而指引点是玩家点击指引点(比如1个圆圈UI圈住1个领奖按钮)同时出发指引点的逻辑以及触发相应按钮的逻辑!

  其中比较麻烦的有几点:

  0.指引点的适配问题:比如在不同的分辨率下,箭头都需要指示在对应的按钮旁边!

  1.要点击的指引点需要高亮

  2.其他不被点击的需要不接收点击事件

  3.如果是使用panel来控制高亮区域的点击,那么能否在新手引导完成之后销毁不需要的panel降低drawcall?

  

  流程:

  0.关于适配问题:令指引点(有时旁边也需要显示指引点对应的说明文本)中的所有对象都居于一个称为AnchorObj的对象之下,并且它的大小与要点击的按钮或者可点击区域一样大小,然后这个AnchorObj对象在运行时用NGUI的锚点接口(好像是这个SetAnchor(0, 0, 0, 0),有点忘了)动态设置它与需要被引导点击的按钮关联

  1.我们的新手弹窗的层次结构简化为

  NewbiePopup(1)->Dlg(n) // 新手引导弹窗中包括多个对话窗口

  NewbiePopup(1)->GuidePoint(n) //新手引导弹窗中包括多个指引点

  然后在NewbiePopup C#脚本中是有两个字典的,使用新手步骤字符串作为key分别保存对话窗口和指引点对象,当然了,使用for循环进行单击事件的绑定。这两个字典还有租用:比如需要显示某个对话窗口或者指引点,在lua脚本中往C#层面传入步骤字符串,然后根据字符串名去索引对应的对象,控制其显示状态!

  2.由于新手引导弹窗panel的depth在所有界面之上,且本身是带BoxCollider的,这个BoxCollider的区域是很大的,所以能拦截所有的点击事件;

  每个需要被引导点击的按钮,其上是加了一个panel组件,然后在显示指引点之前会动态将其panel的depth设置得比新手弹窗大,借此可以得到高亮效果!然后在所有新手引导完成之后将对应指引点上的panel组件销毁掉!这样也能降低drawcall(一个panel是一个drawcall)

大致实现思路就是这样,然后具体的步骤,最好还是线性的一路引导下来,比如第50个步骤是引导领奖可以命名为"AwardStep50", 最好带序号且从小到大,然后相邻两个步骤之间有一定间距,比如下一个步骤可以取"Step100",这样如果之后往中间插入若干个步骤也好扩展!另外如果还有交叉或者“并行性”,则要想法设法实现成线性的!

1个月前做的了,一时兴起写的,就不贴具体的代码或者界面层次结构了!经过实际项目考验,如果有什么错误或者更好的想法可以互相交流一下!谢谢

NGUI 新手引导的更多相关文章

  1. NGUI的新手引导的实现

    先声明一下,UNITY新手,如果说的有不对的地方,欢迎各位大神指正. 最近在项目需要实现新手引导,最基础的需求就是需要一个带黑色遮罩的引导UI,类似下图这种: 对,就是这么敷衍的UI,因为是我随手做的 ...

  2. Unity3d 用NGUI制作做新手引导的思路

    一.先看下效果 Prefab结构 二.实现思路: 1.prefab上的Panel层级设置成较高 2.背景由5个UISprite拼接起来的,4个(L,R,U,D)当作遮罩,1个镂空(Hollow)当作点 ...

  3. NGUI利用深度测试实现新手引导遮罩

    实现原理:实际上就是先利用渲染队列渲染,然后再利用ZTest,改变渲染的遮挡关系. PS:Depth Testing:深度测试,也叫深度缓冲.只有最靠近观察者的物体会被绘制.深度即Z,该值越小表示离观 ...

  4. UISprite(NGUI)扩展 图片镂空

    NGUI 版本2.6.3 在做新手引导时,需要高亮特定UI元素,也就是加个黑色蒙板,然后在蒙版上显示这个UI元素,为了简单方便我扩展了下UISprite,来镂空指定空间. 分为2种,矩形和圆镂空,矩形 ...

  5. 【转】发布一个基于NGUI编写的UI框架

    发布一个基于NGUI编写的UI框架 1.加载,显示,隐藏,关闭页面,根据标示获得相应界面实例 2.提供界面显示隐藏动画接口 3.单独界面层级,Collider,背景管理 4.根据存储的导航信息完成界面 ...

  6. 如何简单的实现新手引导之UGUI篇

    一个完整的游戏项目肯定是要做新手引导的,而引导做的好坏可能会影响玩家的留存.那么怎么简单的实现个简有效的引导呢!先不说废话,先看看效果,这是一个基于UGUI做的一个简单的引导! 怎么样,看着是那么回事 ...

  7. 关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现

    Tab商城实例 UIToggle 和 UIToggledObjects+ Box Collider(实现商城功能必备) 1.创建两个个UI Sprite,Sprite1和Sprite2 2.给Spri ...

  8. UE4新手引导入门教程

    请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf

  9. Unity3D新手引导开发手记

    最近开始接手新手引导的开发,记录下这块相关的心得 首先客户端是Unity,在接手前,前面的同学已经初步完成了新手引导框架的搭建,这套框架比较简单,有优点也有缺点,稍后一一点评 我们的新手引导是由一个个 ...

随机推荐

  1. XML Schema命名空间解析

    URI Web中汇集了各种资源.资源可以是具有标识的任何事物, 如文档. 文件. 菜单项. 计算机. 服务等, 甚至可以包括人. 组织和概念[BernersLee 1998].在Web体系结构中, ...

  2. Ubuntu Kylin 14.04-修改IP固定地址

           前言:今天我们办公室的网络不稳定,隔一会时间就断掉,后来请负责网络的同事来处理了一下,说是路由器的有些配置起冲突了,所以他将IP地址做了一些修改,比如:原IP是192.168.0.110 ...

  3. 11,SFDC 管理员篇 - 报表和数据的可视化

    1,Report Builder 1,每一个report type 都有一个 primay object 和多个相关的object 2,Primary object with related obje ...

  4. CSS 单行溢出文本显示省略号...的方法(兼容IE FF)(转)

    http://www.52css.com/article.asp?id=602 ===================================================     html ...

  5. 移动端自动化环境搭建-RIDE的安装

    A.安装依赖 RIDE 是 Robot Framework 测试数据的编辑器.它使测试用例的创建.运行.测试项目的组织可以在图形界面下完成. B.安装过程 下载地址:https://pypi.pyth ...

  6. 转:MyBean的安装

    1.下载MyBean源码包.可以到https://git.oschina.net/ymofen/delphi-framework-MyBean下载Zip压缩包,也可以用Git客户端下载. 2.将框架源 ...

  7. java 在linux环境下写入 syslog 问题研究

    1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...

  8. 考查SQLite 3索引对整数排序的性能影响

    做个实验,想了解SQLite3索引对整数排序的性能影响. 用这个测试表,考查绿色那列: id name date 自增型主键 字符串型,随机生成 整数型 随机生成,范围0到54354354 1 bMz ...

  9. eclipse连接外部tomcat进行debug

    首先,在tomcat/bin目录下找到编辑catalina.bat,在 rem $Id: catalina.bat 1344732 2012-05-31 14:08:02Z kkolinko $rem ...

  10. Solving “Dynamic Web Module 3.0 requires Java 1.6 or newer” in Maven Projects

    不一定是在Maven Projects里才有这种情况,但解决方法是一样的. 转自:http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0 ...