Unity UI的功能解锁,红点Tips,特效触发的做法思考

首先解锁比较特殊,有明确的行为,80%都是判断角色等级,然后进行按钮灰显或者隐藏的操作。

而特效和Tips没有明确的行为。

主要需要取舍的2点是主动调用还是回调被动调用,被动调用意味着代码会很乱。没有一个统一的入口,但是主动调用需要传Object参数,也很麻烦。

首先我否决了在层级面板绑定的做法,还是传入路径,但是会初始化一下:

public abstract class CBWidget : MonoBehaviour
{
    public abstract void Init(object host);
}

然后所有功能解锁,Tips,特效都是通过这个基类载入进来。然后通过面板的回调来实现各自的触发。

好处:

1.能通过统一的入口找到他们

2.虽然功能解锁有明确行为,比如"需要某某灵魂球才能开启某功能",这样的需求依然是不稳定的

时间: 2024-11-08 01:51:07

Unity UI的功能解锁,红点Tips,特效触发的做法思考的相关文章

关于UI功能解锁,UI特效动画,UI tips的再思考

之前写过一篇这样的文章,但当时的思路可行性太低,最近又想了想pureMVC的消息机制,灵光一闪,似乎可以基于消息去实现三者.当然和PureMVC没多大关系,那个连UML图都相当复杂 首先所有的UI面板通过发送字符串消息来告知,是否触发了解锁检测,tips检测,动画特效.可以理解为这样的接口: AsyncResult SendUIMessage(string message); AsyncResult是我定义的一个类,专门得到异步结果.这样特效动画播放完的异步回调也直接返回了. 而除了特效以外,T

全面理解 Unity UI 系统

[狗刨学习网] 随着 Unity 4.6 发布,新 UI 系统终于与大家见面了. RectTransform Unity UI 系统使用 RectTransform 实现基本的布局和层次控制.RectTransform 继承于 Transform,所以 Transform 的所有特征 RectTransform 同样拥有.在 Transform 基础上,RectTransform 增加了 轴心(pivot).锚点(实际上是用 anchorMin.anchorMax 两个点定义的矩形区域).和 尺

QtQuick桌面应用开发指导 1)关于教程 2)原型和设计 3)实现UI和功能_A

Release1.0 http://qt-project.org/wiki/developer-guides Qt Quick Application Developer Guide for Desktop 这个教程的目的是让你熟悉使用QtQuick构建QML程序的最佳编程实践方法; 先决条件: 对QML有相当的理解, 相关阅读: <qtquick/qtquick-applicationdevelopers.html>; 本教程会涉及QML开发最佳实践的各个方面, 以及在典型的桌面环境下部署应

Unity UI大小动态设置(Resize Unity UI RectTransform)

我们在开发过程中发现,要调整Unity UI元素的大小,RectTransform提供了sizeDelta属性可以用来动态修改RectTransform的大小,但同时我们也google到另外一个修改RectTransform大小的方法,方法如下: 1 public static void SetRectTransformSize(RectTransform trans, Vector2 newSize) 2 { 3 Vector2 oldSize = trans.rect.size; 4 Vec

unity UI事件

由于工作需要到持续按键,所以了解了一下unity UI事件,本文主要转载于http://www.cnblogs.com/zou90512/p/3995932.html?utm_source=tuicool&utm_medium=referral,并对相关问题进行解释. 我们最常用到的就是unity的button组件,其实button组件所响应的事件为unity众多ui事件中的PointerClick事件,unity的ui事件如下图所示: 实现响应事件有以下三种: (一)在相关UI控件上挂脚本,脚

unity UI如何开启(显示)或者关闭(隐藏)Panel界面最好?

https://segmentfault.com/a/1190000012357091 unity UI如何开启(显示)或者关闭(隐藏)Panel界面,相信大家都是知道的,但是如何做最好呢? 可能大家一般开启/关闭界面的方法就是直接SetActive吧.这样做通常是可以的,简答快速地解决需求,但是它又两个问题:第一,Disable掉的物体上面的脚本也不运行了,而很多时候我们需要那个脚本运行.这样就不能用挂在自己身上脚本把自己SetActive(true)或者SetActive(false).如果

unity ui中使用onmouseover

unity ui中鼠标移进或者移出的触发方式与2d.3d的不同,2d.3d物体使用的是onmouseover,ui使用的是OnPointerEnter.需要实现以下两个接口. public class TrackMouse: MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { // Called when the pointer enters our GUI component. // Start tracking the mou

蛋哥的学习笔记之-基于Unity的Shader编程:X-1 音乐水波特效

蛋哥的学习笔记之-基于Unity的Shader编程:X-1 音乐水波特效 热度 13728 2015-7-11 23:34 |个人分类:蛋哥的学习笔记之-基于Unity的Shader编程| 音乐, Unity, Shader, 水波, Shader, Shader, Shader, Shader 一.要干些啥: 很久很久没有写文档了,前段时间做了个个人很喜欢的,自认为比较原创的小特效,所以写个文档纪念下(本人特别喜欢音乐) 思路其实很简单,首先用顶点着色器实现一般的水波特效,然后解析音频数据(我

VivaldiFox扩展:让Firefox获得动态UI颜色功能

在过去数周,一款非常有趣的扩展程序亮相Mozilla的附加组件库,这款名为VivaldiFox的扩展程序为Firefox浏览器添加了动态UI颜色选项.在Vivaldi发布的时候,这项功能使其成为区别现有浏览器的重要体现,这项功能至今没有被其他竞争对手复制. 在Vivaldi浏览器中,当用户访问网站的时候浏览器将会发掘网页的重要配色随后部署在UI顶层和目前选择的标签,这项功能需要一些时间来习惯,但是却帮助Vivaldi有别于其他浏览器,如果用户不想要这个,则可以在Vivaldi的设置面板中进行关闭