ZMUIL3——层级系统
...
ZMUIL2——遮罩系统
ZMUIL2——遮罩系统 遮罩系统要做的工作 开启单遮模式时,每当调用UIModule来控制UI窗口显示隐藏时, UIModule的遮罩系统都要计算显示的窗口中哪个窗口需要开启遮罩,并隐藏其他窗口的遮罩,以达到单遮的效果 UI配置文件可设定是否开启单遮模式 单遮模式:无论打开多少界面,遮罩只有一层。 叠遮模式:即每一个界面都有一层遮罩,打开的界面越多,遮罩就越黑。 UIModule的遮罩系统相关 配置文件 首先需要配置文件来控制遮罩系统的开关,使用继承ScriptableObject的单例配置文件 1234567891011121314151617181920using UnityEngine;[CreateAssetMenu(fileName = "UISetting", menuName = "UISetting", order = 0)]public class UISetting : ScriptableObject{ private static UISetting instance; ...
ZMUI——UGUI框架ZMUIFrameWork
ZMUI——UGUI框架ZMUIFrameWork ZMUIFrameWork 关于本框架你需要知道的 本框架的每个界面都有各自的Canvas,原因是: Canvas 本身并不占用 DrawCall,Canvas上的UI控件,贴图等才会 Canvas 分离能最大化的减少网格重建带来的性能消耗 将所有的内容都集中到一个Canvas会导致其过于复杂,可能会频繁触发网格重绘,反而降低性能 很少有同屏Canvas会超过五个的情况 推荐阅读:如何把 UGUI...
UFL1-3——安全性问题解决
UFL1-3——安全性问题解决 前置知识点 细节知识点 C#中抽象类的知识点(C#四部曲之C#核心) C#中反射相关知识点(C#四部曲之C#进阶) Unity中Destroy函数(Unity四部曲Unity入门) Unity中特性相关知识(Unity四部曲Unity入门) 唯一性问题——构造函数问题的解决 虽然公共构造函数可能给我们带来破坏唯一性的安全隐患 但是在实际开发中,单例模式是非常基础的知识点,可以说是程序员的必备基础知识 在使用时几乎不会有人马虎到自己去new单例模式对象 因此即使我们不做这些安全性的处理,其实也不会有太大问题,根据实际情况和需求进行设计即可 构造函数带来的唯一性问题 对于不继承MonoBehaviour的单例模式基类:我们要避免在外部 new 单例模式类对象 对于继承MonoBehaviour的单例模式基类:由于继承MonoBehaviour的脚本不能通过new创建,因此不用过多考虑 类似于下面的代码就会出现安全性问题,我们在外部new了一个单例模式的类对象,这破坏了单例模式唯一性: 12TestMgr t = new...
UFL1-2——继承MonoBehaviour的单例模式基类
UFL1-2——继承MonoBehaviour的单例模式基类 继承MonoBehaviour的单例模式对象,建议大家使用自动挂载式的方案,其潜在的安全问题相对较小,制定好规则后可以忽略不计 前置知识点 大体知识体系 C#相关知识点(C#四部曲)、Unity相关知识点(Unity四部曲) 细节知识点 上节课的相关细节知识点 MonoBehaviour相关知识点(Unity四部曲之Unity入门中) 实现继承MonoBehaviour的单例模式基类的注意事项 继承MonoBehaviour的类不可以new()!!! 继承MonoBehaviour的脚本一定得依附在GameObject上!!! 实现挂载式的单例模式基类 这种方式不建议大家使用,因为很容易被破坏单例模式的唯一性,这种单例模式基类存在以下的问题: 可能会手动挂载了多个脚本 切换场景回来时,由于场景放置了挂载脚本的对象,回到该场景时...
UFL1-1——不继承MonoBehaviour的单例模式基类
UFL1-1——不继承MonoBehaviour的单例模式基类 不继承MonoBehaviour的基类 利用泛型相关知识,实现单例模式基类,对于可能存在的安全问题,详见UFL1-3——安全性问题解决 123456789101112131415161718/// <summary>/// 不继承MonoBehaviour的单例模式基类,内部为静态变量和静态属性,单例模式类可以直接继承该类,而无需自行实现单例声明相关内容/// </summary>/// <typeparam name="T">继承该类的类</typeparam>public class BaseManager<T> where T : class, new(){ private static T instance; private static T Instance { get { if (instance == null) ...
UFL1——单例模式基类
UFL1——单例模式基类 前置知识点 大体知识体系 C#相关知识点(C#四部曲) 细节知识点 面向对象(C#四部曲C#核心中) 静态、单例模式相关知识(C#四部曲之C#核心中) 泛型、泛型约束相关知识点(C#四部曲之C#进阶中) 单例模式 一般的单例模式差不多都会写类似于下面的这种形式,区别几乎只在于类名,该模式的特点是 单例模式的类只能有一个实例化对象,由该类的静态私有变量instance装载,外部不能实例化单例模式的类 单例模式类只会在程序启动时,或者第一次调用静态Instance属性时才会自己实例化一个对象, 而静态Instance属性是外部唯一能够调用单例模式唯一类对象的接口 而由于单例模式类的构造函数是私有的,外部无法实例化一个对象,它保证了单例模式类对象是唯一的 单例模式的类可以在外部随时调用该类的Instance属性来调用该类的唯一对象 123456public class GameManager{ private static GameManager instance = new GameManager(); ...
UG4L9-10——进度条
UG4L9-10——进度条 本章代码关键字 1234GProgressBar //进度条控件类gObject.asProgress //将元件类对象as成进度条类对象的属性gProgressBar.value //进度条的当前值gProgressBar.TweenValue() //进度条按照设定时间缓慢到达某个值 进度条 FairyGUI中的进度条的原理很简单 就是按进度改变一个元件的宽度、高度或填充比例 进度条分为两种,横向和纵向的 进度条的本质也是一个组件 在组件中按特定规则添加元件即可制作为进度条 创建进度条控件 自动创建 —— 菜单栏 —> 资源 —> 新建进度条(或者快捷按钮) 标题类型:文本元件显示的内容,表示当前的进度 百分比:50% 当前值/最大值:50/100 当前值:50 最大值:100 反向:从右到左 手动创建 —— 创建组件 —>...